From 6300989937703718707dd60b5884603f08bfaccb Mon Sep 17 00:00:00 2001 From: Sean Parkinson Date: Wed, 28 Jul 2021 08:46:35 +1000 Subject: [PATCH] SP: Thumb assembly for older Keil compilers and optimize Improve the generated instructions for multiplying 32 bits by 32 bits and squaring 32 bits with 64 bit results. Minimize loads in montgomery reduction, mul and sqr. Pull conditional subtract into montgomery reduction assembly code. Added unrolled square and multiply Define WOLFSSL_SP_LARGE_CODE to use the unrolled versions. --- wolfcrypt/src/sp_arm32.c | 2 +- wolfcrypt/src/sp_arm64.c | 2 +- wolfcrypt/src/sp_armthumb.c | 162088 +++++++++++++++++++++++++++++---- wolfcrypt/src/sp_cortexm.c | 2 +- wolfcrypt/src/sp_int.c | 5 - wolfcrypt/src/sp_x86_64.c | 2 +- 6 files changed, 144290 insertions(+), 17811 deletions(-) diff --git a/wolfcrypt/src/sp_arm32.c b/wolfcrypt/src/sp_arm32.c index be7c0ca97..b26a201c0 100644 --- a/wolfcrypt/src/sp_arm32.c +++ b/wolfcrypt/src/sp_arm32.c @@ -50,7 +50,7 @@ #ifdef WOLFSSL_SP_ARM32_ASM #define SP_PRINT_NUM(var, name, total, words, bits) \ do { \ - int ii \ + int ii; \ fprintf(stderr, name "=0x"); \ for (ii = words - 1; ii >= 0; ii--) \ fprintf(stderr, SP_PRINT_FMT, (var)[ii]); \ diff --git a/wolfcrypt/src/sp_arm64.c b/wolfcrypt/src/sp_arm64.c index e4f56cce0..46afe9185 100644 --- a/wolfcrypt/src/sp_arm64.c +++ b/wolfcrypt/src/sp_arm64.c @@ -50,7 +50,7 @@ #ifdef WOLFSSL_SP_ARM64_ASM #define SP_PRINT_NUM(var, name, total, words, bits) \ do { \ - int ii \ + int ii; \ fprintf(stderr, name "=0x"); \ for (ii = words - 1; ii >= 0; ii--) \ fprintf(stderr, SP_PRINT_FMT, (var)[ii]); \ diff --git a/wolfcrypt/src/sp_armthumb.c b/wolfcrypt/src/sp_armthumb.c index 58046a1d6..53ab4df62 100644 --- a/wolfcrypt/src/sp_armthumb.c +++ b/wolfcrypt/src/sp_armthumb.c @@ -50,7 +50,7 @@ #ifdef WOLFSSL_SP_ARM_THUMB_ASM #define SP_PRINT_NUM(var, name, total, words, bits) \ do { \ - int ii \ + int ii; \ fprintf(stderr, name "=0x"); \ for (ii = words - 1; ii >= 0; ii--) \ fprintf(stderr, SP_PRINT_FMT, (var)[ii]); \ @@ -236,6 +236,7 @@ static void sp_2048_to_bin_64(sp_digit* r, byte* a) #define sp_2048_norm_64(a) #ifndef WOLFSSL_SP_SMALL +#ifndef WOLFSSL_SP_LARGE_CODE /* Multiply a and b into r. (r = a * b) * * r A single precision integer. @@ -258,33 +259,37 @@ SP_NOINLINE static void sp_2048_mul_8(sp_digit* r, const sp_digit* a, "add r6, r6, r9\n\t" "mov r12, r6\n\t" "\n" - "L_sp_2048_mul_8_words_%=: \n\t" + "L_sp_2048_mul_8_words_%=:\n\t" "movs %[tmp], #0\n\t" "movs r5, #0\n\t" "movs r6, #28\n\t" "mov %[a], r8\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[a], %[a], r6\n\t" #else "sub %[a], %[a], r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r6\n\t" +#elif defined(__clang__) "sbcs r6, r6\n\t" #else "sbc r6, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "mvns r6, r6\n\t" #else "mvn r6, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands %[a], %[a], r6\n\t" +#elif defined(__clang__) "ands %[a], r6\n\t" #else "and %[a], r6\n\t" #endif "mov %[b], r8\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[b], %[b], %[a]\n\t" #else "sub %[b], %[b], %[a]\n\t" @@ -292,161 +297,153 @@ SP_NOINLINE static void sp_2048_mul_8(sp_digit* r, const sp_digit* a, "add %[a], %[a], r9\n\t" "add %[b], %[b], r10\n\t" "\n" - "L_sp_2048_mul_8_mul_%=: \n\t" + "L_sp_2048_mul_8_mul_%=:\n\t" "# Multiply Start\n\t" - "ldr r6, [%[a]]\n\t" - "ldr r7, [%[b]]\n\t" -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsls r7, r7, #16\n\t" -#else - "lsl r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ + "ldrh r6, [%[a]]\n\t" + "ldrh r7, [%[b]]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) "muls r7, r6\n\t" #else "mul r7, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r7\n\t" #else "add r3, r3, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[tmp]\n\t" +#elif defined(__clang__) "adcs r4, %[tmp]\n\t" #else "adc r4, %[tmp]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[tmp]\n\t" +#elif defined(__clang__) "adcs r5, %[tmp]\n\t" #else "adc r5, %[tmp]\n\t" #endif "ldr r7, [%[b]]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r7, #16\n\t" #else "lsr r7, r7, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) "muls r6, r7\n\t" #else "mul r6, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r6, #16\n\t" #else "lsr r7, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #16\n\t" #else "lsl r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[tmp]\n\t" +#elif defined(__clang__) "adcs r5, %[tmp]\n\t" #else "adc r5, %[tmp]\n\t" #endif "ldr r6, [%[a]]\n\t" "ldr r7, [%[b]]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, #16\n\t" #else "lsr r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r7, #16\n\t" #else "lsr r7, r7, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) "muls r7, r6\n\t" #else "mul r7, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, r7\n\t" #else "add r4, r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[tmp]\n\t" +#elif defined(__clang__) "adcs r5, %[tmp]\n\t" #else "adc r5, %[tmp]\n\t" #endif - "ldr r7, [%[b]]\n\t" -#ifdef __clang__ - "lsls r7, r7, #16\n\t" -#else - "lsl r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ + "ldrh r7, [%[b]]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) "muls r6, r7\n\t" #else "mul r6, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r6, #16\n\t" #else "lsr r7, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #16\n\t" #else "lsl r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[tmp]\n\t" +#elif defined(__clang__) "adcs r5, %[tmp]\n\t" #else "adc r5, %[tmp]\n\t" #endif "# Multiply Done\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[a], %[a], #4\n\t" #else "add %[a], %[a], #4\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[b], %[b], #4\n\t" #else "sub %[b], %[b], #4\n\t" @@ -458,13 +455,13 @@ SP_NOINLINE static void sp_2048_mul_8(sp_digit* r, const sp_digit* a, "cmp %[a], r6\n\t" "ble L_sp_2048_mul_8_mul_%=\n\t" "\n" - "L_sp_2048_mul_8_done_mul_%=: \n\t" + "L_sp_2048_mul_8_done_mul_%=:\n\t" "mov %[tmp], r11\n\t" "mov r7, r8\n\t" "str r3, [%[tmp], r7]\n\t" "movs r3, r4\n\t" "movs r4, r5\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r7, r7, #4\n\t" #else "add r7, r7, #4\n\t" @@ -484,6 +481,8962 @@ SP_NOINLINE static void sp_2048_mul_8(sp_digit* r, const sp_digit* a, XMEMCPY(r, t, sizeof(t)); } +#else +/* Multiply a and b into r. (r = a * b) + * + * r A single precision integer. + * a A single precision integer. + * b A single precision integer. + */ +SP_NOINLINE static void sp_2048_mul_8(sp_digit* r, const sp_digit* a, + const sp_digit* b) +{ + __asm__ __volatile__ ( + "sub sp, sp, #32\n\t" + "mov r8, %[r]\n\t" + "mov r9, %[a]\n\t" + "mov r10, %[b]\n\t" + "movs %[r], #0\n\t" + "# A[0] * B[0]\n\t" + "ldr %[a], [%[a]]\n\t" + "ldr %[b], [%[b]]\n\t" + "uxth r6, %[a]\n\t" + "uxth r3, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r3, r6, r3\n\t" +#elif defined(__clang__) + "muls r3, r6\n\t" +#else + "mul r3, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r4, r6, #16\n\t" +#else + "lsr r4, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif + "movs r5, #0\n\t" + "str r3, [sp]\n\t" + "# A[0] * B[1]\n\t" + "movs r3, #0\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a]]\n\t" + "ldr %[b], [%[b], #4]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[1] * B[0]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #4]\n\t" + "ldr %[b], [%[b]]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "str r4, [sp, #4]\n\t" + "# A[2] * B[0]\n\t" + "movs r4, #0\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #8]\n\t" + "ldr %[b], [%[b]]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[1] * B[1]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #4]\n\t" + "ldr %[b], [%[b], #4]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[0] * B[2]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a]]\n\t" + "ldr %[b], [%[b], #8]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "str r5, [sp, #8]\n\t" + "# A[0] * B[3]\n\t" + "movs r5, #0\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a]]\n\t" + "ldr %[b], [%[b], #12]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[1] * B[2]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #4]\n\t" + "ldr %[b], [%[b], #8]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[2] * B[1]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #8]\n\t" + "ldr %[b], [%[b], #4]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[3] * B[0]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #12]\n\t" + "ldr %[b], [%[b]]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "str r3, [sp, #12]\n\t" + "# A[4] * B[0]\n\t" + "movs r3, #0\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #16]\n\t" + "ldr %[b], [%[b]]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[3] * B[1]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #12]\n\t" + "ldr %[b], [%[b], #4]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[2] * B[2]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #8]\n\t" + "ldr %[b], [%[b], #8]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[1] * B[3]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #4]\n\t" + "ldr %[b], [%[b], #12]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[0] * B[4]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a]]\n\t" + "ldr %[b], [%[b], #16]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "str r4, [sp, #16]\n\t" + "# A[0] * B[5]\n\t" + "movs r4, #0\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a]]\n\t" + "ldr %[b], [%[b], #20]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[1] * B[4]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #4]\n\t" + "ldr %[b], [%[b], #16]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[2] * B[3]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #8]\n\t" + "ldr %[b], [%[b], #12]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[3] * B[2]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #12]\n\t" + "ldr %[b], [%[b], #8]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[4] * B[1]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #16]\n\t" + "ldr %[b], [%[b], #4]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[5] * B[0]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #20]\n\t" + "ldr %[b], [%[b]]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "str r5, [sp, #20]\n\t" + "# A[6] * B[0]\n\t" + "movs r5, #0\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #24]\n\t" + "ldr %[b], [%[b]]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[5] * B[1]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #20]\n\t" + "ldr %[b], [%[b], #4]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[4] * B[2]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #16]\n\t" + "ldr %[b], [%[b], #8]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[3] * B[3]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #12]\n\t" + "ldr %[b], [%[b], #12]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[2] * B[4]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #8]\n\t" + "ldr %[b], [%[b], #16]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[1] * B[5]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #4]\n\t" + "ldr %[b], [%[b], #20]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[0] * B[6]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a]]\n\t" + "ldr %[b], [%[b], #24]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "str r3, [sp, #24]\n\t" + "# A[0] * B[7]\n\t" + "movs r3, #0\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a]]\n\t" + "ldr %[b], [%[b], #28]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[1] * B[6]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #4]\n\t" + "ldr %[b], [%[b], #24]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[2] * B[5]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #8]\n\t" + "ldr %[b], [%[b], #20]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[3] * B[4]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #12]\n\t" + "ldr %[b], [%[b], #16]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[4] * B[3]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #16]\n\t" + "ldr %[b], [%[b], #12]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[5] * B[2]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #20]\n\t" + "ldr %[b], [%[b], #8]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[6] * B[1]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #24]\n\t" + "ldr %[b], [%[b], #4]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[7] * B[0]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #28]\n\t" + "ldr %[b], [%[b]]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "str r4, [sp, #28]\n\t" + "# A[7] * B[1]\n\t" + "movs r4, #0\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #28]\n\t" + "ldr %[b], [%[b], #4]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[6] * B[2]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #24]\n\t" + "ldr %[b], [%[b], #8]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[5] * B[3]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #20]\n\t" + "ldr %[b], [%[b], #12]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[4] * B[4]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #16]\n\t" + "ldr %[b], [%[b], #16]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[3] * B[5]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #12]\n\t" + "ldr %[b], [%[b], #20]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[2] * B[6]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #8]\n\t" + "ldr %[b], [%[b], #24]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[1] * B[7]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #4]\n\t" + "ldr %[b], [%[b], #28]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "mov %[r], r8\n\t" + "str r5, [%[r], #32]\n\t" + "movs %[r], #0\n\t" + "# A[2] * B[7]\n\t" + "movs r5, #0\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #8]\n\t" + "ldr %[b], [%[b], #28]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[3] * B[6]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #12]\n\t" + "ldr %[b], [%[b], #24]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[4] * B[5]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #16]\n\t" + "ldr %[b], [%[b], #20]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[5] * B[4]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #20]\n\t" + "ldr %[b], [%[b], #16]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[6] * B[3]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #24]\n\t" + "ldr %[b], [%[b], #12]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[7] * B[2]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #28]\n\t" + "ldr %[b], [%[b], #8]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "mov %[r], r8\n\t" + "str r3, [%[r], #36]\n\t" + "movs %[r], #0\n\t" + "# A[7] * B[3]\n\t" + "movs r3, #0\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #28]\n\t" + "ldr %[b], [%[b], #12]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[6] * B[4]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #24]\n\t" + "ldr %[b], [%[b], #16]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[5] * B[5]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #20]\n\t" + "ldr %[b], [%[b], #20]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[4] * B[6]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #16]\n\t" + "ldr %[b], [%[b], #24]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[3] * B[7]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #12]\n\t" + "ldr %[b], [%[b], #28]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "mov %[r], r8\n\t" + "str r4, [%[r], #40]\n\t" + "movs %[r], #0\n\t" + "# A[4] * B[7]\n\t" + "movs r4, #0\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #16]\n\t" + "ldr %[b], [%[b], #28]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[5] * B[6]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #20]\n\t" + "ldr %[b], [%[b], #24]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[6] * B[5]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #24]\n\t" + "ldr %[b], [%[b], #20]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[7] * B[4]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #28]\n\t" + "ldr %[b], [%[b], #16]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "mov %[r], r8\n\t" + "str r5, [%[r], #44]\n\t" + "movs %[r], #0\n\t" + "# A[7] * B[5]\n\t" + "movs r5, #0\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #28]\n\t" + "ldr %[b], [%[b], #20]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[6] * B[6]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #24]\n\t" + "ldr %[b], [%[b], #24]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[5] * B[7]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #20]\n\t" + "ldr %[b], [%[b], #28]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "mov %[r], r8\n\t" + "str r3, [%[r], #48]\n\t" + "movs %[r], #0\n\t" + "# A[6] * B[7]\n\t" + "movs r3, #0\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #24]\n\t" + "ldr %[b], [%[b], #28]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[7] * B[6]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #28]\n\t" + "ldr %[b], [%[b], #24]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "mov %[r], r8\n\t" + "str r4, [%[r], #52]\n\t" + "movs %[r], #0\n\t" + "# A[7] * B[7]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #28]\n\t" + "ldr %[b], [%[b], #28]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif + "mov %[r], r8\n\t" + "str r5, [%[r], #56]\n\t" + "str r3, [%[r], #60]\n\t" + "pop {r3, r4, r5, r6}\n\t" + "stm %[r]!, {r3, r4, r5, r6}\n\t" + "pop {r3, r4, r5, r6}\n\t" + "stm %[r]!, {r3, r4, r5, r6}\n\t" + : [r] "+r" (r), [a] "+r" (a), [b] "+r" (b) + : + : "memory", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10" + ); +} + +#endif /* !WOLFSSL_SP_LARGE_CODE */ +#ifndef WOLFSSL_SP_LARGE_CODE /* Square a and put result in r. (r = a * a) * * r A single precision integer. @@ -498,7 +9451,7 @@ SP_NOINLINE static void sp_2048_sqr_8(sp_digit* r, const sp_digit* a) "mov r8, r3\n\t" "mov r11, %[r]\n\t" "movs r6, #0x40\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "negs r6, r6\n\t" #else "neg r6, r6\n\t" @@ -507,32 +9460,36 @@ SP_NOINLINE static void sp_2048_sqr_8(sp_digit* r, const sp_digit* a) "mov r10, sp\n\t" "mov r9, %[a]\n\t" "\n" - "L_sp_2048_sqr_8_words_%=: \n\t" + "L_sp_2048_sqr_8_words_%=:\n\t" "movs %[r], #0\n\t" "movs r6, #28\n\t" "mov %[a], r8\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[a], %[a], r6\n\t" #else "sub %[a], %[a], r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r6\n\t" +#elif defined(__clang__) "sbcs r6, r6\n\t" #else "sbc r6, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "mvns r6, r6\n\t" #else "mvn r6, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands %[a], %[a], r6\n\t" +#elif defined(__clang__) "ands %[a], r6\n\t" #else "and %[a], r6\n\t" #endif "mov r2, r8\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r2, r2, %[a]\n\t" #else "sub r2, r2, %[a]\n\t" @@ -540,207 +9497,213 @@ SP_NOINLINE static void sp_2048_sqr_8(sp_digit* r, const sp_digit* a) "add %[a], %[a], r9\n\t" "add r2, r2, r9\n\t" "\n" - "L_sp_2048_sqr_8_mul_%=: \n\t" + "L_sp_2048_sqr_8_mul_%=:\n\t" "cmp r2, %[a]\n\t" "beq L_sp_2048_sqr_8_sqr_%=\n\t" "# Multiply * 2: Start\n\t" - "ldr r6, [%[a]]\n\t" - "ldr r7, [r2]\n\t" -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsls r7, r7, #16\n\t" -#else - "lsl r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ + "ldrh r6, [%[a]]\n\t" + "ldrh r7, [r2]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) "muls r7, r6\n\t" #else "mul r7, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r7\n\t" #else "add r3, r3, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) "adcs r4, %[r]\n\t" #else "adc r4, %[r]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r7\n\t" #else "add r3, r3, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) "adcs r4, %[r]\n\t" #else "adc r4, %[r]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif "ldr r7, [r2]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r7, #16\n\t" #else "lsr r7, r7, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) "muls r6, r7\n\t" #else "mul r6, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r6, #16\n\t" #else "lsr r7, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #16\n\t" #else "lsl r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif "ldr r6, [%[a]]\n\t" "ldr r7, [r2]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, #16\n\t" #else "lsr r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r7, #16\n\t" #else "lsr r7, r7, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) "muls r7, r6\n\t" #else "mul r7, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, r7\n\t" #else "add r4, r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, r7\n\t" #else "add r4, r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif - "ldr r7, [r2]\n\t" -#ifdef __clang__ - "lsls r7, r7, #16\n\t" -#else - "lsl r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ + "ldrh r7, [r2]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) "muls r6, r7\n\t" #else "mul r6, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r6, #16\n\t" #else "lsr r7, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #16\n\t" #else "lsl r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" @@ -748,114 +9711,101 @@ SP_NOINLINE static void sp_2048_sqr_8(sp_digit* r, const sp_digit* a) "# Multiply * 2: Done\n\t" "bal L_sp_2048_sqr_8_done_sqr_%=\n\t" "\n" - "L_sp_2048_sqr_8_sqr_%=: \n\t" + "L_sp_2048_sqr_8_sqr_%=:\n\t" + "mov r12, r2\n\t" + "ldr r2, [%[a]]\n\t" "# Square: Start\n\t" - "ldr r6, [%[a]]\n\t" -#ifdef __clang__ - "lsrs r7, r6, #16\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r2, #16\n\t" #else - "lsr r7, r6, #16\n\t" + "lsr r7, r2, #16\n\t" #endif -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ + "uxth r6, r2\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r6, r6\n\t" +#elif defined(__clang__) "muls r6, r6\n\t" #else "mul r6, r6\n\t" #endif -#ifdef __clang__ - "adds r3, r3, r6\n\t" -#else - "add r3, r3, r6\n\t" -#endif -#ifdef __clang__ - "adcs r4, %[r]\n\t" -#else - "adc r4, %[r]\n\t" -#endif -#ifdef __clang__ - "adcs r5, %[r]\n\t" -#else - "adc r5, %[r]\n\t" -#endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r7, r7, r7\n\t" +#elif defined(__clang__) "muls r7, r7\n\t" #else "mul r7, r7\n\t" #endif -#ifdef __clang__ - "adds r4, r4, r7\n\t" -#else - "add r4, r4, r7\n\t" -#endif -#ifdef __clang__ - "adcs r5, %[r]\n\t" -#else - "adc r5, %[r]\n\t" -#endif - "ldr r6, [%[a]]\n\t" -#ifdef __clang__ - "lsrs r7, r6, #16\n\t" -#else - "lsr r7, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "muls r6, r7\n\t" -#else - "mul r6, r7\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r6, #15\n\t" -#else - "lsr r7, r6, #15\n\t" -#endif -#ifdef __clang__ - "lsls r6, r6, #17\n\t" -#else - "lsl r6, r6, #17\n\t" -#endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r2, #16\n\t" +#else + "lsr r7, r2, #16\n\t" +#endif + "uxth r6, r2\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #15\n\t" +#else + "lsr r7, r6, #15\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #17\n\t" +#else + "lsl r6, r6, #17\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif "# Square: Done\n\t" + "mov r2, r12\n\t" "\n" - "L_sp_2048_sqr_8_done_sqr_%=: \n\t" -#ifdef __clang__ + "L_sp_2048_sqr_8_done_sqr_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[a], %[a], #4\n\t" #else "add %[a], %[a], #4\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r2, r2, #4\n\t" #else "sub r2, r2, #4\n\t" @@ -871,14 +9821,14 @@ SP_NOINLINE static void sp_2048_sqr_8(sp_digit* r, const sp_digit* a) "cmp %[a], r7\n\t" "ble L_sp_2048_sqr_8_mul_%=\n\t" "\n" - "L_sp_2048_sqr_8_done_mul_%=: \n\t" + "L_sp_2048_sqr_8_done_mul_%=:\n\t" "mov %[r], r10\n\t" "mov r7, r8\n\t" "str r3, [%[r], r7]\n\t" "movs r3, r4\n\t" "movs r4, r5\n\t" "movs r5, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r7, r7, #4\n\t" #else "add r7, r7, #4\n\t" @@ -893,10 +9843,10 @@ SP_NOINLINE static void sp_2048_sqr_8(sp_digit* r, const sp_digit* a) "mov %[a], r10\n\t" "movs r3, #60\n\t" "\n" - "L_sp_2048_sqr_8_store_%=: \n\t" + "L_sp_2048_sqr_8_store_%=:\n\t" "ldr r6, [%[a], r3]\n\t" "str r6, [%[r], r3]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r3, r3, #4\n\t" #else "sub r3, r3, #4\n\t" @@ -906,10 +9856,6526 @@ SP_NOINLINE static void sp_2048_sqr_8(sp_digit* r, const sp_digit* a) "add sp, sp, r6\n\t" : [r] "+r" (r), [a] "+r" (a) : - : "memory", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11" + : "memory", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12" ); } +#else +/* Square a and put result in r. (r = a * a) + * + * r A single precision integer. + * a A single precision integer. + */ +SP_NOINLINE static void sp_2048_sqr_8(sp_digit* r, const sp_digit* a) +{ + __asm__ __volatile__ ( + "sub sp, sp, #32\n\t" + "mov r8, %[r]\n\t" + "mov r9, %[a]\n\t" + "movs %[r], #0\n\t" + "ldm %[a]!, {r2, r3, r4, r5}\n\t" + "mov r10, r2\n\t" + "mov r11, r3\n\t" + "mov r12, r4\n\t" + "mov lr, r5\n\t" + "mov %[a], r9\n\t" + "# A[0] * A[0]\n\t" + "movs r4, #0\n\t" + "mov r7, r10\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" + "movs r2, r5\n\t" + "movs r3, r6\n\t" +#ifdef WOLFSSL_KEIL + "muls r2, r2, r2\n\t" +#elif defined(__clang__) + "muls r2, r2\n\t" +#else + "mul r2, r2\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r3, r3, r3\n\t" +#elif defined(__clang__) + "muls r3, r3\n\t" +#else + "mul r3, r3\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #15\n\t" +#else + "lsr r6, r5, #15\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #17\n\t" +#else + "lsl r5, r5, #17\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif + "str r2, [sp]\n\t" + "# A[1] * A[0]\n\t" + "movs r2, #0\n\t" + "mov %[a], r11\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "str r3, [sp, #4]\n\t" + "# A[2] * A[0]\n\t" + "movs r3, #0\n\t" + "mov %[a], r9\n\t" + "mov %[a], r12\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[1] * A[1]\n\t" + "mov r7, r11\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r5, r5\n\t" +#elif defined(__clang__) + "muls r5, r5\n\t" +#else + "mul r5, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r6, r6\n\t" +#elif defined(__clang__) + "muls r6, r6\n\t" +#else + "mul r6, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #15\n\t" +#else + "lsr r6, r5, #15\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #17\n\t" +#else + "lsl r5, r5, #17\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "str r4, [sp, #8]\n\t" + "# A[2] * A[1]\n\t" + "movs r4, #0\n\t" + "mov %[a], r9\n\t" + "mov %[a], r12\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[3] * A[0]\n\t" + "mov %[a], r9\n\t" + "mov r7, r10\n\t" + "mov %[a], lr\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "str r2, [sp, #12]\n\t" + "# A[4] * A[0]\n\t" + "movs r2, #0\n\t" + "mov %[a], r9\n\t" + "ldr %[a], [%[a], #16]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "# A[3] * A[1]\n\t" + "mov %[a], r9\n\t" + "mov r7, r11\n\t" + "mov %[a], lr\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "# A[2] * A[2]\n\t" + "mov r7, r12\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r5, r5\n\t" +#elif defined(__clang__) + "muls r5, r5\n\t" +#else + "mul r5, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r6, r6\n\t" +#elif defined(__clang__) + "muls r6, r6\n\t" +#else + "mul r6, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #15\n\t" +#else + "lsr r6, r5, #15\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #17\n\t" +#else + "lsl r5, r5, #17\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "str r3, [sp, #16]\n\t" + "# A[3] * A[2]\n\t" + "movs r3, #0\n\t" + "mov %[a], r9\n\t" + "mov %[a], lr\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[4] * A[1]\n\t" + "mov %[a], r9\n\t" + "mov r7, r11\n\t" + "ldr %[a], [%[a], #16]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[5] * A[0]\n\t" + "mov %[a], r9\n\t" + "mov r7, r10\n\t" + "ldr %[a], [%[a], #20]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "str r4, [sp, #20]\n\t" + "# A[6] * A[0]\n\t" + "movs r4, #0\n\t" + "mov %[a], r9\n\t" + "ldr %[a], [%[a], #24]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[5] * A[1]\n\t" + "mov %[a], r9\n\t" + "mov r7, r11\n\t" + "ldr %[a], [%[a], #20]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[4] * A[2]\n\t" + "mov %[a], r9\n\t" + "mov r7, r12\n\t" + "ldr %[a], [%[a], #16]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[3] * A[3]\n\t" + "mov r7, lr\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r5, r5\n\t" +#elif defined(__clang__) + "muls r5, r5\n\t" +#else + "mul r5, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r6, r6\n\t" +#elif defined(__clang__) + "muls r6, r6\n\t" +#else + "mul r6, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #15\n\t" +#else + "lsr r6, r5, #15\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #17\n\t" +#else + "lsl r5, r5, #17\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "str r2, [sp, #24]\n\t" + "# A[4] * A[3]\n\t" + "movs r2, #0\n\t" + "mov %[a], r9\n\t" + "ldr %[a], [%[a], #16]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "# A[5] * A[2]\n\t" + "mov %[a], r9\n\t" + "mov r7, r12\n\t" + "ldr %[a], [%[a], #20]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "# A[6] * A[1]\n\t" + "mov %[a], r9\n\t" + "mov r7, r11\n\t" + "ldr %[a], [%[a], #24]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "# A[7] * A[0]\n\t" + "mov %[a], r9\n\t" + "mov r7, r10\n\t" + "ldr %[a], [%[a], #28]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "str r3, [sp, #28]\n\t" + "# A[7] * A[1]\n\t" + "movs r3, #0\n\t" + "mov %[a], r9\n\t" + "mov r7, r11\n\t" + "ldr %[a], [%[a], #28]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[6] * A[2]\n\t" + "mov %[a], r9\n\t" + "mov r7, r12\n\t" + "ldr %[a], [%[a], #24]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[5] * A[3]\n\t" + "mov %[a], r9\n\t" + "mov r7, lr\n\t" + "ldr %[a], [%[a], #20]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[4] * A[4]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #16]\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r5, r5\n\t" +#elif defined(__clang__) + "muls r5, r5\n\t" +#else + "mul r5, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r6, r6\n\t" +#elif defined(__clang__) + "muls r6, r6\n\t" +#else + "mul r6, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #15\n\t" +#else + "lsr r6, r5, #15\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #17\n\t" +#else + "lsl r5, r5, #17\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "mov %[r], r8\n\t" + "str r4, [%[r], #32]\n\t" + "movs %[r], #0\n\t" + "movs %[a], #16\n\t" + "add %[a], %[a], r9\n\t" + "ldm %[a]!, {r5, r6}\n\t" + "mov r10, r5\n\t" + "mov r11, r6\n\t" + "ldm %[a]!, {r5, r6}\n\t" + "mov r12, r5\n\t" + "mov lr, r6\n\t" + "mov %[a], r9\n\t" + "# A[5] * A[4]\n\t" + "movs r4, #0\n\t" + "mov %[a], r11\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[6] * A[3]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #12]\n\t" + "mov %[a], r12\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[7] * A[2]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #8]\n\t" + "mov %[a], lr\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "mov %[r], r8\n\t" + "str r2, [%[r], #36]\n\t" + "movs %[r], #0\n\t" + "# A[7] * A[3]\n\t" + "movs r2, #0\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #12]\n\t" + "mov %[a], lr\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "# A[6] * A[4]\n\t" + "mov %[a], r9\n\t" + "mov r7, r10\n\t" + "mov %[a], r12\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "# A[5] * A[5]\n\t" + "mov r7, r11\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r5, r5\n\t" +#elif defined(__clang__) + "muls r5, r5\n\t" +#else + "mul r5, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r6, r6\n\t" +#elif defined(__clang__) + "muls r6, r6\n\t" +#else + "mul r6, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #15\n\t" +#else + "lsr r6, r5, #15\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #17\n\t" +#else + "lsl r5, r5, #17\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "mov %[r], r8\n\t" + "str r3, [%[r], #40]\n\t" + "movs %[r], #0\n\t" + "# A[6] * A[5]\n\t" + "movs r3, #0\n\t" + "mov %[a], r9\n\t" + "mov %[a], r12\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[7] * A[4]\n\t" + "mov %[a], r9\n\t" + "mov r7, r10\n\t" + "mov %[a], lr\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "mov %[r], r8\n\t" + "str r4, [%[r], #44]\n\t" + "movs %[r], #0\n\t" + "# A[7] * A[5]\n\t" + "movs r4, #0\n\t" + "mov %[a], r9\n\t" + "mov r7, r11\n\t" + "mov %[a], lr\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[6] * A[6]\n\t" + "mov r7, r12\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r5, r5\n\t" +#elif defined(__clang__) + "muls r5, r5\n\t" +#else + "mul r5, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r6, r6\n\t" +#elif defined(__clang__) + "muls r6, r6\n\t" +#else + "mul r6, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #15\n\t" +#else + "lsr r6, r5, #15\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #17\n\t" +#else + "lsl r5, r5, #17\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "mov %[r], r8\n\t" + "str r2, [%[r], #48]\n\t" + "movs %[r], #0\n\t" + "# A[7] * A[6]\n\t" + "movs r2, #0\n\t" + "mov %[a], r9\n\t" + "mov %[a], lr\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "mov %[r], r8\n\t" + "str r3, [%[r], #52]\n\t" + "movs %[r], #0\n\t" + "# A[7] * A[7]\n\t" + "mov %[a], r9\n\t" + "mov r7, lr\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r5, r5\n\t" +#elif defined(__clang__) + "muls r5, r5\n\t" +#else + "mul r5, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r6, r6\n\t" +#elif defined(__clang__) + "muls r6, r6\n\t" +#else + "mul r6, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #15\n\t" +#else + "lsr r6, r5, #15\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #17\n\t" +#else + "lsl r5, r5, #17\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif + "mov %[r], r8\n\t" + "str r4, [%[r], #56]\n\t" + "str r2, [%[r], #60]\n\t" + "pop {r2, r3, r4, r5}\n\t" + "stm %[r]!, {r2, r3, r4, r5}\n\t" + "pop {r2, r3, r4, r5}\n\t" + "stm %[r]!, {r2, r3, r4, r5}\n\t" + : [r] "+r" (r), [a] "+r" (a) + : + : "memory", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12", "lr" + ); +} + +#endif /* !WOLFSSL_SP_LARGE_CODE */ /* Add b to a into r. (r = a + b) * * r A single precision integer. @@ -920,77 +16386,168 @@ SP_NOINLINE static sp_digit sp_2048_add_8(sp_digit* r, const sp_digit* a, const sp_digit* b) { __asm__ __volatile__ ( - "ldr r4, [%[a]]\n\t" - "ldr r5, [%[b]]\n\t" -#ifdef __clang__ - "adds r4, r4, r5\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" #else - "add r4, r4, r5\n\t" + "add r3, r3, r5\n\t" #endif - "str r4, [%[r]]\n\t" - "ldr r4, [%[a], #4]\n\t" - "ldr r5, [%[b], #4]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "movs %[r], #0\n\t" +#ifdef WOLFSSL_KEIL + "adcs %[r], %[r], %[r]\n\t" +#elif defined(__clang__) + "adcs %[r], %[r]\n\t" +#else + "adc %[r], %[r]\n\t" +#endif + : [r] "+r" (r), [a] "+r" (a), [b] "+r" (b) + : + : "memory", "r3", "r4", "r5", "r6" + ); + return (uint32_t)(size_t)r; +} + +/* Add b to a into r. (r = a + b) + * + * r A single precision integer. + * a A single precision integer. + * b A single precision integer. + */ +SP_NOINLINE static sp_digit sp_2048_add_to_word_8(sp_digit* r, sp_digit a, + const sp_digit* b) +{ + __asm__ __volatile__ ( + "movs r5, #0\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, %[a]\n\t" +#else + "add r3, r3, %[a]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) "adcs r4, r5\n\t" #else "adc r4, r5\n\t" #endif - "str r4, [%[r], #4]\n\t" - "ldr r4, [%[a], #8]\n\t" - "ldr r5, [%[b], #8]\n\t" -#ifdef __clang__ + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) "adcs r4, r5\n\t" #else "adc r4, r5\n\t" #endif - "str r4, [%[r], #8]\n\t" - "ldr r4, [%[a], #12]\n\t" - "ldr r5, [%[b], #12]\n\t" -#ifdef __clang__ + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) "adcs r4, r5\n\t" #else "adc r4, r5\n\t" #endif - "str r4, [%[r], #12]\n\t" - "ldr r4, [%[a], #16]\n\t" - "ldr r5, [%[b], #16]\n\t" -#ifdef __clang__ + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) "adcs r4, r5\n\t" #else "adc r4, r5\n\t" #endif - "str r4, [%[r], #16]\n\t" - "ldr r4, [%[a], #20]\n\t" - "ldr r5, [%[b], #20]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "movs %[r], #0\n\t" +#ifdef WOLFSSL_KEIL + "adcs %[r], %[r], %[r]\n\t" +#elif defined(__clang__) + "adcs %[r], %[r]\n\t" #else - "adc r4, r5\n\t" + "adc %[r], %[r]\n\t" #endif - "str r4, [%[r], #20]\n\t" - "ldr r4, [%[a], #24]\n\t" - "ldr r5, [%[b], #24]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #24]\n\t" - "ldr r4, [%[a], #28]\n\t" - "ldr r5, [%[b], #28]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #28]\n\t" - "movs r3, #0\n\t" -#ifdef __clang__ - "adcs r3, r3\n\t" -#else - "adc r3, r3\n\t" -#endif - "movs %[r], r3\n\t" : [r] "+r" (r), [a] "+r" (a), [b] "+r" (b) : : "memory", "r3", "r4", "r5" @@ -1007,144 +16564,158 @@ SP_NOINLINE static sp_digit sp_2048_sub_in_place_16(sp_digit* a, const sp_digit* b) { __asm__ __volatile__ ( - "movs r2, #0\n\t" - "ldr r3, [%[a]]\n\t" - "ldr r4, [%[a], #4]\n\t" - "ldr r5, [%[b]]\n\t" - "ldr r6, [%[b], #4]\n\t" -#ifdef __clang__ - "subs r3, r3, r5\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "subs r2, r2, r4\n\t" #else - "sub r3, r3, r5\n\t" + "sub r2, r2, r4\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" -#else - "sbc r4, r6\n\t" -#endif - "str r3, [%[a]]\n\t" - "str r4, [%[a], #4]\n\t" - "ldr r3, [%[a], #8]\n\t" - "ldr r4, [%[a], #12]\n\t" - "ldr r5, [%[b], #8]\n\t" - "ldr r6, [%[b], #12]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #8]\n\t" - "str r4, [%[a], #12]\n\t" - "ldr r3, [%[a], #16]\n\t" - "ldr r4, [%[a], #20]\n\t" - "ldr r5, [%[b], #16]\n\t" - "ldr r6, [%[b], #20]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #16]\n\t" - "str r4, [%[a], #20]\n\t" - "ldr r3, [%[a], #24]\n\t" - "ldr r4, [%[a], #28]\n\t" - "ldr r5, [%[b], #24]\n\t" - "ldr r6, [%[b], #28]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #24]\n\t" - "str r4, [%[a], #28]\n\t" - "ldr r3, [%[a], #32]\n\t" - "ldr r4, [%[a], #36]\n\t" - "ldr r5, [%[b], #32]\n\t" - "ldr r6, [%[b], #36]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #32]\n\t" - "str r4, [%[a], #36]\n\t" - "ldr r3, [%[a], #40]\n\t" - "ldr r4, [%[a], #44]\n\t" - "ldr r5, [%[b], #40]\n\t" - "ldr r6, [%[b], #44]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #40]\n\t" - "str r4, [%[a], #44]\n\t" - "ldr r3, [%[a], #48]\n\t" - "ldr r4, [%[a], #52]\n\t" - "ldr r5, [%[b], #48]\n\t" - "ldr r6, [%[b], #52]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #48]\n\t" - "str r4, [%[a], #52]\n\t" - "ldr r3, [%[a], #56]\n\t" - "ldr r4, [%[a], #60]\n\t" - "ldr r5, [%[b], #56]\n\t" - "ldr r6, [%[b], #60]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #56]\n\t" - "str r4, [%[a], #60]\n\t" -#ifdef __clang__ - "sbcs r2, r2\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r2, r2\n\t" + "sbc r3, r5\n\t" +#endif + "stm %[a]!, {r2, r3}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs %[a], %[a], %[a]\n\t" +#elif defined(__clang__) + "sbcs %[a], %[a]\n\t" +#else + "sbc %[a], %[a]\n\t" #endif - "movs %[a], r2\n\t" : [a] "+r" (a), [b] "+r" (b) : - : "memory", "r2", "r3", "r4", "r5", "r6" + : "memory", "r2", "r3", "r4", "r5" ); return (uint32_t)(size_t)a; } @@ -1159,144 +16730,151 @@ SP_NOINLINE static sp_digit sp_2048_add_16(sp_digit* r, const sp_digit* a, const sp_digit* b) { __asm__ __volatile__ ( - "ldr r4, [%[a]]\n\t" - "ldr r5, [%[b]]\n\t" -#ifdef __clang__ - "adds r4, r4, r5\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" #else - "add r4, r4, r5\n\t" + "add r3, r3, r5\n\t" #endif - "str r4, [%[r]]\n\t" - "ldr r4, [%[a], #4]\n\t" - "ldr r5, [%[b], #4]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #4]\n\t" - "ldr r4, [%[a], #8]\n\t" - "ldr r5, [%[b], #8]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #8]\n\t" - "ldr r4, [%[a], #12]\n\t" - "ldr r5, [%[b], #12]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #12]\n\t" - "ldr r4, [%[a], #16]\n\t" - "ldr r5, [%[b], #16]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #16]\n\t" - "ldr r4, [%[a], #20]\n\t" - "ldr r5, [%[b], #20]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #20]\n\t" - "ldr r4, [%[a], #24]\n\t" - "ldr r5, [%[b], #24]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #24]\n\t" - "ldr r4, [%[a], #28]\n\t" - "ldr r5, [%[b], #28]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #28]\n\t" - "ldr r4, [%[a], #32]\n\t" - "ldr r5, [%[b], #32]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #32]\n\t" - "ldr r4, [%[a], #36]\n\t" - "ldr r5, [%[b], #36]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #36]\n\t" - "ldr r4, [%[a], #40]\n\t" - "ldr r5, [%[b], #40]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #40]\n\t" - "ldr r4, [%[a], #44]\n\t" - "ldr r5, [%[b], #44]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #44]\n\t" - "ldr r4, [%[a], #48]\n\t" - "ldr r5, [%[b], #48]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #48]\n\t" - "ldr r4, [%[a], #52]\n\t" - "ldr r5, [%[b], #52]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #52]\n\t" - "ldr r4, [%[a], #56]\n\t" - "ldr r5, [%[b], #56]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #56]\n\t" - "ldr r4, [%[a], #60]\n\t" - "ldr r5, [%[b], #60]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #60]\n\t" - "movs r3, #0\n\t" -#ifdef __clang__ - "adcs r3, r3\n\t" + "stm %[r]!, {r3, r4}\n\t" + "movs %[r], #0\n\t" +#ifdef WOLFSSL_KEIL + "adcs %[r], %[r], %[r]\n\t" +#elif defined(__clang__) + "adcs %[r], %[r]\n\t" #else - "adc r3, r3\n\t" + "adc %[r], %[r]\n\t" #endif - "movs %[r], r3\n\t" : [r] "+r" (r), [a] "+r" (a), [b] "+r" (b) : - : "memory", "r3", "r4", "r5" + : "memory", "r3", "r4", "r5", "r6" ); return (uint32_t)(size_t)r; } @@ -1357,9 +16935,89 @@ SP_NOINLINE static void sp_2048_mul_16(sp_digit* r, const sp_digit* a, u += sp_2048_sub_in_place_16(z1, z2); u += sp_2048_sub_in_place_16(z1, z0); u += sp_2048_add_16(r + 8, r + 8, z1); - r[24] = u; - XMEMSET(r + 24 + 1, 0, sizeof(sp_digit) * (8 - 1)); - (void)sp_2048_add_16(r + 16, r + 16, z2); + u += sp_2048_add_8(r + 16, r + 16, z2); + (void)sp_2048_add_to_word_8(r + 24, u, z2 + 8); +} + +/* Double a into r. (r = a + a) + * + * r A single precision integer. + * a A single precision integer. + */ +SP_NOINLINE static sp_digit sp_2048_dbl_8(sp_digit* r, const sp_digit* a) +{ + __asm__ __volatile__ ( + "ldm %[a]!, {r2, r3, r4, r5}\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r2\n\t" +#else + "add r2, r2, r2\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r3\n\t" +#elif defined(__clang__) + "adcs r3, r3\n\t" +#else + "adc r3, r3\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r4\n\t" +#elif defined(__clang__) + "adcs r4, r4\n\t" +#else + "adc r4, r4\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r5\n\t" +#elif defined(__clang__) + "adcs r5, r5\n\t" +#else + "adc r5, r5\n\t" +#endif + "stm %[r]!, {r2, r3, r4, r5}\n\t" + "ldm %[a]!, {r2, r3, r4, r5}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r2\n\t" +#elif defined(__clang__) + "adcs r2, r2\n\t" +#else + "adc r2, r2\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r3\n\t" +#elif defined(__clang__) + "adcs r3, r3\n\t" +#else + "adc r3, r3\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r4\n\t" +#elif defined(__clang__) + "adcs r4, r4\n\t" +#else + "adc r4, r4\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r5\n\t" +#elif defined(__clang__) + "adcs r5, r5\n\t" +#else + "adc r5, r5\n\t" +#endif + "stm %[r]!, {r2, r3, r4, r5}\n\t" + "movs %[r], #0\n\t" +#ifdef WOLFSSL_KEIL + "adcs %[r], %[r], %[r]\n\t" +#elif defined(__clang__) + "adcs %[r], %[r]\n\t" +#else + "adc %[r], %[r]\n\t" +#endif + : [r] "+r" (r), [a] "+r" (a) + : + : "memory", "r2", "r3", "r4", "r5" + ); + return (uint32_t)(size_t)r; } /* Square a and put result in r. (r = a * a) @@ -1380,13 +17038,164 @@ SP_NOINLINE static void sp_2048_sqr_16(sp_digit* r, const sp_digit* a) sp_2048_sqr_8(z2, &a[8]); sp_2048_sqr_8(z0, a); sp_2048_mask_8(r + 16, a1, 0 - u); - u += sp_2048_add_8(r + 16, r + 16, r + 16); + u += sp_2048_dbl_8(r + 16, r + 16); u += sp_2048_sub_in_place_16(z1, z2); u += sp_2048_sub_in_place_16(z1, z0); u += sp_2048_add_16(r + 8, r + 8, z1); - r[24] = u; - XMEMSET(r + 24 + 1, 0, sizeof(sp_digit) * (8 - 1)); - (void)sp_2048_add_16(r + 16, r + 16, z2); + u += sp_2048_add_8(r + 16, r + 16, z2); + (void)sp_2048_add_to_word_8(r + 24, u, z2 + 8); +} + +/* Add b to a into r. (r = a + b) + * + * r A single precision integer. + * a A single precision integer. + * b A single precision integer. + */ +SP_NOINLINE static sp_digit sp_2048_add_to_word_16(sp_digit* r, sp_digit a, + const sp_digit* b) +{ + __asm__ __volatile__ ( + "movs r5, #0\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, %[a]\n\t" +#else + "add r3, r3, %[a]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "movs %[r], #0\n\t" +#ifdef WOLFSSL_KEIL + "adcs %[r], %[r], %[r]\n\t" +#elif defined(__clang__) + "adcs %[r], %[r]\n\t" +#else + "adc %[r], %[r]\n\t" +#endif + : [r] "+r" (r), [a] "+r" (a), [b] "+r" (b) + : + : "memory", "r3", "r4", "r5" + ); + return (uint32_t)(size_t)r; } /* Sub b from a into a. (a -= b) @@ -1398,272 +17207,302 @@ SP_NOINLINE static sp_digit sp_2048_sub_in_place_32(sp_digit* a, const sp_digit* b) { __asm__ __volatile__ ( - "movs r2, #0\n\t" - "ldr r3, [%[a]]\n\t" - "ldr r4, [%[a], #4]\n\t" - "ldr r5, [%[b]]\n\t" - "ldr r6, [%[b], #4]\n\t" -#ifdef __clang__ - "subs r3, r3, r5\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "subs r2, r2, r4\n\t" #else - "sub r3, r3, r5\n\t" + "sub r2, r2, r4\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" -#else - "sbc r4, r6\n\t" -#endif - "str r3, [%[a]]\n\t" - "str r4, [%[a], #4]\n\t" - "ldr r3, [%[a], #8]\n\t" - "ldr r4, [%[a], #12]\n\t" - "ldr r5, [%[b], #8]\n\t" - "ldr r6, [%[b], #12]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #8]\n\t" - "str r4, [%[a], #12]\n\t" - "ldr r3, [%[a], #16]\n\t" - "ldr r4, [%[a], #20]\n\t" - "ldr r5, [%[b], #16]\n\t" - "ldr r6, [%[b], #20]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #16]\n\t" - "str r4, [%[a], #20]\n\t" - "ldr r3, [%[a], #24]\n\t" - "ldr r4, [%[a], #28]\n\t" - "ldr r5, [%[b], #24]\n\t" - "ldr r6, [%[b], #28]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #24]\n\t" - "str r4, [%[a], #28]\n\t" - "ldr r3, [%[a], #32]\n\t" - "ldr r4, [%[a], #36]\n\t" - "ldr r5, [%[b], #32]\n\t" - "ldr r6, [%[b], #36]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #32]\n\t" - "str r4, [%[a], #36]\n\t" - "ldr r3, [%[a], #40]\n\t" - "ldr r4, [%[a], #44]\n\t" - "ldr r5, [%[b], #40]\n\t" - "ldr r6, [%[b], #44]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #40]\n\t" - "str r4, [%[a], #44]\n\t" - "ldr r3, [%[a], #48]\n\t" - "ldr r4, [%[a], #52]\n\t" - "ldr r5, [%[b], #48]\n\t" - "ldr r6, [%[b], #52]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #48]\n\t" - "str r4, [%[a], #52]\n\t" - "ldr r3, [%[a], #56]\n\t" - "ldr r4, [%[a], #60]\n\t" - "ldr r5, [%[b], #56]\n\t" - "ldr r6, [%[b], #60]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #56]\n\t" - "str r4, [%[a], #60]\n\t" - "ldr r3, [%[a], #64]\n\t" - "ldr r4, [%[a], #68]\n\t" - "ldr r5, [%[b], #64]\n\t" - "ldr r6, [%[b], #68]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #64]\n\t" - "str r4, [%[a], #68]\n\t" - "ldr r3, [%[a], #72]\n\t" - "ldr r4, [%[a], #76]\n\t" - "ldr r5, [%[b], #72]\n\t" - "ldr r6, [%[b], #76]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #72]\n\t" - "str r4, [%[a], #76]\n\t" - "ldr r3, [%[a], #80]\n\t" - "ldr r4, [%[a], #84]\n\t" - "ldr r5, [%[b], #80]\n\t" - "ldr r6, [%[b], #84]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #80]\n\t" - "str r4, [%[a], #84]\n\t" - "ldr r3, [%[a], #88]\n\t" - "ldr r4, [%[a], #92]\n\t" - "ldr r5, [%[b], #88]\n\t" - "ldr r6, [%[b], #92]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #88]\n\t" - "str r4, [%[a], #92]\n\t" - "ldr r3, [%[a], #96]\n\t" - "ldr r4, [%[a], #100]\n\t" - "ldr r5, [%[b], #96]\n\t" - "ldr r6, [%[b], #100]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #96]\n\t" - "str r4, [%[a], #100]\n\t" - "ldr r3, [%[a], #104]\n\t" - "ldr r4, [%[a], #108]\n\t" - "ldr r5, [%[b], #104]\n\t" - "ldr r6, [%[b], #108]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #104]\n\t" - "str r4, [%[a], #108]\n\t" - "ldr r3, [%[a], #112]\n\t" - "ldr r4, [%[a], #116]\n\t" - "ldr r5, [%[b], #112]\n\t" - "ldr r6, [%[b], #116]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #112]\n\t" - "str r4, [%[a], #116]\n\t" - "ldr r3, [%[a], #120]\n\t" - "ldr r4, [%[a], #124]\n\t" - "ldr r5, [%[b], #120]\n\t" - "ldr r6, [%[b], #124]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #120]\n\t" - "str r4, [%[a], #124]\n\t" -#ifdef __clang__ - "sbcs r2, r2\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r2, r2\n\t" + "sbc r3, r5\n\t" +#endif + "stm %[a]!, {r2, r3}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs %[a], %[a], %[a]\n\t" +#elif defined(__clang__) + "sbcs %[a], %[a]\n\t" +#else + "sbc %[a], %[a]\n\t" #endif - "movs %[a], r2\n\t" : [a] "+r" (a), [b] "+r" (b) : - : "memory", "r2", "r3", "r4", "r5", "r6" + : "memory", "r2", "r3", "r4", "r5" ); return (uint32_t)(size_t)a; } @@ -1678,272 +17517,287 @@ SP_NOINLINE static sp_digit sp_2048_add_32(sp_digit* r, const sp_digit* a, const sp_digit* b) { __asm__ __volatile__ ( - "ldr r4, [%[a]]\n\t" - "ldr r5, [%[b]]\n\t" -#ifdef __clang__ - "adds r4, r4, r5\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" #else - "add r4, r4, r5\n\t" + "add r3, r3, r5\n\t" #endif - "str r4, [%[r]]\n\t" - "ldr r4, [%[a], #4]\n\t" - "ldr r5, [%[b], #4]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #4]\n\t" - "ldr r4, [%[a], #8]\n\t" - "ldr r5, [%[b], #8]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #8]\n\t" - "ldr r4, [%[a], #12]\n\t" - "ldr r5, [%[b], #12]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #12]\n\t" - "ldr r4, [%[a], #16]\n\t" - "ldr r5, [%[b], #16]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #16]\n\t" - "ldr r4, [%[a], #20]\n\t" - "ldr r5, [%[b], #20]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #20]\n\t" - "ldr r4, [%[a], #24]\n\t" - "ldr r5, [%[b], #24]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #24]\n\t" - "ldr r4, [%[a], #28]\n\t" - "ldr r5, [%[b], #28]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #28]\n\t" - "ldr r4, [%[a], #32]\n\t" - "ldr r5, [%[b], #32]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #32]\n\t" - "ldr r4, [%[a], #36]\n\t" - "ldr r5, [%[b], #36]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #36]\n\t" - "ldr r4, [%[a], #40]\n\t" - "ldr r5, [%[b], #40]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #40]\n\t" - "ldr r4, [%[a], #44]\n\t" - "ldr r5, [%[b], #44]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #44]\n\t" - "ldr r4, [%[a], #48]\n\t" - "ldr r5, [%[b], #48]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #48]\n\t" - "ldr r4, [%[a], #52]\n\t" - "ldr r5, [%[b], #52]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #52]\n\t" - "ldr r4, [%[a], #56]\n\t" - "ldr r5, [%[b], #56]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #56]\n\t" - "ldr r4, [%[a], #60]\n\t" - "ldr r5, [%[b], #60]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #60]\n\t" - "ldr r4, [%[a], #64]\n\t" - "ldr r5, [%[b], #64]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #64]\n\t" - "ldr r4, [%[a], #68]\n\t" - "ldr r5, [%[b], #68]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #68]\n\t" - "ldr r4, [%[a], #72]\n\t" - "ldr r5, [%[b], #72]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #72]\n\t" - "ldr r4, [%[a], #76]\n\t" - "ldr r5, [%[b], #76]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #76]\n\t" - "ldr r4, [%[a], #80]\n\t" - "ldr r5, [%[b], #80]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #80]\n\t" - "ldr r4, [%[a], #84]\n\t" - "ldr r5, [%[b], #84]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #84]\n\t" - "ldr r4, [%[a], #88]\n\t" - "ldr r5, [%[b], #88]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #88]\n\t" - "ldr r4, [%[a], #92]\n\t" - "ldr r5, [%[b], #92]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #92]\n\t" - "ldr r4, [%[a], #96]\n\t" - "ldr r5, [%[b], #96]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #96]\n\t" - "ldr r4, [%[a], #100]\n\t" - "ldr r5, [%[b], #100]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #100]\n\t" - "ldr r4, [%[a], #104]\n\t" - "ldr r5, [%[b], #104]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #104]\n\t" - "ldr r4, [%[a], #108]\n\t" - "ldr r5, [%[b], #108]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #108]\n\t" - "ldr r4, [%[a], #112]\n\t" - "ldr r5, [%[b], #112]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #112]\n\t" - "ldr r4, [%[a], #116]\n\t" - "ldr r5, [%[b], #116]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #116]\n\t" - "ldr r4, [%[a], #120]\n\t" - "ldr r5, [%[b], #120]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #120]\n\t" - "ldr r4, [%[a], #124]\n\t" - "ldr r5, [%[b], #124]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #124]\n\t" - "movs r3, #0\n\t" -#ifdef __clang__ - "adcs r3, r3\n\t" + "stm %[r]!, {r3, r4}\n\t" + "movs %[r], #0\n\t" +#ifdef WOLFSSL_KEIL + "adcs %[r], %[r], %[r]\n\t" +#elif defined(__clang__) + "adcs %[r], %[r]\n\t" #else - "adc r3, r3\n\t" + "adc %[r], %[r]\n\t" #endif - "movs %[r], r3\n\t" : [r] "+r" (r), [a] "+r" (a), [b] "+r" (b) : - : "memory", "r3", "r4", "r5" + : "memory", "r3", "r4", "r5", "r6" ); return (uint32_t)(size_t)r; } @@ -2008,9 +17862,149 @@ SP_NOINLINE static void sp_2048_mul_32(sp_digit* r, const sp_digit* a, u += sp_2048_sub_in_place_32(z1, z2); u += sp_2048_sub_in_place_32(z1, z0); u += sp_2048_add_32(r + 16, r + 16, z1); - r[48] = u; - XMEMSET(r + 48 + 1, 0, sizeof(sp_digit) * (16 - 1)); - (void)sp_2048_add_32(r + 32, r + 32, z2); + u += sp_2048_add_16(r + 32, r + 32, z2); + (void)sp_2048_add_to_word_16(r + 48, u, z2 + 16); +} + +/* Double a into r. (r = a + a) + * + * r A single precision integer. + * a A single precision integer. + */ +SP_NOINLINE static sp_digit sp_2048_dbl_16(sp_digit* r, const sp_digit* a) +{ + __asm__ __volatile__ ( + "ldm %[a]!, {r2, r3, r4, r5}\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r2\n\t" +#else + "add r2, r2, r2\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r3\n\t" +#elif defined(__clang__) + "adcs r3, r3\n\t" +#else + "adc r3, r3\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r4\n\t" +#elif defined(__clang__) + "adcs r4, r4\n\t" +#else + "adc r4, r4\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r5\n\t" +#elif defined(__clang__) + "adcs r5, r5\n\t" +#else + "adc r5, r5\n\t" +#endif + "stm %[r]!, {r2, r3, r4, r5}\n\t" + "ldm %[a]!, {r2, r3, r4, r5}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r2\n\t" +#elif defined(__clang__) + "adcs r2, r2\n\t" +#else + "adc r2, r2\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r3\n\t" +#elif defined(__clang__) + "adcs r3, r3\n\t" +#else + "adc r3, r3\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r4\n\t" +#elif defined(__clang__) + "adcs r4, r4\n\t" +#else + "adc r4, r4\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r5\n\t" +#elif defined(__clang__) + "adcs r5, r5\n\t" +#else + "adc r5, r5\n\t" +#endif + "stm %[r]!, {r2, r3, r4, r5}\n\t" + "ldm %[a]!, {r2, r3, r4, r5}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r2\n\t" +#elif defined(__clang__) + "adcs r2, r2\n\t" +#else + "adc r2, r2\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r3\n\t" +#elif defined(__clang__) + "adcs r3, r3\n\t" +#else + "adc r3, r3\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r4\n\t" +#elif defined(__clang__) + "adcs r4, r4\n\t" +#else + "adc r4, r4\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r5\n\t" +#elif defined(__clang__) + "adcs r5, r5\n\t" +#else + "adc r5, r5\n\t" +#endif + "stm %[r]!, {r2, r3, r4, r5}\n\t" + "ldm %[a]!, {r2, r3, r4, r5}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r2\n\t" +#elif defined(__clang__) + "adcs r2, r2\n\t" +#else + "adc r2, r2\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r3\n\t" +#elif defined(__clang__) + "adcs r3, r3\n\t" +#else + "adc r3, r3\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r4\n\t" +#elif defined(__clang__) + "adcs r4, r4\n\t" +#else + "adc r4, r4\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r5\n\t" +#elif defined(__clang__) + "adcs r5, r5\n\t" +#else + "adc r5, r5\n\t" +#endif + "stm %[r]!, {r2, r3, r4, r5}\n\t" + "movs %[r], #0\n\t" +#ifdef WOLFSSL_KEIL + "adcs %[r], %[r], %[r]\n\t" +#elif defined(__clang__) + "adcs %[r], %[r]\n\t" +#else + "adc %[r], %[r]\n\t" +#endif + : [r] "+r" (r), [a] "+r" (a) + : + : "memory", "r2", "r3", "r4", "r5" + ); + return (uint32_t)(size_t)r; } /* Square a and put result in r. (r = a * a) @@ -2031,13 +18025,292 @@ SP_NOINLINE static void sp_2048_sqr_32(sp_digit* r, const sp_digit* a) sp_2048_sqr_16(z2, &a[16]); sp_2048_sqr_16(z0, a); sp_2048_mask_16(r + 32, a1, 0 - u); - u += sp_2048_add_16(r + 32, r + 32, r + 32); + u += sp_2048_dbl_16(r + 32, r + 32); u += sp_2048_sub_in_place_32(z1, z2); u += sp_2048_sub_in_place_32(z1, z0); u += sp_2048_add_32(r + 16, r + 16, z1); - r[48] = u; - XMEMSET(r + 48 + 1, 0, sizeof(sp_digit) * (16 - 1)); - (void)sp_2048_add_32(r + 32, r + 32, z2); + u += sp_2048_add_16(r + 32, r + 32, z2); + (void)sp_2048_add_to_word_16(r + 48, u, z2 + 16); +} + +/* Add b to a into r. (r = a + b) + * + * r A single precision integer. + * a A single precision integer. + * b A single precision integer. + */ +SP_NOINLINE static sp_digit sp_2048_add_to_word_32(sp_digit* r, sp_digit a, + const sp_digit* b) +{ + __asm__ __volatile__ ( + "movs r5, #0\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, %[a]\n\t" +#else + "add r3, r3, %[a]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "movs %[r], #0\n\t" +#ifdef WOLFSSL_KEIL + "adcs %[r], %[r], %[r]\n\t" +#elif defined(__clang__) + "adcs %[r], %[r]\n\t" +#else + "adc %[r], %[r]\n\t" +#endif + : [r] "+r" (r), [a] "+r" (a), [b] "+r" (b) + : + : "memory", "r3", "r4", "r5" + ); + return (uint32_t)(size_t)r; } /* Sub b from a into a. (a -= b) @@ -2049,549 +18322,590 @@ SP_NOINLINE static sp_digit sp_2048_sub_in_place_64(sp_digit* a, const sp_digit* b) { __asm__ __volatile__ ( - "movs r2, #0\n\t" - "ldr r3, [%[a]]\n\t" - "ldr r4, [%[a], #4]\n\t" - "ldr r5, [%[b]]\n\t" - "ldr r6, [%[b], #4]\n\t" -#ifdef __clang__ - "subs r3, r3, r5\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "subs r2, r2, r4\n\t" #else - "sub r3, r3, r5\n\t" + "sub r2, r2, r4\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" -#else - "sbc r4, r6\n\t" -#endif - "str r3, [%[a]]\n\t" - "str r4, [%[a], #4]\n\t" - "ldr r3, [%[a], #8]\n\t" - "ldr r4, [%[a], #12]\n\t" - "ldr r5, [%[b], #8]\n\t" - "ldr r6, [%[b], #12]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #8]\n\t" - "str r4, [%[a], #12]\n\t" - "ldr r3, [%[a], #16]\n\t" - "ldr r4, [%[a], #20]\n\t" - "ldr r5, [%[b], #16]\n\t" - "ldr r6, [%[b], #20]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #16]\n\t" - "str r4, [%[a], #20]\n\t" - "ldr r3, [%[a], #24]\n\t" - "ldr r4, [%[a], #28]\n\t" - "ldr r5, [%[b], #24]\n\t" - "ldr r6, [%[b], #28]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #24]\n\t" - "str r4, [%[a], #28]\n\t" - "ldr r3, [%[a], #32]\n\t" - "ldr r4, [%[a], #36]\n\t" - "ldr r5, [%[b], #32]\n\t" - "ldr r6, [%[b], #36]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #32]\n\t" - "str r4, [%[a], #36]\n\t" - "ldr r3, [%[a], #40]\n\t" - "ldr r4, [%[a], #44]\n\t" - "ldr r5, [%[b], #40]\n\t" - "ldr r6, [%[b], #44]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #40]\n\t" - "str r4, [%[a], #44]\n\t" - "ldr r3, [%[a], #48]\n\t" - "ldr r4, [%[a], #52]\n\t" - "ldr r5, [%[b], #48]\n\t" - "ldr r6, [%[b], #52]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #48]\n\t" - "str r4, [%[a], #52]\n\t" - "ldr r3, [%[a], #56]\n\t" - "ldr r4, [%[a], #60]\n\t" - "ldr r5, [%[b], #56]\n\t" - "ldr r6, [%[b], #60]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #56]\n\t" - "str r4, [%[a], #60]\n\t" - "ldr r3, [%[a], #64]\n\t" - "ldr r4, [%[a], #68]\n\t" - "ldr r5, [%[b], #64]\n\t" - "ldr r6, [%[b], #68]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #64]\n\t" - "str r4, [%[a], #68]\n\t" - "ldr r3, [%[a], #72]\n\t" - "ldr r4, [%[a], #76]\n\t" - "ldr r5, [%[b], #72]\n\t" - "ldr r6, [%[b], #76]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #72]\n\t" - "str r4, [%[a], #76]\n\t" - "ldr r3, [%[a], #80]\n\t" - "ldr r4, [%[a], #84]\n\t" - "ldr r5, [%[b], #80]\n\t" - "ldr r6, [%[b], #84]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #80]\n\t" - "str r4, [%[a], #84]\n\t" - "ldr r3, [%[a], #88]\n\t" - "ldr r4, [%[a], #92]\n\t" - "ldr r5, [%[b], #88]\n\t" - "ldr r6, [%[b], #92]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #88]\n\t" - "str r4, [%[a], #92]\n\t" - "ldr r3, [%[a], #96]\n\t" - "ldr r4, [%[a], #100]\n\t" - "ldr r5, [%[b], #96]\n\t" - "ldr r6, [%[b], #100]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #96]\n\t" - "str r4, [%[a], #100]\n\t" - "ldr r3, [%[a], #104]\n\t" - "ldr r4, [%[a], #108]\n\t" - "ldr r5, [%[b], #104]\n\t" - "ldr r6, [%[b], #108]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #104]\n\t" - "str r4, [%[a], #108]\n\t" - "ldr r3, [%[a], #112]\n\t" - "ldr r4, [%[a], #116]\n\t" - "ldr r5, [%[b], #112]\n\t" - "ldr r6, [%[b], #116]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #112]\n\t" - "str r4, [%[a], #116]\n\t" - "ldr r3, [%[a], #120]\n\t" - "ldr r4, [%[a], #124]\n\t" - "ldr r5, [%[b], #120]\n\t" - "ldr r6, [%[b], #124]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #120]\n\t" - "str r4, [%[a], #124]\n\t" -#ifdef __clang__ - "sbcs r2, r2\n\t" -#else - "sbc r2, r2\n\t" -#endif -#ifdef __clang__ - "adds %[a], %[a], #0x80\n\t" -#else - "add %[a], %[a], #0x80\n\t" -#endif -#ifdef __clang__ - "adds %[b], %[b], #0x80\n\t" -#else - "add %[b], %[b], #0x80\n\t" -#endif - "movs r5, #0\n\t" -#ifdef __clang__ - "subs r5, r5, r2\n\t" -#else - "sub r5, r5, r2\n\t" -#endif - "ldr r3, [%[a]]\n\t" - "ldr r4, [%[a], #4]\n\t" - "ldr r5, [%[b]]\n\t" - "ldr r6, [%[b], #4]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a]]\n\t" - "str r4, [%[a], #4]\n\t" - "ldr r3, [%[a], #8]\n\t" - "ldr r4, [%[a], #12]\n\t" - "ldr r5, [%[b], #8]\n\t" - "ldr r6, [%[b], #12]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #8]\n\t" - "str r4, [%[a], #12]\n\t" - "ldr r3, [%[a], #16]\n\t" - "ldr r4, [%[a], #20]\n\t" - "ldr r5, [%[b], #16]\n\t" - "ldr r6, [%[b], #20]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #16]\n\t" - "str r4, [%[a], #20]\n\t" - "ldr r3, [%[a], #24]\n\t" - "ldr r4, [%[a], #28]\n\t" - "ldr r5, [%[b], #24]\n\t" - "ldr r6, [%[b], #28]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #24]\n\t" - "str r4, [%[a], #28]\n\t" - "ldr r3, [%[a], #32]\n\t" - "ldr r4, [%[a], #36]\n\t" - "ldr r5, [%[b], #32]\n\t" - "ldr r6, [%[b], #36]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #32]\n\t" - "str r4, [%[a], #36]\n\t" - "ldr r3, [%[a], #40]\n\t" - "ldr r4, [%[a], #44]\n\t" - "ldr r5, [%[b], #40]\n\t" - "ldr r6, [%[b], #44]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #40]\n\t" - "str r4, [%[a], #44]\n\t" - "ldr r3, [%[a], #48]\n\t" - "ldr r4, [%[a], #52]\n\t" - "ldr r5, [%[b], #48]\n\t" - "ldr r6, [%[b], #52]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #48]\n\t" - "str r4, [%[a], #52]\n\t" - "ldr r3, [%[a], #56]\n\t" - "ldr r4, [%[a], #60]\n\t" - "ldr r5, [%[b], #56]\n\t" - "ldr r6, [%[b], #60]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #56]\n\t" - "str r4, [%[a], #60]\n\t" - "ldr r3, [%[a], #64]\n\t" - "ldr r4, [%[a], #68]\n\t" - "ldr r5, [%[b], #64]\n\t" - "ldr r6, [%[b], #68]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #64]\n\t" - "str r4, [%[a], #68]\n\t" - "ldr r3, [%[a], #72]\n\t" - "ldr r4, [%[a], #76]\n\t" - "ldr r5, [%[b], #72]\n\t" - "ldr r6, [%[b], #76]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #72]\n\t" - "str r4, [%[a], #76]\n\t" - "ldr r3, [%[a], #80]\n\t" - "ldr r4, [%[a], #84]\n\t" - "ldr r5, [%[b], #80]\n\t" - "ldr r6, [%[b], #84]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #80]\n\t" - "str r4, [%[a], #84]\n\t" - "ldr r3, [%[a], #88]\n\t" - "ldr r4, [%[a], #92]\n\t" - "ldr r5, [%[b], #88]\n\t" - "ldr r6, [%[b], #92]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #88]\n\t" - "str r4, [%[a], #92]\n\t" - "ldr r3, [%[a], #96]\n\t" - "ldr r4, [%[a], #100]\n\t" - "ldr r5, [%[b], #96]\n\t" - "ldr r6, [%[b], #100]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #96]\n\t" - "str r4, [%[a], #100]\n\t" - "ldr r3, [%[a], #104]\n\t" - "ldr r4, [%[a], #108]\n\t" - "ldr r5, [%[b], #104]\n\t" - "ldr r6, [%[b], #108]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #104]\n\t" - "str r4, [%[a], #108]\n\t" - "ldr r3, [%[a], #112]\n\t" - "ldr r4, [%[a], #116]\n\t" - "ldr r5, [%[b], #112]\n\t" - "ldr r6, [%[b], #116]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #112]\n\t" - "str r4, [%[a], #116]\n\t" - "ldr r3, [%[a], #120]\n\t" - "ldr r4, [%[a], #124]\n\t" - "ldr r5, [%[b], #120]\n\t" - "ldr r6, [%[b], #124]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #120]\n\t" - "str r4, [%[a], #124]\n\t" -#ifdef __clang__ - "sbcs r2, r2\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r2, r2\n\t" + "sbc r3, r5\n\t" +#endif + "stm %[a]!, {r2, r3}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs %[a], %[a], %[a]\n\t" +#elif defined(__clang__) + "sbcs %[a], %[a]\n\t" +#else + "sbc %[a], %[a]\n\t" #endif - "movs %[a], r2\n\t" : [a] "+r" (a), [b] "+r" (b) : - : "memory", "r2", "r3", "r4", "r5", "r6" + : "memory", "r2", "r3", "r4", "r5" ); return (uint32_t)(size_t)a; } @@ -2606,557 +18920,556 @@ SP_NOINLINE static sp_digit sp_2048_add_64(sp_digit* r, const sp_digit* a, const sp_digit* b) { __asm__ __volatile__ ( - "movs r6, #0\n\t" -#ifdef __clang__ - "mvns r6, r6\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "mvn r6, r6\n\t" -#endif - "ldr r4, [%[a]]\n\t" - "ldr r5, [%[b]]\n\t" -#ifdef __clang__ - "adds r4, r4, r5\n\t" -#else - "add r4, r4, r5\n\t" -#endif - "str r4, [%[r]]\n\t" - "ldr r4, [%[a], #4]\n\t" - "ldr r5, [%[b], #4]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #4]\n\t" - "ldr r4, [%[a], #8]\n\t" - "ldr r5, [%[b], #8]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #8]\n\t" - "ldr r4, [%[a], #12]\n\t" - "ldr r5, [%[b], #12]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #12]\n\t" - "ldr r4, [%[a], #16]\n\t" - "ldr r5, [%[b], #16]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #16]\n\t" - "ldr r4, [%[a], #20]\n\t" - "ldr r5, [%[b], #20]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #20]\n\t" - "ldr r4, [%[a], #24]\n\t" - "ldr r5, [%[b], #24]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #24]\n\t" - "ldr r4, [%[a], #28]\n\t" - "ldr r5, [%[b], #28]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #28]\n\t" - "ldr r4, [%[a], #32]\n\t" - "ldr r5, [%[b], #32]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #32]\n\t" - "ldr r4, [%[a], #36]\n\t" - "ldr r5, [%[b], #36]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #36]\n\t" - "ldr r4, [%[a], #40]\n\t" - "ldr r5, [%[b], #40]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #40]\n\t" - "ldr r4, [%[a], #44]\n\t" - "ldr r5, [%[b], #44]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #44]\n\t" - "ldr r4, [%[a], #48]\n\t" - "ldr r5, [%[b], #48]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #48]\n\t" - "ldr r4, [%[a], #52]\n\t" - "ldr r5, [%[b], #52]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #52]\n\t" - "ldr r4, [%[a], #56]\n\t" - "ldr r5, [%[b], #56]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #56]\n\t" - "ldr r4, [%[a], #60]\n\t" - "ldr r5, [%[b], #60]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #60]\n\t" - "ldr r4, [%[a], #64]\n\t" - "ldr r5, [%[b], #64]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #64]\n\t" - "ldr r4, [%[a], #68]\n\t" - "ldr r5, [%[b], #68]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #68]\n\t" - "ldr r4, [%[a], #72]\n\t" - "ldr r5, [%[b], #72]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #72]\n\t" - "ldr r4, [%[a], #76]\n\t" - "ldr r5, [%[b], #76]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #76]\n\t" - "ldr r4, [%[a], #80]\n\t" - "ldr r5, [%[b], #80]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #80]\n\t" - "ldr r4, [%[a], #84]\n\t" - "ldr r5, [%[b], #84]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #84]\n\t" - "ldr r4, [%[a], #88]\n\t" - "ldr r5, [%[b], #88]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #88]\n\t" - "ldr r4, [%[a], #92]\n\t" - "ldr r5, [%[b], #92]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #92]\n\t" - "ldr r4, [%[a], #96]\n\t" - "ldr r5, [%[b], #96]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #96]\n\t" - "ldr r4, [%[a], #100]\n\t" - "ldr r5, [%[b], #100]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #100]\n\t" - "ldr r4, [%[a], #104]\n\t" - "ldr r5, [%[b], #104]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #104]\n\t" - "ldr r4, [%[a], #108]\n\t" - "ldr r5, [%[b], #108]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #108]\n\t" - "ldr r4, [%[a], #112]\n\t" - "ldr r5, [%[b], #112]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #112]\n\t" - "ldr r4, [%[a], #116]\n\t" - "ldr r5, [%[b], #116]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #116]\n\t" - "ldr r4, [%[a], #120]\n\t" - "ldr r5, [%[b], #120]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #120]\n\t" - "ldr r4, [%[a], #124]\n\t" - "ldr r5, [%[b], #124]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #124]\n\t" - "movs r3, #0\n\t" -#ifdef __clang__ - "adcs r3, r3\n\t" -#else - "adc r3, r3\n\t" -#endif -#ifdef __clang__ - "adds %[a], %[a], #0x80\n\t" -#else - "add %[a], %[a], #0x80\n\t" -#endif -#ifdef __clang__ - "adds %[b], %[b], #0x80\n\t" -#else - "add %[b], %[b], #0x80\n\t" -#endif -#ifdef __clang__ - "adds %[r], %[r], #0x80\n\t" -#else - "add %[r], %[r], #0x80\n\t" -#endif -#ifdef __clang__ - "adds r3, r3, r6\n\t" -#else - "add r3, r3, r6\n\t" -#endif - "ldr r4, [%[a]]\n\t" - "ldr r5, [%[b]]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r]]\n\t" - "ldr r4, [%[a], #4]\n\t" - "ldr r5, [%[b], #4]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #4]\n\t" - "ldr r4, [%[a], #8]\n\t" - "ldr r5, [%[b], #8]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #8]\n\t" - "ldr r4, [%[a], #12]\n\t" - "ldr r5, [%[b], #12]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #12]\n\t" - "ldr r4, [%[a], #16]\n\t" - "ldr r5, [%[b], #16]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #16]\n\t" - "ldr r4, [%[a], #20]\n\t" - "ldr r5, [%[b], #20]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #20]\n\t" - "ldr r4, [%[a], #24]\n\t" - "ldr r5, [%[b], #24]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #24]\n\t" - "ldr r4, [%[a], #28]\n\t" - "ldr r5, [%[b], #28]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #28]\n\t" - "ldr r4, [%[a], #32]\n\t" - "ldr r5, [%[b], #32]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #32]\n\t" - "ldr r4, [%[a], #36]\n\t" - "ldr r5, [%[b], #36]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #36]\n\t" - "ldr r4, [%[a], #40]\n\t" - "ldr r5, [%[b], #40]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #40]\n\t" - "ldr r4, [%[a], #44]\n\t" - "ldr r5, [%[b], #44]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #44]\n\t" - "ldr r4, [%[a], #48]\n\t" - "ldr r5, [%[b], #48]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #48]\n\t" - "ldr r4, [%[a], #52]\n\t" - "ldr r5, [%[b], #52]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #52]\n\t" - "ldr r4, [%[a], #56]\n\t" - "ldr r5, [%[b], #56]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #56]\n\t" - "ldr r4, [%[a], #60]\n\t" - "ldr r5, [%[b], #60]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #60]\n\t" - "ldr r4, [%[a], #64]\n\t" - "ldr r5, [%[b], #64]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #64]\n\t" - "ldr r4, [%[a], #68]\n\t" - "ldr r5, [%[b], #68]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #68]\n\t" - "ldr r4, [%[a], #72]\n\t" - "ldr r5, [%[b], #72]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #72]\n\t" - "ldr r4, [%[a], #76]\n\t" - "ldr r5, [%[b], #76]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #76]\n\t" - "ldr r4, [%[a], #80]\n\t" - "ldr r5, [%[b], #80]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #80]\n\t" - "ldr r4, [%[a], #84]\n\t" - "ldr r5, [%[b], #84]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #84]\n\t" - "ldr r4, [%[a], #88]\n\t" - "ldr r5, [%[b], #88]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #88]\n\t" - "ldr r4, [%[a], #92]\n\t" - "ldr r5, [%[b], #92]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #92]\n\t" - "ldr r4, [%[a], #96]\n\t" - "ldr r5, [%[b], #96]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #96]\n\t" - "ldr r4, [%[a], #100]\n\t" - "ldr r5, [%[b], #100]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #100]\n\t" - "ldr r4, [%[a], #104]\n\t" - "ldr r5, [%[b], #104]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #104]\n\t" - "ldr r4, [%[a], #108]\n\t" - "ldr r5, [%[b], #108]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #108]\n\t" - "ldr r4, [%[a], #112]\n\t" - "ldr r5, [%[b], #112]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #112]\n\t" - "ldr r4, [%[a], #116]\n\t" - "ldr r5, [%[b], #116]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #116]\n\t" - "ldr r4, [%[a], #120]\n\t" - "ldr r5, [%[b], #120]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #120]\n\t" - "ldr r4, [%[a], #124]\n\t" - "ldr r5, [%[b], #124]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #124]\n\t" - "movs r3, #0\n\t" -#ifdef __clang__ - "adcs r3, r3\n\t" + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "movs %[r], #0\n\t" +#ifdef WOLFSSL_KEIL + "adcs %[r], %[r], %[r]\n\t" +#elif defined(__clang__) + "adcs %[r], %[r]\n\t" #else - "adc r3, r3\n\t" + "adc %[r], %[r]\n\t" #endif - "movs %[r], r3\n\t" : [r] "+r" (r), [a] "+r" (a), [b] "+r" (b) : : "memory", "r3", "r4", "r5", "r6" @@ -3224,9 +19537,269 @@ SP_NOINLINE static void sp_2048_mul_64(sp_digit* r, const sp_digit* a, u += sp_2048_sub_in_place_64(z1, z2); u += sp_2048_sub_in_place_64(z1, z0); u += sp_2048_add_64(r + 32, r + 32, z1); - r[96] = u; - XMEMSET(r + 96 + 1, 0, sizeof(sp_digit) * (32 - 1)); - (void)sp_2048_add_64(r + 64, r + 64, z2); + u += sp_2048_add_32(r + 64, r + 64, z2); + (void)sp_2048_add_to_word_32(r + 96, u, z2 + 32); +} + +/* Double a into r. (r = a + a) + * + * r A single precision integer. + * a A single precision integer. + */ +SP_NOINLINE static sp_digit sp_2048_dbl_32(sp_digit* r, const sp_digit* a) +{ + __asm__ __volatile__ ( + "ldm %[a]!, {r2, r3, r4, r5}\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r2\n\t" +#else + "add r2, r2, r2\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r3\n\t" +#elif defined(__clang__) + "adcs r3, r3\n\t" +#else + "adc r3, r3\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r4\n\t" +#elif defined(__clang__) + "adcs r4, r4\n\t" +#else + "adc r4, r4\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r5\n\t" +#elif defined(__clang__) + "adcs r5, r5\n\t" +#else + "adc r5, r5\n\t" +#endif + "stm %[r]!, {r2, r3, r4, r5}\n\t" + "ldm %[a]!, {r2, r3, r4, r5}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r2\n\t" +#elif defined(__clang__) + "adcs r2, r2\n\t" +#else + "adc r2, r2\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r3\n\t" +#elif defined(__clang__) + "adcs r3, r3\n\t" +#else + "adc r3, r3\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r4\n\t" +#elif defined(__clang__) + "adcs r4, r4\n\t" +#else + "adc r4, r4\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r5\n\t" +#elif defined(__clang__) + "adcs r5, r5\n\t" +#else + "adc r5, r5\n\t" +#endif + "stm %[r]!, {r2, r3, r4, r5}\n\t" + "ldm %[a]!, {r2, r3, r4, r5}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r2\n\t" +#elif defined(__clang__) + "adcs r2, r2\n\t" +#else + "adc r2, r2\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r3\n\t" +#elif defined(__clang__) + "adcs r3, r3\n\t" +#else + "adc r3, r3\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r4\n\t" +#elif defined(__clang__) + "adcs r4, r4\n\t" +#else + "adc r4, r4\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r5\n\t" +#elif defined(__clang__) + "adcs r5, r5\n\t" +#else + "adc r5, r5\n\t" +#endif + "stm %[r]!, {r2, r3, r4, r5}\n\t" + "ldm %[a]!, {r2, r3, r4, r5}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r2\n\t" +#elif defined(__clang__) + "adcs r2, r2\n\t" +#else + "adc r2, r2\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r3\n\t" +#elif defined(__clang__) + "adcs r3, r3\n\t" +#else + "adc r3, r3\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r4\n\t" +#elif defined(__clang__) + "adcs r4, r4\n\t" +#else + "adc r4, r4\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r5\n\t" +#elif defined(__clang__) + "adcs r5, r5\n\t" +#else + "adc r5, r5\n\t" +#endif + "stm %[r]!, {r2, r3, r4, r5}\n\t" + "ldm %[a]!, {r2, r3, r4, r5}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r2\n\t" +#elif defined(__clang__) + "adcs r2, r2\n\t" +#else + "adc r2, r2\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r3\n\t" +#elif defined(__clang__) + "adcs r3, r3\n\t" +#else + "adc r3, r3\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r4\n\t" +#elif defined(__clang__) + "adcs r4, r4\n\t" +#else + "adc r4, r4\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r5\n\t" +#elif defined(__clang__) + "adcs r5, r5\n\t" +#else + "adc r5, r5\n\t" +#endif + "stm %[r]!, {r2, r3, r4, r5}\n\t" + "ldm %[a]!, {r2, r3, r4, r5}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r2\n\t" +#elif defined(__clang__) + "adcs r2, r2\n\t" +#else + "adc r2, r2\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r3\n\t" +#elif defined(__clang__) + "adcs r3, r3\n\t" +#else + "adc r3, r3\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r4\n\t" +#elif defined(__clang__) + "adcs r4, r4\n\t" +#else + "adc r4, r4\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r5\n\t" +#elif defined(__clang__) + "adcs r5, r5\n\t" +#else + "adc r5, r5\n\t" +#endif + "stm %[r]!, {r2, r3, r4, r5}\n\t" + "ldm %[a]!, {r2, r3, r4, r5}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r2\n\t" +#elif defined(__clang__) + "adcs r2, r2\n\t" +#else + "adc r2, r2\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r3\n\t" +#elif defined(__clang__) + "adcs r3, r3\n\t" +#else + "adc r3, r3\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r4\n\t" +#elif defined(__clang__) + "adcs r4, r4\n\t" +#else + "adc r4, r4\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r5\n\t" +#elif defined(__clang__) + "adcs r5, r5\n\t" +#else + "adc r5, r5\n\t" +#endif + "stm %[r]!, {r2, r3, r4, r5}\n\t" + "ldm %[a]!, {r2, r3, r4, r5}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r2\n\t" +#elif defined(__clang__) + "adcs r2, r2\n\t" +#else + "adc r2, r2\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r3\n\t" +#elif defined(__clang__) + "adcs r3, r3\n\t" +#else + "adc r3, r3\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r4\n\t" +#elif defined(__clang__) + "adcs r4, r4\n\t" +#else + "adc r4, r4\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r5\n\t" +#elif defined(__clang__) + "adcs r5, r5\n\t" +#else + "adc r5, r5\n\t" +#endif + "stm %[r]!, {r2, r3, r4, r5}\n\t" + "movs %[r], #0\n\t" +#ifdef WOLFSSL_KEIL + "adcs %[r], %[r], %[r]\n\t" +#elif defined(__clang__) + "adcs %[r], %[r]\n\t" +#else + "adc %[r], %[r]\n\t" +#endif + : [r] "+r" (r), [a] "+r" (a) + : + : "memory", "r2", "r3", "r4", "r5" + ); + return (uint32_t)(size_t)r; } /* Square a and put result in r. (r = a * a) @@ -3247,13 +19820,12 @@ SP_NOINLINE static void sp_2048_sqr_64(sp_digit* r, const sp_digit* a) sp_2048_sqr_32(z2, &a[32]); sp_2048_sqr_32(z0, a); sp_2048_mask_32(r + 64, a1, 0 - u); - u += sp_2048_add_32(r + 64, r + 64, r + 64); + u += sp_2048_dbl_32(r + 64, r + 64); u += sp_2048_sub_in_place_64(z1, z2); u += sp_2048_sub_in_place_64(z1, z0); u += sp_2048_add_64(r + 32, r + 32, z1); - r[96] = u; - XMEMSET(r + 96 + 1, 0, sizeof(sp_digit) * (32 - 1)); - (void)sp_2048_add_64(r + 64, r + 64, z2); + u += sp_2048_add_32(r + 64, r + 64, z2); + (void)sp_2048_add_to_word_32(r + 96, u, z2 + 32); } #endif /* !WOLFSSL_SP_SMALL */ @@ -3272,53 +19844,57 @@ SP_NOINLINE static sp_digit sp_2048_add_64(sp_digit* r, const sp_digit* a, "movs r7, #0\n\t" "movs r3, #0\n\t" "movs r4, #0xff\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, #1\n\t" #else "add r4, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r7, r7, #1\n\t" #else "sub r7, r7, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r6, r6, r4\n\t" #else "add r6, r6, r4\n\t" #endif "\n" - "L_sp_2048_add_64_word_%=: \n\t" -#ifdef __clang__ + "L_sp_2048_add_64_word_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r7\n\t" #else "add r3, r3, r7\n\t" #endif "ldr r4, [%[a]]\n\t" "ldr r5, [%[b]]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) "adcs r4, r5\n\t" #else "adc r4, r5\n\t" #endif "str r4, [%[r]]\n\t" "movs r3, #0\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r3\n\t" +#elif defined(__clang__) "adcs r3, r3\n\t" #else "adc r3, r3\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[a], %[a], #4\n\t" #else "add %[a], %[a], #4\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[b], %[b], #4\n\t" #else "add %[b], %[b], #4\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[r], %[r], #4\n\t" #else "add %[r], %[r], #4\n\t" @@ -3347,20 +19923,20 @@ SP_NOINLINE static sp_digit sp_2048_sub_in_place_64(sp_digit* a, "movs r7, %[a]\n\t" "movs r2, #0\n\t" "movs r5, #0xff\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r5, r5, #1\n\t" #else "add r5, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r7, r7, r5\n\t" #else "add r7, r7, r5\n\t" #endif "\n" - "L_sp_2048_sub_in_place_64_words_%=: \n\t" + "L_sp_2048_sub_in_place_64_words_%=:\n\t" "movs r5, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r5, r5, r2\n\t" #else "sub r5, r5, r2\n\t" @@ -3369,29 +19945,35 @@ SP_NOINLINE static sp_digit sp_2048_sub_in_place_64(sp_digit* a, "ldr r4, [%[a], #4]\n\t" "ldr r5, [%[b]]\n\t" "ldr r6, [%[b], #4]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif "str r3, [%[a]]\n\t" "str r4, [%[a], #4]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r2\n\t" +#elif defined(__clang__) "sbcs r2, r2\n\t" #else "sbc r2, r2\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[a], %[a], #8\n\t" #else "add %[a], %[a], #8\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[b], %[b], #8\n\t" #else "add %[b], %[b], #8\n\t" @@ -3427,7 +20009,7 @@ SP_NOINLINE static void sp_2048_mul_64(sp_digit* r, const sp_digit* a, "mov r9, %[a]\n\t" "mov r10, %[b]\n\t" "movs r6, #0xff\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r6, r6, #1\n\t" #else "add r6, r6, #1\n\t" @@ -3435,33 +20017,37 @@ SP_NOINLINE static void sp_2048_mul_64(sp_digit* r, const sp_digit* a, "add r6, r6, r9\n\t" "mov r12, r6\n\t" "\n" - "L_sp_2048_mul_64_words_%=: \n\t" + "L_sp_2048_mul_64_words_%=:\n\t" "movs %[tmp], #0\n\t" "movs r5, #0\n\t" "movs r6, #0xfc\n\t" "mov %[a], r8\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[a], %[a], r6\n\t" #else "sub %[a], %[a], r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r6\n\t" +#elif defined(__clang__) "sbcs r6, r6\n\t" #else "sbc r6, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "mvns r6, r6\n\t" #else "mvn r6, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands %[a], %[a], r6\n\t" +#elif defined(__clang__) "ands %[a], r6\n\t" #else "and %[a], r6\n\t" #endif "mov %[b], r8\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[b], %[b], %[a]\n\t" #else "sub %[b], %[b], %[a]\n\t" @@ -3469,161 +20055,153 @@ SP_NOINLINE static void sp_2048_mul_64(sp_digit* r, const sp_digit* a, "add %[a], %[a], r9\n\t" "add %[b], %[b], r10\n\t" "\n" - "L_sp_2048_mul_64_mul_%=: \n\t" + "L_sp_2048_mul_64_mul_%=:\n\t" "# Multiply Start\n\t" - "ldr r6, [%[a]]\n\t" - "ldr r7, [%[b]]\n\t" -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsls r7, r7, #16\n\t" -#else - "lsl r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ + "ldrh r6, [%[a]]\n\t" + "ldrh r7, [%[b]]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) "muls r7, r6\n\t" #else "mul r7, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r7\n\t" #else "add r3, r3, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[tmp]\n\t" +#elif defined(__clang__) "adcs r4, %[tmp]\n\t" #else "adc r4, %[tmp]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[tmp]\n\t" +#elif defined(__clang__) "adcs r5, %[tmp]\n\t" #else "adc r5, %[tmp]\n\t" #endif "ldr r7, [%[b]]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r7, #16\n\t" #else "lsr r7, r7, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) "muls r6, r7\n\t" #else "mul r6, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r6, #16\n\t" #else "lsr r7, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #16\n\t" #else "lsl r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[tmp]\n\t" +#elif defined(__clang__) "adcs r5, %[tmp]\n\t" #else "adc r5, %[tmp]\n\t" #endif "ldr r6, [%[a]]\n\t" "ldr r7, [%[b]]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, #16\n\t" #else "lsr r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r7, #16\n\t" #else "lsr r7, r7, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) "muls r7, r6\n\t" #else "mul r7, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, r7\n\t" #else "add r4, r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[tmp]\n\t" +#elif defined(__clang__) "adcs r5, %[tmp]\n\t" #else "adc r5, %[tmp]\n\t" #endif - "ldr r7, [%[b]]\n\t" -#ifdef __clang__ - "lsls r7, r7, #16\n\t" -#else - "lsl r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ + "ldrh r7, [%[b]]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) "muls r6, r7\n\t" #else "mul r6, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r6, #16\n\t" #else "lsr r7, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #16\n\t" #else "lsl r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[tmp]\n\t" +#elif defined(__clang__) "adcs r5, %[tmp]\n\t" #else "adc r5, %[tmp]\n\t" #endif "# Multiply Done\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[a], %[a], #4\n\t" #else "add %[a], %[a], #4\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[b], %[b], #4\n\t" #else "sub %[b], %[b], #4\n\t" @@ -3635,20 +20213,20 @@ SP_NOINLINE static void sp_2048_mul_64(sp_digit* r, const sp_digit* a, "cmp %[a], r6\n\t" "ble L_sp_2048_mul_64_mul_%=\n\t" "\n" - "L_sp_2048_mul_64_done_mul_%=: \n\t" + "L_sp_2048_mul_64_done_mul_%=:\n\t" "mov %[tmp], r11\n\t" "mov r7, r8\n\t" "str r3, [%[tmp], r7]\n\t" "movs r3, r4\n\t" "movs r4, r5\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r7, r7, #4\n\t" #else "add r7, r7, #4\n\t" #endif "mov r8, r7\n\t" "movs r6, #0xff\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r6, r6, #0xf9\n\t" #else "add r6, r6, #0xf9\n\t" @@ -3680,12 +20258,12 @@ SP_NOINLINE static void sp_2048_sqr_64(sp_digit* r, const sp_digit* a) "mov r8, r3\n\t" "mov r11, %[r]\n\t" "movs r6, #2\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #8\n\t" #else "lsl r6, r6, #8\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "negs r6, r6\n\t" #else "neg r6, r6\n\t" @@ -3694,32 +20272,36 @@ SP_NOINLINE static void sp_2048_sqr_64(sp_digit* r, const sp_digit* a) "mov r10, sp\n\t" "mov r9, %[a]\n\t" "\n" - "L_sp_2048_sqr_64_words_%=: \n\t" + "L_sp_2048_sqr_64_words_%=:\n\t" "movs %[r], #0\n\t" "movs r6, #0xfc\n\t" "mov %[a], r8\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[a], %[a], r6\n\t" #else "sub %[a], %[a], r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r6\n\t" +#elif defined(__clang__) "sbcs r6, r6\n\t" #else "sbc r6, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "mvns r6, r6\n\t" #else "mvn r6, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands %[a], %[a], r6\n\t" +#elif defined(__clang__) "ands %[a], r6\n\t" #else "and %[a], r6\n\t" #endif "mov r2, r8\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r2, r2, %[a]\n\t" #else "sub r2, r2, %[a]\n\t" @@ -3727,207 +20309,213 @@ SP_NOINLINE static void sp_2048_sqr_64(sp_digit* r, const sp_digit* a) "add %[a], %[a], r9\n\t" "add r2, r2, r9\n\t" "\n" - "L_sp_2048_sqr_64_mul_%=: \n\t" + "L_sp_2048_sqr_64_mul_%=:\n\t" "cmp r2, %[a]\n\t" "beq L_sp_2048_sqr_64_sqr_%=\n\t" "# Multiply * 2: Start\n\t" - "ldr r6, [%[a]]\n\t" - "ldr r7, [r2]\n\t" -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsls r7, r7, #16\n\t" -#else - "lsl r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ + "ldrh r6, [%[a]]\n\t" + "ldrh r7, [r2]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) "muls r7, r6\n\t" #else "mul r7, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r7\n\t" #else "add r3, r3, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) "adcs r4, %[r]\n\t" #else "adc r4, %[r]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r7\n\t" #else "add r3, r3, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) "adcs r4, %[r]\n\t" #else "adc r4, %[r]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif "ldr r7, [r2]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r7, #16\n\t" #else "lsr r7, r7, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) "muls r6, r7\n\t" #else "mul r6, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r6, #16\n\t" #else "lsr r7, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #16\n\t" #else "lsl r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif "ldr r6, [%[a]]\n\t" "ldr r7, [r2]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, #16\n\t" #else "lsr r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r7, #16\n\t" #else "lsr r7, r7, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) "muls r7, r6\n\t" #else "mul r7, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, r7\n\t" #else "add r4, r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, r7\n\t" #else "add r4, r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif - "ldr r7, [r2]\n\t" -#ifdef __clang__ - "lsls r7, r7, #16\n\t" -#else - "lsl r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ + "ldrh r7, [r2]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) "muls r6, r7\n\t" #else "mul r6, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r6, #16\n\t" #else "lsr r7, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #16\n\t" #else "lsl r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" @@ -3935,120 +20523,107 @@ SP_NOINLINE static void sp_2048_sqr_64(sp_digit* r, const sp_digit* a) "# Multiply * 2: Done\n\t" "bal L_sp_2048_sqr_64_done_sqr_%=\n\t" "\n" - "L_sp_2048_sqr_64_sqr_%=: \n\t" + "L_sp_2048_sqr_64_sqr_%=:\n\t" + "mov r12, r2\n\t" + "ldr r2, [%[a]]\n\t" "# Square: Start\n\t" - "ldr r6, [%[a]]\n\t" -#ifdef __clang__ - "lsrs r7, r6, #16\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r2, #16\n\t" #else - "lsr r7, r6, #16\n\t" + "lsr r7, r2, #16\n\t" #endif -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ + "uxth r6, r2\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r6, r6\n\t" +#elif defined(__clang__) "muls r6, r6\n\t" #else "mul r6, r6\n\t" #endif -#ifdef __clang__ - "adds r3, r3, r6\n\t" -#else - "add r3, r3, r6\n\t" -#endif -#ifdef __clang__ - "adcs r4, %[r]\n\t" -#else - "adc r4, %[r]\n\t" -#endif -#ifdef __clang__ - "adcs r5, %[r]\n\t" -#else - "adc r5, %[r]\n\t" -#endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r7, r7, r7\n\t" +#elif defined(__clang__) "muls r7, r7\n\t" #else "mul r7, r7\n\t" #endif -#ifdef __clang__ - "adds r4, r4, r7\n\t" -#else - "add r4, r4, r7\n\t" -#endif -#ifdef __clang__ - "adcs r5, %[r]\n\t" -#else - "adc r5, %[r]\n\t" -#endif - "ldr r6, [%[a]]\n\t" -#ifdef __clang__ - "lsrs r7, r6, #16\n\t" -#else - "lsr r7, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "muls r6, r7\n\t" -#else - "mul r6, r7\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r6, #15\n\t" -#else - "lsr r7, r6, #15\n\t" -#endif -#ifdef __clang__ - "lsls r6, r6, #17\n\t" -#else - "lsl r6, r6, #17\n\t" -#endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r2, #16\n\t" +#else + "lsr r7, r2, #16\n\t" +#endif + "uxth r6, r2\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #15\n\t" +#else + "lsr r7, r6, #15\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #17\n\t" +#else + "lsl r6, r6, #17\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif "# Square: Done\n\t" + "mov r2, r12\n\t" "\n" - "L_sp_2048_sqr_64_done_sqr_%=: \n\t" -#ifdef __clang__ + "L_sp_2048_sqr_64_done_sqr_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[a], %[a], #4\n\t" #else "add %[a], %[a], #4\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r2, r2, #4\n\t" #else "sub r2, r2, #4\n\t" #endif "movs r6, #0xff\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r6, r6, #1\n\t" #else "add r6, r6, #1\n\t" @@ -4063,21 +20638,21 @@ SP_NOINLINE static void sp_2048_sqr_64(sp_digit* r, const sp_digit* a) "cmp %[a], r7\n\t" "ble L_sp_2048_sqr_64_mul_%=\n\t" "\n" - "L_sp_2048_sqr_64_done_mul_%=: \n\t" + "L_sp_2048_sqr_64_done_mul_%=:\n\t" "mov %[r], r10\n\t" "mov r7, r8\n\t" "str r3, [%[r], r7]\n\t" "movs r3, r4\n\t" "movs r4, r5\n\t" "movs r5, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r7, r7, #4\n\t" #else "add r7, r7, #4\n\t" #endif "mov r8, r7\n\t" "movs r6, #0xff\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r6, r6, #0xf9\n\t" #else "add r6, r6, #0xf9\n\t" @@ -4089,23 +20664,23 @@ SP_NOINLINE static void sp_2048_sqr_64(sp_digit* r, const sp_digit* a) "mov %[r], r11\n\t" "mov %[a], r10\n\t" "movs r3, #0xff\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, #0xfd\n\t" #else "add r3, r3, #0xfd\n\t" #endif "\n" - "L_sp_2048_sqr_64_store_%=: \n\t" + "L_sp_2048_sqr_64_store_%=:\n\t" "ldr r6, [%[a], r3]\n\t" "str r6, [%[r], r3]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r3, r3, #4\n\t" #else "sub r3, r3, #4\n\t" #endif "bge L_sp_2048_sqr_64_store_%=\n\t" "movs r6, #2\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #8\n\t" #else "lsl r6, r6, #8\n\t" @@ -4113,7 +20688,7 @@ SP_NOINLINE static void sp_2048_sqr_64(sp_digit* r, const sp_digit* a) "add sp, sp, r6\n\t" : [r] "+r" (r), [a] "+r" (a) : - : "memory", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11" + : "memory", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12" ); } @@ -4150,48 +20725,52 @@ SP_NOINLINE static sp_digit sp_2048_add_32(sp_digit* r, const sp_digit* a, "movs r6, %[a]\n\t" "movs r7, #0\n\t" "movs r3, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r6, r6, #0x80\n\t" #else "add r6, r6, #0x80\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r7, r7, #1\n\t" #else "sub r7, r7, #1\n\t" #endif "\n" - "L_sp_2048_add_32_word_%=: \n\t" -#ifdef __clang__ + "L_sp_2048_add_32_word_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r7\n\t" #else "add r3, r3, r7\n\t" #endif "ldr r4, [%[a]]\n\t" "ldr r5, [%[b]]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) "adcs r4, r5\n\t" #else "adc r4, r5\n\t" #endif "str r4, [%[r]]\n\t" "movs r3, #0\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r3\n\t" +#elif defined(__clang__) "adcs r3, r3\n\t" #else "adc r3, r3\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[a], %[a], #4\n\t" #else "add %[a], %[a], #4\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[b], %[b], #4\n\t" #else "add %[b], %[b], #4\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[r], %[r], #4\n\t" #else "add %[r], %[r], #4\n\t" @@ -4219,15 +20798,15 @@ SP_NOINLINE static sp_digit sp_2048_sub_in_place_32(sp_digit* a, __asm__ __volatile__ ( "movs r7, %[a]\n\t" "movs r2, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r7, r7, #0x80\n\t" #else "add r7, r7, #0x80\n\t" #endif "\n" - "L_sp_2048_sub_in_place_32_words_%=: \n\t" + "L_sp_2048_sub_in_place_32_words_%=:\n\t" "movs r5, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r5, r5, r2\n\t" #else "sub r5, r5, r2\n\t" @@ -4236,29 +20815,35 @@ SP_NOINLINE static sp_digit sp_2048_sub_in_place_32(sp_digit* a, "ldr r4, [%[a], #4]\n\t" "ldr r5, [%[b]]\n\t" "ldr r6, [%[b], #4]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif "str r3, [%[a]]\n\t" "str r4, [%[a], #4]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r2\n\t" +#elif defined(__clang__) "sbcs r2, r2\n\t" #else "sbc r2, r2\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[a], %[a], #8\n\t" #else "add %[a], %[a], #8\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[b], %[b], #8\n\t" #else "add %[b], %[b], #8\n\t" @@ -4297,33 +20882,37 @@ SP_NOINLINE static void sp_2048_mul_32(sp_digit* r, const sp_digit* a, "add r6, r6, r9\n\t" "mov r12, r6\n\t" "\n" - "L_sp_2048_mul_32_words_%=: \n\t" + "L_sp_2048_mul_32_words_%=:\n\t" "movs %[tmp], #0\n\t" "movs r5, #0\n\t" "movs r6, #0x7c\n\t" "mov %[a], r8\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[a], %[a], r6\n\t" #else "sub %[a], %[a], r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r6\n\t" +#elif defined(__clang__) "sbcs r6, r6\n\t" #else "sbc r6, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "mvns r6, r6\n\t" #else "mvn r6, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands %[a], %[a], r6\n\t" +#elif defined(__clang__) "ands %[a], r6\n\t" #else "and %[a], r6\n\t" #endif "mov %[b], r8\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[b], %[b], %[a]\n\t" #else "sub %[b], %[b], %[a]\n\t" @@ -4331,161 +20920,153 @@ SP_NOINLINE static void sp_2048_mul_32(sp_digit* r, const sp_digit* a, "add %[a], %[a], r9\n\t" "add %[b], %[b], r10\n\t" "\n" - "L_sp_2048_mul_32_mul_%=: \n\t" + "L_sp_2048_mul_32_mul_%=:\n\t" "# Multiply Start\n\t" - "ldr r6, [%[a]]\n\t" - "ldr r7, [%[b]]\n\t" -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsls r7, r7, #16\n\t" -#else - "lsl r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ + "ldrh r6, [%[a]]\n\t" + "ldrh r7, [%[b]]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) "muls r7, r6\n\t" #else "mul r7, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r7\n\t" #else "add r3, r3, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[tmp]\n\t" +#elif defined(__clang__) "adcs r4, %[tmp]\n\t" #else "adc r4, %[tmp]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[tmp]\n\t" +#elif defined(__clang__) "adcs r5, %[tmp]\n\t" #else "adc r5, %[tmp]\n\t" #endif "ldr r7, [%[b]]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r7, #16\n\t" #else "lsr r7, r7, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) "muls r6, r7\n\t" #else "mul r6, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r6, #16\n\t" #else "lsr r7, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #16\n\t" #else "lsl r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[tmp]\n\t" +#elif defined(__clang__) "adcs r5, %[tmp]\n\t" #else "adc r5, %[tmp]\n\t" #endif "ldr r6, [%[a]]\n\t" "ldr r7, [%[b]]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, #16\n\t" #else "lsr r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r7, #16\n\t" #else "lsr r7, r7, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) "muls r7, r6\n\t" #else "mul r7, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, r7\n\t" #else "add r4, r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[tmp]\n\t" +#elif defined(__clang__) "adcs r5, %[tmp]\n\t" #else "adc r5, %[tmp]\n\t" #endif - "ldr r7, [%[b]]\n\t" -#ifdef __clang__ - "lsls r7, r7, #16\n\t" -#else - "lsl r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ + "ldrh r7, [%[b]]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) "muls r6, r7\n\t" #else "mul r6, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r6, #16\n\t" #else "lsr r7, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #16\n\t" #else "lsl r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[tmp]\n\t" +#elif defined(__clang__) "adcs r5, %[tmp]\n\t" #else "adc r5, %[tmp]\n\t" #endif "# Multiply Done\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[a], %[a], #4\n\t" #else "add %[a], %[a], #4\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[b], %[b], #4\n\t" #else "sub %[b], %[b], #4\n\t" @@ -4497,13 +21078,13 @@ SP_NOINLINE static void sp_2048_mul_32(sp_digit* r, const sp_digit* a, "cmp %[a], r6\n\t" "ble L_sp_2048_mul_32_mul_%=\n\t" "\n" - "L_sp_2048_mul_32_done_mul_%=: \n\t" + "L_sp_2048_mul_32_done_mul_%=:\n\t" "mov %[tmp], r11\n\t" "mov r7, r8\n\t" "str r3, [%[tmp], r7]\n\t" "movs r3, r4\n\t" "movs r4, r5\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r7, r7, #4\n\t" #else "add r7, r7, #4\n\t" @@ -4537,12 +21118,12 @@ SP_NOINLINE static void sp_2048_sqr_32(sp_digit* r, const sp_digit* a) "mov r8, r3\n\t" "mov r11, %[r]\n\t" "movs r6, #0xff\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r6, r6, #1\n\t" #else "add r6, r6, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "negs r6, r6\n\t" #else "neg r6, r6\n\t" @@ -4551,32 +21132,36 @@ SP_NOINLINE static void sp_2048_sqr_32(sp_digit* r, const sp_digit* a) "mov r10, sp\n\t" "mov r9, %[a]\n\t" "\n" - "L_sp_2048_sqr_32_words_%=: \n\t" + "L_sp_2048_sqr_32_words_%=:\n\t" "movs %[r], #0\n\t" "movs r6, #0x7c\n\t" "mov %[a], r8\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[a], %[a], r6\n\t" #else "sub %[a], %[a], r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r6\n\t" +#elif defined(__clang__) "sbcs r6, r6\n\t" #else "sbc r6, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "mvns r6, r6\n\t" #else "mvn r6, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands %[a], %[a], r6\n\t" +#elif defined(__clang__) "ands %[a], r6\n\t" #else "and %[a], r6\n\t" #endif "mov r2, r8\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r2, r2, %[a]\n\t" #else "sub r2, r2, %[a]\n\t" @@ -4584,207 +21169,213 @@ SP_NOINLINE static void sp_2048_sqr_32(sp_digit* r, const sp_digit* a) "add %[a], %[a], r9\n\t" "add r2, r2, r9\n\t" "\n" - "L_sp_2048_sqr_32_mul_%=: \n\t" + "L_sp_2048_sqr_32_mul_%=:\n\t" "cmp r2, %[a]\n\t" "beq L_sp_2048_sqr_32_sqr_%=\n\t" "# Multiply * 2: Start\n\t" - "ldr r6, [%[a]]\n\t" - "ldr r7, [r2]\n\t" -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsls r7, r7, #16\n\t" -#else - "lsl r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ + "ldrh r6, [%[a]]\n\t" + "ldrh r7, [r2]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) "muls r7, r6\n\t" #else "mul r7, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r7\n\t" #else "add r3, r3, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) "adcs r4, %[r]\n\t" #else "adc r4, %[r]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r7\n\t" #else "add r3, r3, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) "adcs r4, %[r]\n\t" #else "adc r4, %[r]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif "ldr r7, [r2]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r7, #16\n\t" #else "lsr r7, r7, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) "muls r6, r7\n\t" #else "mul r6, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r6, #16\n\t" #else "lsr r7, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #16\n\t" #else "lsl r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif "ldr r6, [%[a]]\n\t" "ldr r7, [r2]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, #16\n\t" #else "lsr r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r7, #16\n\t" #else "lsr r7, r7, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) "muls r7, r6\n\t" #else "mul r7, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, r7\n\t" #else "add r4, r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, r7\n\t" #else "add r4, r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif - "ldr r7, [r2]\n\t" -#ifdef __clang__ - "lsls r7, r7, #16\n\t" -#else - "lsl r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ + "ldrh r7, [r2]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) "muls r6, r7\n\t" #else "mul r6, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r6, #16\n\t" #else "lsr r7, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #16\n\t" #else "lsl r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" @@ -4792,114 +21383,101 @@ SP_NOINLINE static void sp_2048_sqr_32(sp_digit* r, const sp_digit* a) "# Multiply * 2: Done\n\t" "bal L_sp_2048_sqr_32_done_sqr_%=\n\t" "\n" - "L_sp_2048_sqr_32_sqr_%=: \n\t" + "L_sp_2048_sqr_32_sqr_%=:\n\t" + "mov r12, r2\n\t" + "ldr r2, [%[a]]\n\t" "# Square: Start\n\t" - "ldr r6, [%[a]]\n\t" -#ifdef __clang__ - "lsrs r7, r6, #16\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r2, #16\n\t" #else - "lsr r7, r6, #16\n\t" + "lsr r7, r2, #16\n\t" #endif -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ + "uxth r6, r2\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r6, r6\n\t" +#elif defined(__clang__) "muls r6, r6\n\t" #else "mul r6, r6\n\t" #endif -#ifdef __clang__ - "adds r3, r3, r6\n\t" -#else - "add r3, r3, r6\n\t" -#endif -#ifdef __clang__ - "adcs r4, %[r]\n\t" -#else - "adc r4, %[r]\n\t" -#endif -#ifdef __clang__ - "adcs r5, %[r]\n\t" -#else - "adc r5, %[r]\n\t" -#endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r7, r7, r7\n\t" +#elif defined(__clang__) "muls r7, r7\n\t" #else "mul r7, r7\n\t" #endif -#ifdef __clang__ - "adds r4, r4, r7\n\t" -#else - "add r4, r4, r7\n\t" -#endif -#ifdef __clang__ - "adcs r5, %[r]\n\t" -#else - "adc r5, %[r]\n\t" -#endif - "ldr r6, [%[a]]\n\t" -#ifdef __clang__ - "lsrs r7, r6, #16\n\t" -#else - "lsr r7, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "muls r6, r7\n\t" -#else - "mul r6, r7\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r6, #15\n\t" -#else - "lsr r7, r6, #15\n\t" -#endif -#ifdef __clang__ - "lsls r6, r6, #17\n\t" -#else - "lsl r6, r6, #17\n\t" -#endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r2, #16\n\t" +#else + "lsr r7, r2, #16\n\t" +#endif + "uxth r6, r2\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #15\n\t" +#else + "lsr r7, r6, #15\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #17\n\t" +#else + "lsl r6, r6, #17\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif "# Square: Done\n\t" + "mov r2, r12\n\t" "\n" - "L_sp_2048_sqr_32_done_sqr_%=: \n\t" -#ifdef __clang__ + "L_sp_2048_sqr_32_done_sqr_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[a], %[a], #4\n\t" #else "add %[a], %[a], #4\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r2, r2, #4\n\t" #else "sub r2, r2, #4\n\t" @@ -4915,14 +21493,14 @@ SP_NOINLINE static void sp_2048_sqr_32(sp_digit* r, const sp_digit* a) "cmp %[a], r7\n\t" "ble L_sp_2048_sqr_32_mul_%=\n\t" "\n" - "L_sp_2048_sqr_32_done_mul_%=: \n\t" + "L_sp_2048_sqr_32_done_mul_%=:\n\t" "mov %[r], r10\n\t" "mov r7, r8\n\t" "str r3, [%[r], r7]\n\t" "movs r3, r4\n\t" "movs r4, r5\n\t" "movs r5, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r7, r7, #4\n\t" #else "add r7, r7, #4\n\t" @@ -4937,17 +21515,17 @@ SP_NOINLINE static void sp_2048_sqr_32(sp_digit* r, const sp_digit* a) "mov %[a], r10\n\t" "movs r3, #0xfc\n\t" "\n" - "L_sp_2048_sqr_32_store_%=: \n\t" + "L_sp_2048_sqr_32_store_%=:\n\t" "ldr r6, [%[a], r3]\n\t" "str r6, [%[r], r3]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r3, r3, #4\n\t" #else "sub r3, r3, #4\n\t" #endif "bge L_sp_2048_sqr_32_store_%=\n\t" "movs r6, #0xff\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r6, r6, #1\n\t" #else "add r6, r6, #1\n\t" @@ -4955,7 +21533,7 @@ SP_NOINLINE static void sp_2048_sqr_32(sp_digit* r, const sp_digit* a) "add sp, sp, r6\n\t" : [r] "+r" (r), [a] "+r" (a) : - : "memory", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11" + : "memory", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12" ); } @@ -4993,12 +21571,12 @@ SP_NOINLINE static void sp_2048_mul_d_64(sp_digit* r, const sp_digit* a, { __asm__ __volatile__ ( "movs r6, #0xff\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r6, r6, #1\n\t" #else "add r6, r6, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r6, r6, %[a]\n\t" #else "add r6, r6, %[a]\n\t" @@ -5008,148 +21586,142 @@ SP_NOINLINE static void sp_2048_mul_d_64(sp_digit* r, const sp_digit* a, "movs r3, #0\n\t" "movs r4, #0\n\t" "\n" - "L_sp_2048_mul_d_64_%=: \n\t" + "L_sp_2048_mul_d_64_%=:\n\t" "movs %[r], #0\n\t" "movs r5, #0\n\t" "# A[] * B\n\t" - "ldr r6, [%[a]]\n\t" -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsls r7, %[b], #16\n\t" -#else - "lsl r7, %[b], #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ + "ldrh r6, [%[a]]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) "muls r7, r6\n\t" #else "mul r7, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r7\n\t" #else "add r3, r3, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) "adcs r4, %[r]\n\t" #else "adc r4, %[r]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, %[b], #16\n\t" #else "lsr r7, %[b], #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) "muls r6, r7\n\t" #else "mul r6, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r6, #16\n\t" #else "lsr r7, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #16\n\t" #else "lsl r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif "ldr r6, [%[a]]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, #16\n\t" #else "lsr r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, %[b], #16\n\t" #else "lsr r7, %[b], #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) "muls r7, r6\n\t" #else "mul r7, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, r7\n\t" #else "add r4, r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif -#ifdef __clang__ - "lsls r7, %[b], #16\n\t" -#else - "lsl r7, %[b], #16\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) "muls r6, r7\n\t" #else "mul r6, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r6, #16\n\t" #else "lsr r7, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #16\n\t" #else "lsl r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" @@ -5159,12 +21731,12 @@ SP_NOINLINE static void sp_2048_mul_d_64(sp_digit* r, const sp_digit* a, "str r3, [%[r]]\n\t" "movs r3, r4\n\t" "movs r4, r5\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[r], %[r], #4\n\t" #else "add %[r], %[r], #4\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[a], %[a], #4\n\t" #else "add %[a], %[a], #4\n\t" @@ -5211,32 +21783,38 @@ SP_NOINLINE static sp_digit sp_2048_cond_sub_32(sp_digit* r, const sp_digit* a, "mov r8, r5\n\t" "movs r7, #0\n\t" "\n" - "L_sp_2048_cond_sub_32_words_%=: \n\t" + "L_sp_2048_cond_sub_32_words_%=:\n\t" "ldr r6, [%[b], r7]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, %[m]\n\t" +#elif defined(__clang__) "ands r6, %[m]\n\t" #else "and r6, %[m]\n\t" #endif "movs r5, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r5, r5, r4\n\t" #else "sub r5, r5, r4\n\t" #endif "ldr r5, [%[a], r7]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) "sbcs r5, r6\n\t" #else "sbc r5, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r4\n\t" +#elif defined(__clang__) "sbcs r4, r4\n\t" #else "sbc r4, r4\n\t" #endif "str r5, [%[r], r7]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r7, r7, #4\n\t" #else "add r7, r7, #4\n\t" @@ -5260,374 +21838,1061 @@ SP_NOINLINE static sp_digit sp_2048_cond_sub_32(sp_digit* r, const sp_digit* a, SP_NOINLINE static void sp_2048_mont_reduce_32(sp_digit* a, const sp_digit* m, sp_digit mp) { - sp_digit ca = 0; __asm__ __volatile__ ( + "movs r7, #0\n\t" "mov r8, %[mp]\n\t" - "mov r12, %[ca]\n\t" + "mov r12, r7\n\t" "mov lr, %[m]\n\t" "mov r9, %[a]\n\t" + "mov r11, %[a]\n\t" + "movs r5, #0x7c\n\t" + "movs r6, #0x80\n\t" + "add r9, r9, r5\n\t" + "add r11, r11, r6\n\t" + "\n" + "L_sp_2048_mont_reduce_32_mod_%=:\n\t" + "movs r7, #0\n\t" "movs r4, #0\n\t" - "# i = 0\n\t" - "mov r11, r4\n\t" - "\n" - "L_sp_2048_mont_reduce_32_mod_%=: \n\t" - "movs r5, #0\n\t" - "movs %[ca], #0\n\t" + "# a[i] += m[0] * mu\n\t" + "ldm %[m]!, {%[mp]}\n\t" + "ldm %[a]!, {r3}\n\t" "# mu = a[i] * mp\n\t" - "mov %[mp], r8\n\t" - "ldr %[a], [%[a]]\n\t" -#ifdef __clang__ - "muls %[mp], %[a]\n\t" + "mov r5, r8\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r3, r5\n\t" +#elif defined(__clang__) + "muls r5, r3\n\t" #else - "mul %[mp], %[a]\n\t" + "mul r5, r3\n\t" #endif - "mov %[m], lr\n\t" - "mov r10, r9\n\t" - "\n" - "L_sp_2048_mont_reduce_32_word_%=: \n\t" - "# a[i+j] += m[j] * mu\n\t" - "mov %[a], r10\n\t" - "ldr %[a], [%[a]]\n\t" - "movs %[ca], #0\n\t" - "movs r4, r5\n\t" - "movs r5, #0\n\t" - "# Multiply m[j] and mu - Start\n\t" - "ldr r7, [%[m]]\n\t" -#ifdef __clang__ - "lsls r6, %[mp], #16\n\t" + "mov r10, r5\n\t" + "# Multiply m[0] and mu - Start\n\t" + "mov r5, r10\n\t" + "uxth r6, %[mp]\n\t" + "uxth r5, r5\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" #else - "lsl r6, %[mp], #16\n\t" + "mul r6, r5\n\t" #endif -#ifdef __clang__ - "lsls r7, r7, #16\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" #else - "lsl r7, r7, #16\n\t" + "add r3, r3, r6\n\t" #endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" #else - "lsr r6, r6, #16\n\t" + "adc r4, r7\n\t" #endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "muls r7, r6\n\t" -#else - "mul r7, r6\n\t" -#endif -#ifdef __clang__ - "adds %[a], %[a], r7\n\t" -#else - "add %[a], %[a], r7\n\t" -#endif -#ifdef __clang__ - "adcs r5, %[ca]\n\t" -#else - "adc r5, %[ca]\n\t" -#endif - "ldr r7, [%[m]]\n\t" -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "muls r6, r7\n\t" -#else - "mul r6, r7\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r6, #16\n\t" -#else - "lsr r7, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "adds %[a], %[a], r6\n\t" -#else - "add %[a], %[a], r6\n\t" -#endif -#ifdef __clang__ - "adcs r5, r7\n\t" -#else - "adc r5, r7\n\t" -#endif - "ldr r7, [%[m]]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, %[mp], #16\n\t" #else "lsr r6, %[mp], #16\n\t" #endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" #else - "lsr r7, r7, #16\n\t" + "mul r5, r6\n\t" #endif -#ifdef __clang__ - "muls r7, r6\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" #else - "mul r7, r6\n\t" + "lsr r6, r5, #16\n\t" #endif -#ifdef __clang__ - "adds r5, r5, r7\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" #else - "add r5, r5, r7\n\t" + "lsl r5, r5, #16\n\t" #endif - "ldr r7, [%[m]]\n\t" -#ifdef __clang__ - "lsls r7, r7, #16\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" #else - "lsl r7, r7, #16\n\t" + "add r3, r3, r5\n\t" #endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "lsr r7, r7, #16\n\t" + "adc r4, r6\n\t" #endif -#ifdef __clang__ - "muls r6, r7\n\t" + "mov r5, r10\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[mp], #16\n\t" #else - "mul r6, r7\n\t" + "lsr r6, %[mp], #16\n\t" #endif -#ifdef __clang__ - "lsrs r7, r6, #16\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, r5, #16\n\t" #else - "lsr r7, r6, #16\n\t" + "lsr r5, r5, #16\n\t" #endif -#ifdef __clang__ - "lsls r6, r6, #16\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" #else - "lsl r6, r6, #16\n\t" + "mul r6, r5\n\t" #endif -#ifdef __clang__ - "adds %[a], %[a], r6\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" #else - "add %[a], %[a], r6\n\t" + "add r4, r4, r6\n\t" #endif -#ifdef __clang__ - "adcs r5, r7\n\t" + "uxth r6, %[mp]\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" #else - "adc r5, r7\n\t" + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "# Multiply m[0] and mu - Done\n\t" + "\n" + "L_sp_2048_mont_reduce_32_word_%=:\n\t" + "# a[i+j] += m[j] * mu\n\t" + "ldr r3, [%[a]]\n\t" + "ldm %[m]!, {%[mp]}\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r4\n\t" +#else + "add r3, r3, r4\n\t" +#endif + "movs r4, #0\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif + "# Multiply m[j] and mu - Start\n\t" + "mov r5, r10\n\t" + "uxth r6, %[mp]\n\t" + "uxth r5, r5\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[mp], #16\n\t" +#else + "lsr r6, %[mp], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "mov r5, r10\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[mp], #16\n\t" +#else + "lsr r6, %[mp], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, r5, #16\n\t" +#else + "lsr r5, r5, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif + "uxth r6, %[mp]\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" #endif "# Multiply m[j] and mu - Done\n\t" -#ifdef __clang__ - "adds r4, r4, %[a]\n\t" -#else - "add r4, r4, %[a]\n\t" -#endif -#ifdef __clang__ - "adcs r5, %[ca]\n\t" -#else - "adc r5, %[ca]\n\t" -#endif - "mov %[a], r10\n\t" - "str r4, [%[a]]\n\t" - "movs r6, #4\n\t" -#ifdef __clang__ - "adds %[m], %[m], #4\n\t" -#else - "add %[m], %[m], #4\n\t" -#endif - "add r10, r10, r6\n\t" - "movs r4, #0x7c\n\t" - "add r4, r4, r9\n\t" - "cmp r10, r4\n\t" + "stm %[a]!, {r3}\n\t" + "cmp %[a], r9\n\t" "blt L_sp_2048_mont_reduce_32_word_%=\n\t" "# a[i+31] += m[31] * mu\n\t" - "movs %[ca], #0\n\t" - "mov r4, r12\n\t" - "movs %[a], #0\n\t" + "ldr %[mp], [%[m]]\n\t" + "mov r3, r12\n\t" "# Multiply m[31] and mu - Start\n\t" - "ldr r7, [%[m]]\n\t" -#ifdef __clang__ - "lsls r6, %[mp], #16\n\t" + "mov r5, r10\n\t" + "uxth r6, %[mp]\n\t" + "uxth r5, r5\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" #else - "lsl r6, %[mp], #16\n\t" + "mul r6, r5\n\t" #endif -#ifdef __clang__ - "lsls r7, r7, #16\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" #else - "lsl r7, r7, #16\n\t" + "add r4, r4, r6\n\t" #endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" #else - "lsr r6, r6, #16\n\t" + "adc r3, r7\n\t" #endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r7\n\t" +#elif defined(__clang__) + "adcs r7, r7\n\t" #else - "lsr r7, r7, #16\n\t" + "adc r7, r7\n\t" #endif -#ifdef __clang__ - "muls r7, r6\n\t" -#else - "mul r7, r6\n\t" -#endif -#ifdef __clang__ - "adds r5, r5, r7\n\t" -#else - "add r5, r5, r7\n\t" -#endif -#ifdef __clang__ - "adcs r4, %[ca]\n\t" -#else - "adc r4, %[ca]\n\t" -#endif -#ifdef __clang__ - "adcs %[a], %[ca]\n\t" -#else - "adc %[a], %[ca]\n\t" -#endif - "ldr r7, [%[m]]\n\t" -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "muls r6, r7\n\t" -#else - "mul r6, r7\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r6, #16\n\t" -#else - "lsr r7, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "adds r5, r5, r6\n\t" -#else - "add r5, r5, r6\n\t" -#endif -#ifdef __clang__ - "adcs r4, r7\n\t" -#else - "adc r4, r7\n\t" -#endif -#ifdef __clang__ - "adcs %[a], %[ca]\n\t" -#else - "adc %[a], %[ca]\n\t" -#endif - "ldr r7, [%[m]]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, %[mp], #16\n\t" #else "lsr r6, %[mp], #16\n\t" #endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" #else - "lsr r7, r7, #16\n\t" + "mul r5, r6\n\t" #endif -#ifdef __clang__ - "muls r7, r6\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" #else - "mul r7, r6\n\t" + "lsr r6, r5, #16\n\t" #endif -#ifdef __clang__ - "adds r4, r4, r7\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" #else - "add r4, r4, r7\n\t" + "lsl r5, r5, #16\n\t" #endif -#ifdef __clang__ - "adcs %[a], %[ca]\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" #else - "adc %[a], %[ca]\n\t" + "add r4, r4, r5\n\t" #endif - "ldr r7, [%[m]]\n\t" -#ifdef __clang__ - "lsls r7, r7, #16\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" #else - "lsl r7, r7, #16\n\t" + "adc r3, r6\n\t" #endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r7\n\t" +#elif defined(__clang__) + "adcs r7, r7\n\t" #else - "lsr r7, r7, #16\n\t" + "adc r7, r7\n\t" #endif -#ifdef __clang__ - "muls r6, r7\n\t" + "mov r5, r10\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[mp], #16\n\t" #else - "mul r6, r7\n\t" + "lsr r6, %[mp], #16\n\t" #endif -#ifdef __clang__ - "lsrs r7, r6, #16\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, r5, #16\n\t" #else - "lsr r7, r6, #16\n\t" + "lsr r5, r5, #16\n\t" #endif -#ifdef __clang__ - "lsls r6, r6, #16\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" #else - "lsl r6, r6, #16\n\t" + "mul r6, r5\n\t" #endif -#ifdef __clang__ - "adds r5, r5, r6\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" #else - "add r5, r5, r6\n\t" + "add r3, r3, r6\n\t" #endif -#ifdef __clang__ - "adcs r4, r7\n\t" +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r7\n\t" +#elif defined(__clang__) + "adcs r7, r7\n\t" #else - "adc r4, r7\n\t" + "adc r7, r7\n\t" #endif -#ifdef __clang__ - "adcs %[a], %[ca]\n\t" + "uxth r6, %[mp]\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" #else - "adc %[a], %[ca]\n\t" + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r7\n\t" +#elif defined(__clang__) + "adcs r7, r7\n\t" +#else + "adc r7, r7\n\t" #endif "# Multiply m[31] and mu - Done\n\t" - "movs %[ca], %[a]\n\t" - "mov %[a], r10\n\t" - "ldr r7, [%[a], #4]\n\t" - "ldr %[a], [%[a]]\n\t" - "movs r6, #0\n\t" -#ifdef __clang__ - "adds r5, r5, %[a]\n\t" + "ldr r5, [%[a]]\n\t" + "ldr r6, [%[a], #4]\n\t" + "movs %[mp], #0\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r4\n\t" #else - "add r5, r5, %[a]\n\t" + "add r5, r5, r4\n\t" #endif -#ifdef __clang__ - "adcs r7, r4\n\t" +#ifdef WOLFSSL_KEIL + "adcs r6, r6, r3\n\t" +#elif defined(__clang__) + "adcs r6, r3\n\t" #else - "adc r7, r4\n\t" + "adc r6, r3\n\t" #endif -#ifdef __clang__ - "adcs %[ca], r6\n\t" +#ifdef WOLFSSL_KEIL + "adcs r7, r7, %[mp]\n\t" +#elif defined(__clang__) + "adcs r7, %[mp]\n\t" #else - "adc %[ca], r6\n\t" + "adc r7, %[mp]\n\t" #endif - "mov %[a], r10\n\t" - "str r5, [%[a]]\n\t" - "str r7, [%[a], #4]\n\t" + "stm %[a]!, {r5, r6}\n\t" "# i += 1\n\t" - "movs r6, #4\n\t" - "add r9, r9, r6\n\t" - "add r11, r11, r6\n\t" - "mov r12, %[ca]\n\t" - "mov %[a], r9\n\t" - "movs r4, #0x80\n\t" - "cmp r11, r4\n\t" - "blt L_sp_2048_mont_reduce_32_mod_%=\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "subs %[a], %[a], #4\n\t" +#else + "sub %[a], %[a], #4\n\t" +#endif + "movs r3, #0x7c\n\t" + "mov r9, %[a]\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "subs %[a], %[a], r3\n\t" +#else + "sub %[a], %[a], r3\n\t" +#endif + "mov r12, r7\n\t" "mov %[m], lr\n\t" - : [a] "+r" (a), [m] "+r" (m), [mp] "+r" (mp), [ca] "+r" (ca) + "cmp r11, %[a]\n\t" + "bgt L_sp_2048_mont_reduce_32_mod_%=\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "negs r7, r7\n\t" +#else + "neg r7, r7\n\t" +#endif + "# Subtract masked modulus\n\t" + "movs r4, #0x80\n\t" + "movs %[mp], #0\n\t" + "movs r3, #0\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "subs %[a], %[a], r4\n\t" +#else + "sub %[a], %[a], r4\n\t" +#endif +#ifndef WOLFSSL_SP_LARGE_CODE + "\n" + "L_sp_2048_mont_reduce_32_sub_mask_%=:\n\t" + "ldm %[m]!, {r6}\n\t" + "movs r5, #0\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "subs r5, r5, %[mp]\n\t" +#else + "sub r5, r5, %[mp]\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "sbcs %[mp], %[mp], %[mp]\n\t" +#elif defined(__clang__) + "sbcs %[mp], %[mp]\n\t" +#else + "sbc %[mp], %[mp]\n\t" +#endif + "stm %[a]!, {r5}\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, #4\n\t" +#else + "add r3, r3, #4\n\t" +#endif + "cmp r3, r4\n\t" + "blt L_sp_2048_mont_reduce_32_sub_mask_%=\n\t" +#else /* WOLFSSL_SP_LARGE_CODE */ + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "subs r5, r5, r6\n\t" +#else + "sub r5, r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" +#endif /* WOLFSSL_SP_LARGE_CODE */ + : [a] "+r" (a), [m] "+r" (m), [mp] "+r" (mp) : - : "memory", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12", "lr" + : "memory", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12", "lr" ); - sp_2048_cond_sub_32(a - 32, a, m, (sp_digit)0 - ca); } /* Multiply two Montogmery form numbers mod the modulus (prime). @@ -5671,7 +22936,7 @@ SP_NOINLINE static void sp_2048_mul_d_32(sp_digit* r, const sp_digit* a, { __asm__ __volatile__ ( "movs r6, #0x80\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r6, r6, %[a]\n\t" #else "add r6, r6, %[a]\n\t" @@ -5681,148 +22946,142 @@ SP_NOINLINE static void sp_2048_mul_d_32(sp_digit* r, const sp_digit* a, "movs r3, #0\n\t" "movs r4, #0\n\t" "\n" - "L_sp_2048_mul_d_32_%=: \n\t" + "L_sp_2048_mul_d_32_%=:\n\t" "movs %[r], #0\n\t" "movs r5, #0\n\t" "# A[] * B\n\t" - "ldr r6, [%[a]]\n\t" -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsls r7, %[b], #16\n\t" -#else - "lsl r7, %[b], #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ + "ldrh r6, [%[a]]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) "muls r7, r6\n\t" #else "mul r7, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r7\n\t" #else "add r3, r3, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) "adcs r4, %[r]\n\t" #else "adc r4, %[r]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, %[b], #16\n\t" #else "lsr r7, %[b], #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) "muls r6, r7\n\t" #else "mul r6, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r6, #16\n\t" #else "lsr r7, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #16\n\t" #else "lsl r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif "ldr r6, [%[a]]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, #16\n\t" #else "lsr r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, %[b], #16\n\t" #else "lsr r7, %[b], #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) "muls r7, r6\n\t" #else "mul r7, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, r7\n\t" #else "add r4, r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif -#ifdef __clang__ - "lsls r7, %[b], #16\n\t" -#else - "lsl r7, %[b], #16\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) "muls r6, r7\n\t" #else "mul r6, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r6, #16\n\t" #else "lsr r7, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #16\n\t" #else "lsl r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" @@ -5832,12 +23091,12 @@ SP_NOINLINE static void sp_2048_mul_d_32(sp_digit* r, const sp_digit* a, "str r3, [%[r]]\n\t" "movs r3, r4\n\t" "movs r4, r5\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[r], %[r], #4\n\t" #else "add %[r], %[r], #4\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[a], %[a], #4\n\t" #else "add %[a], %[a], #4\n\t" @@ -5866,12 +23125,12 @@ SP_NOINLINE static sp_digit div_2048_word_32(sp_digit d1, sp_digit d0, { __asm__ __volatile__ ( "movs r3, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, %[div], #1\n\t" #else "lsr r5, %[div], #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r5, r5, #1\n\t" #else "add r5, r5, #1\n\t" @@ -5880,326 +23139,307 @@ SP_NOINLINE static sp_digit div_2048_word_32(sp_digit d1, sp_digit d0, "mov r9, %[d1]\n\t" "# Do top 32\n\t" "movs r6, r5\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r6, r6, %[d1]\n\t" #else "sub r6, r6, %[d1]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r6\n\t" +#elif defined(__clang__) "sbcs r6, r6\n\t" #else "sbc r6, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r3\n\t" #else "add r3, r3, r3\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r3, r3, r6\n\t" #else "sub r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, r5\n\t" +#elif defined(__clang__) "ands r6, r5\n\t" #else "and r6, r5\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[d1], %[d1], r6\n\t" #else "sub %[d1], %[d1], r6\n\t" #endif - "\n\t" "movs r4, #29\n\t" "\n" - "L_div_2048_word_32_loop_%=: \n\t" -#ifdef __clang__ + "L_div_2048_word_32_loop_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls %[d0], %[d0], #1\n\t" #else "lsl %[d0], %[d0], #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs %[d1], %[d1], %[d1]\n\t" +#elif defined(__clang__) "adcs %[d1], %[d1]\n\t" #else "adc %[d1], %[d1]\n\t" #endif "movs r6, r5\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r6, r6, %[d1]\n\t" #else "sub r6, r6, %[d1]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r6\n\t" +#elif defined(__clang__) "sbcs r6, r6\n\t" #else "sbc r6, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r3\n\t" #else "add r3, r3, r3\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r3, r3, r6\n\t" #else "sub r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, r5\n\t" +#elif defined(__clang__) "ands r6, r5\n\t" #else "and r6, r5\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[d1], %[d1], r6\n\t" #else "sub %[d1], %[d1], r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r4, r4, #1\n\t" #else "sub r4, r4, #1\n\t" #endif "bpl L_div_2048_word_32_loop_%=\n\t" "movs r7, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r3\n\t" #else "add r3, r3, r3\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, #1\n\t" #else "add r3, r3, #1\n\t" #endif "# r * div - Start\n\t" -#ifdef __clang__ - "lsls %[d1], r3, #16\n\t" -#else - "lsl %[d1], r3, #16\n\t" -#endif -#ifdef __clang__ - "lsls r4, %[div], #16\n\t" -#else - "lsl r4, %[div], #16\n\t" -#endif -#ifdef __clang__ - "lsrs %[d1], %[d1], #16\n\t" -#else - "lsr %[d1], %[d1], #16\n\t" -#endif -#ifdef __clang__ - "lsrs r4, r4, #16\n\t" -#else - "lsr r4, r4, #16\n\t" -#endif -#ifdef __clang__ + "uxth %[d1], r3\n\t" + "uxth r4, %[div]\n\t" +#ifdef WOLFSSL_KEIL + "muls r4, %[d1], r4\n\t" +#elif defined(__clang__) "muls r4, %[d1]\n\t" #else "mul r4, %[d1]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, %[div], #16\n\t" #else "lsr r6, %[div], #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls %[d1], r6, %[d1]\n\t" +#elif defined(__clang__) "muls %[d1], r6\n\t" #else "mul %[d1], r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, %[d1], #16\n\t" #else "lsr r5, %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls %[d1], %[d1], #16\n\t" #else "lsl %[d1], %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, %[d1]\n\t" #else "add r4, r4, %[d1]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs %[d1], r3, #16\n\t" #else "lsr %[d1], r3, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r6, %[d1], r6\n\t" +#elif defined(__clang__) "muls r6, %[d1]\n\t" #else "mul r6, %[d1]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r5, r5, r6\n\t" #else "add r5, r5, r6\n\t" #endif -#ifdef __clang__ - "lsls r6, %[div], #16\n\t" -#else - "lsl r6, %[div], #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ + "uxth r6, %[div]\n\t" +#ifdef WOLFSSL_KEIL + "muls %[d1], r6, %[d1]\n\t" +#elif defined(__clang__) "muls %[d1], r6\n\t" #else "mul %[d1], r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, %[d1], #16\n\t" #else "lsr r6, %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls %[d1], %[d1], #16\n\t" #else "lsl %[d1], %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, %[d1]\n\t" #else "add r4, r4, %[d1]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r6\n\t" +#elif defined(__clang__) "adcs r5, r6\n\t" #else "adc r5, r6\n\t" #endif "# r * div - Done\n\t" "mov %[d1], r8\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[d1], %[d1], r4\n\t" #else "sub %[d1], %[d1], r4\n\t" #endif "movs r4, %[d1]\n\t" "mov %[d1], r9\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs %[d1], %[d1], r5\n\t" +#elif defined(__clang__) "sbcs %[d1], r5\n\t" #else "sbc %[d1], r5\n\t" #endif "movs r5, %[d1]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r5\n\t" #else "add r3, r3, r5\n\t" #endif "# r * div - Start\n\t" -#ifdef __clang__ - "lsls %[d1], r3, #16\n\t" -#else - "lsl %[d1], r3, #16\n\t" -#endif -#ifdef __clang__ - "lsls r4, %[div], #16\n\t" -#else - "lsl r4, %[div], #16\n\t" -#endif -#ifdef __clang__ - "lsrs %[d1], %[d1], #16\n\t" -#else - "lsr %[d1], %[d1], #16\n\t" -#endif -#ifdef __clang__ - "lsrs r4, r4, #16\n\t" -#else - "lsr r4, r4, #16\n\t" -#endif -#ifdef __clang__ + "uxth %[d1], r3\n\t" + "uxth r4, %[div]\n\t" +#ifdef WOLFSSL_KEIL + "muls r4, %[d1], r4\n\t" +#elif defined(__clang__) "muls r4, %[d1]\n\t" #else "mul r4, %[d1]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, %[div], #16\n\t" #else "lsr r6, %[div], #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls %[d1], r6, %[d1]\n\t" +#elif defined(__clang__) "muls %[d1], r6\n\t" #else "mul %[d1], r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, %[d1], #16\n\t" #else "lsr r5, %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls %[d1], %[d1], #16\n\t" #else "lsl %[d1], %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, %[d1]\n\t" #else "add r4, r4, %[d1]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs %[d1], r3, #16\n\t" #else "lsr %[d1], r3, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r6, %[d1], r6\n\t" +#elif defined(__clang__) "muls r6, %[d1]\n\t" #else "mul r6, %[d1]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r5, r5, r6\n\t" #else "add r5, r5, r6\n\t" #endif -#ifdef __clang__ - "lsls r6, %[div], #16\n\t" -#else - "lsl r6, %[div], #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ + "uxth r6, %[div]\n\t" +#ifdef WOLFSSL_KEIL + "muls %[d1], r6, %[d1]\n\t" +#elif defined(__clang__) "muls %[d1], r6\n\t" #else "mul %[d1], r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, %[d1], #16\n\t" #else "lsr r6, %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls %[d1], %[d1], #16\n\t" #else "lsl %[d1], %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, %[d1]\n\t" #else "add r4, r4, %[d1]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r6\n\t" +#elif defined(__clang__) "adcs r5, r6\n\t" #else "adc r5, r6\n\t" @@ -6207,124 +23447,115 @@ SP_NOINLINE static sp_digit div_2048_word_32(sp_digit d1, sp_digit d0, "# r * div - Done\n\t" "mov %[d1], r8\n\t" "mov r6, r9\n\t" +#ifdef WOLFSSL_KEIL + "subs r4, %[d1], r4\n\t" +#else #ifdef __clang__ "subs r4, %[d1], r4\n\t" #else "sub r4, %[d1], r4\n\t" #endif -#ifdef __clang__ +#endif +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r5\n\t" +#elif defined(__clang__) "sbcs r6, r5\n\t" #else "sbc r6, r5\n\t" #endif "movs r5, r6\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r5\n\t" #else "add r3, r3, r5\n\t" #endif "# r * div - Start\n\t" -#ifdef __clang__ - "lsls %[d1], r3, #16\n\t" -#else - "lsl %[d1], r3, #16\n\t" -#endif -#ifdef __clang__ - "lsls r4, %[div], #16\n\t" -#else - "lsl r4, %[div], #16\n\t" -#endif -#ifdef __clang__ - "lsrs %[d1], %[d1], #16\n\t" -#else - "lsr %[d1], %[d1], #16\n\t" -#endif -#ifdef __clang__ - "lsrs r4, r4, #16\n\t" -#else - "lsr r4, r4, #16\n\t" -#endif -#ifdef __clang__ + "uxth %[d1], r3\n\t" + "uxth r4, %[div]\n\t" +#ifdef WOLFSSL_KEIL + "muls r4, %[d1], r4\n\t" +#elif defined(__clang__) "muls r4, %[d1]\n\t" #else "mul r4, %[d1]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, %[div], #16\n\t" #else "lsr r6, %[div], #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls %[d1], r6, %[d1]\n\t" +#elif defined(__clang__) "muls %[d1], r6\n\t" #else "mul %[d1], r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, %[d1], #16\n\t" #else "lsr r5, %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls %[d1], %[d1], #16\n\t" #else "lsl %[d1], %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, %[d1]\n\t" #else "add r4, r4, %[d1]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs %[d1], r3, #16\n\t" #else "lsr %[d1], r3, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r6, %[d1], r6\n\t" +#elif defined(__clang__) "muls r6, %[d1]\n\t" #else "mul r6, %[d1]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r5, r5, r6\n\t" #else "add r5, r5, r6\n\t" #endif -#ifdef __clang__ - "lsls r6, %[div], #16\n\t" -#else - "lsl r6, %[div], #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ + "uxth r6, %[div]\n\t" +#ifdef WOLFSSL_KEIL + "muls %[d1], r6, %[d1]\n\t" +#elif defined(__clang__) "muls %[d1], r6\n\t" #else "mul %[d1], r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, %[d1], #16\n\t" #else "lsr r6, %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls %[d1], %[d1], #16\n\t" #else "lsl %[d1], %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, %[d1]\n\t" #else "add r4, r4, %[d1]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r6\n\t" +#elif defined(__clang__) "adcs r5, r6\n\t" #else "adc r5, r6\n\t" @@ -6332,34 +23563,42 @@ SP_NOINLINE static sp_digit div_2048_word_32(sp_digit d1, sp_digit d0, "# r * div - Done\n\t" "mov %[d1], r8\n\t" "mov r6, r9\n\t" +#ifdef WOLFSSL_KEIL + "subs r4, %[d1], r4\n\t" +#else #ifdef __clang__ "subs r4, %[d1], r4\n\t" #else "sub r4, %[d1], r4\n\t" #endif -#ifdef __clang__ +#endif +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r5\n\t" +#elif defined(__clang__) "sbcs r6, r5\n\t" #else "sbc r6, r5\n\t" #endif "movs r5, r6\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r5\n\t" #else "add r3, r3, r5\n\t" #endif "movs r6, %[div]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r6, r6, r4\n\t" #else "sub r6, r6, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r6\n\t" +#elif defined(__clang__) "sbcs r6, r6\n\t" #else "sbc r6, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r3, r3, r6\n\t" #else "sub r3, r3, r6\n\t" @@ -6384,78 +23623,90 @@ SP_NOINLINE static sp_int32 sp_2048_cmp_32(const sp_digit* a, const sp_digit* b) __asm__ __volatile__ ( "movs r2, #0\n\t" "movs r3, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "mvns r3, r3\n\t" #else "mvn r3, r3\n\t" #endif "movs r6, #0x7c\n\t" "\n" - "L_sp_2048_cmp_32_words_%=: \n\t" + "L_sp_2048_cmp_32_words_%=:\n\t" "ldr r7, [%[a], r6]\n\t" "ldr r5, [%[b], r6]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, r3\n\t" +#elif defined(__clang__) "ands r7, r3\n\t" #else "and r7, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r3\n\t" +#elif defined(__clang__) "ands r5, r3\n\t" #else "and r5, r3\n\t" #endif "movs r4, r7\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r7, r7, r5\n\t" #else "sub r7, r7, r5\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r7, r7, r7\n\t" +#elif defined(__clang__) "sbcs r7, r7\n\t" #else "sbc r7, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r7\n\t" #else "add r2, r2, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "mvns r7, r7\n\t" #else "mvn r7, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r3, r3, r7\n\t" +#elif defined(__clang__) "ands r3, r7\n\t" #else "and r3, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r5, r5, r4\n\t" #else "sub r5, r5, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r7, r7, r7\n\t" +#elif defined(__clang__) "sbcs r7, r7\n\t" #else "sbc r7, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r2, r2, r7\n\t" #else "sub r2, r2, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "mvns r7, r7\n\t" #else "mvn r7, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r3, r3, r7\n\t" +#elif defined(__clang__) "ands r3, r7\n\t" #else "and r3, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r6, r6, #4\n\t" #else "sub r6, r6, #4\n\t" @@ -6852,7 +24103,7 @@ SP_NOINLINE static sp_digit sp_2048_cond_sub_64(sp_digit* r, const sp_digit* a, __asm__ __volatile__ ( "movs r4, #0\n\t" "movs r5, #0xff\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r5, r5, #1\n\t" #else "add r5, r5, #1\n\t" @@ -6860,32 +24111,38 @@ SP_NOINLINE static sp_digit sp_2048_cond_sub_64(sp_digit* r, const sp_digit* a, "mov r8, r5\n\t" "movs r7, #0\n\t" "\n" - "L_sp_2048_cond_sub_64_words_%=: \n\t" + "L_sp_2048_cond_sub_64_words_%=:\n\t" "ldr r6, [%[b], r7]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, %[m]\n\t" +#elif defined(__clang__) "ands r6, %[m]\n\t" #else "and r6, %[m]\n\t" #endif "movs r5, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r5, r5, r4\n\t" #else "sub r5, r5, r4\n\t" #endif "ldr r5, [%[a], r7]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) "sbcs r5, r6\n\t" #else "sbc r5, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r4\n\t" +#elif defined(__clang__) "sbcs r4, r4\n\t" #else "sbc r4, r4\n\t" #endif "str r5, [%[r], r7]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r7, r7, #4\n\t" #else "add r7, r7, #4\n\t" @@ -6909,379 +24166,1615 @@ SP_NOINLINE static sp_digit sp_2048_cond_sub_64(sp_digit* r, const sp_digit* a, SP_NOINLINE static void sp_2048_mont_reduce_64(sp_digit* a, const sp_digit* m, sp_digit mp) { - sp_digit ca = 0; __asm__ __volatile__ ( + "movs r7, #0\n\t" "mov r8, %[mp]\n\t" - "mov r12, %[ca]\n\t" + "mov r12, r7\n\t" "mov lr, %[m]\n\t" "mov r9, %[a]\n\t" + "mov r11, %[a]\n\t" + "movs r5, #0xfc\n\t" + "movs r6, #0xff\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r6, r6, #1\n\t" +#else + "add r6, r6, #1\n\t" +#endif + "add r9, r9, r5\n\t" + "add r11, r11, r6\n\t" + "\n" + "L_sp_2048_mont_reduce_64_mod_%=:\n\t" + "movs r7, #0\n\t" "movs r4, #0\n\t" - "# i = 0\n\t" - "mov r11, r4\n\t" - "\n" - "L_sp_2048_mont_reduce_64_mod_%=: \n\t" - "movs r5, #0\n\t" - "movs %[ca], #0\n\t" + "# a[i] += m[0] * mu\n\t" + "ldm %[m]!, {%[mp]}\n\t" + "ldm %[a]!, {r3}\n\t" "# mu = a[i] * mp\n\t" - "mov %[mp], r8\n\t" - "ldr %[a], [%[a]]\n\t" -#ifdef __clang__ - "muls %[mp], %[a]\n\t" + "mov r5, r8\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r3, r5\n\t" +#elif defined(__clang__) + "muls r5, r3\n\t" #else - "mul %[mp], %[a]\n\t" + "mul r5, r3\n\t" #endif - "mov %[m], lr\n\t" - "mov r10, r9\n\t" - "\n" - "L_sp_2048_mont_reduce_64_word_%=: \n\t" - "# a[i+j] += m[j] * mu\n\t" - "mov %[a], r10\n\t" - "ldr %[a], [%[a]]\n\t" - "movs %[ca], #0\n\t" - "movs r4, r5\n\t" - "movs r5, #0\n\t" - "# Multiply m[j] and mu - Start\n\t" - "ldr r7, [%[m]]\n\t" -#ifdef __clang__ - "lsls r6, %[mp], #16\n\t" + "mov r10, r5\n\t" + "# Multiply m[0] and mu - Start\n\t" + "mov r5, r10\n\t" + "uxth r6, %[mp]\n\t" + "uxth r5, r5\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" #else - "lsl r6, %[mp], #16\n\t" + "mul r6, r5\n\t" #endif -#ifdef __clang__ - "lsls r7, r7, #16\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" #else - "lsl r7, r7, #16\n\t" + "add r3, r3, r6\n\t" #endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" #else - "lsr r6, r6, #16\n\t" + "adc r4, r7\n\t" #endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "muls r7, r6\n\t" -#else - "mul r7, r6\n\t" -#endif -#ifdef __clang__ - "adds %[a], %[a], r7\n\t" -#else - "add %[a], %[a], r7\n\t" -#endif -#ifdef __clang__ - "adcs r5, %[ca]\n\t" -#else - "adc r5, %[ca]\n\t" -#endif - "ldr r7, [%[m]]\n\t" -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "muls r6, r7\n\t" -#else - "mul r6, r7\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r6, #16\n\t" -#else - "lsr r7, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "adds %[a], %[a], r6\n\t" -#else - "add %[a], %[a], r6\n\t" -#endif -#ifdef __clang__ - "adcs r5, r7\n\t" -#else - "adc r5, r7\n\t" -#endif - "ldr r7, [%[m]]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, %[mp], #16\n\t" #else "lsr r6, %[mp], #16\n\t" #endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" #else - "lsr r7, r7, #16\n\t" + "mul r5, r6\n\t" #endif -#ifdef __clang__ - "muls r7, r6\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" #else - "mul r7, r6\n\t" + "lsr r6, r5, #16\n\t" #endif -#ifdef __clang__ - "adds r5, r5, r7\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" #else - "add r5, r5, r7\n\t" + "lsl r5, r5, #16\n\t" #endif - "ldr r7, [%[m]]\n\t" -#ifdef __clang__ - "lsls r7, r7, #16\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" #else - "lsl r7, r7, #16\n\t" + "add r3, r3, r5\n\t" #endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "lsr r7, r7, #16\n\t" + "adc r4, r6\n\t" #endif -#ifdef __clang__ - "muls r6, r7\n\t" + "mov r5, r10\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[mp], #16\n\t" #else - "mul r6, r7\n\t" + "lsr r6, %[mp], #16\n\t" #endif -#ifdef __clang__ - "lsrs r7, r6, #16\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, r5, #16\n\t" #else - "lsr r7, r6, #16\n\t" + "lsr r5, r5, #16\n\t" #endif -#ifdef __clang__ - "lsls r6, r6, #16\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" #else - "lsl r6, r6, #16\n\t" + "mul r6, r5\n\t" #endif -#ifdef __clang__ - "adds %[a], %[a], r6\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" #else - "add %[a], %[a], r6\n\t" + "add r4, r4, r6\n\t" #endif -#ifdef __clang__ - "adcs r5, r7\n\t" + "uxth r6, %[mp]\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" #else - "adc r5, r7\n\t" + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "# Multiply m[0] and mu - Done\n\t" + "\n" + "L_sp_2048_mont_reduce_64_word_%=:\n\t" + "# a[i+j] += m[j] * mu\n\t" + "ldr r3, [%[a]]\n\t" + "ldm %[m]!, {%[mp]}\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r4\n\t" +#else + "add r3, r3, r4\n\t" +#endif + "movs r4, #0\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif + "# Multiply m[j] and mu - Start\n\t" + "mov r5, r10\n\t" + "uxth r6, %[mp]\n\t" + "uxth r5, r5\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[mp], #16\n\t" +#else + "lsr r6, %[mp], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "mov r5, r10\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[mp], #16\n\t" +#else + "lsr r6, %[mp], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, r5, #16\n\t" +#else + "lsr r5, r5, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif + "uxth r6, %[mp]\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" #endif "# Multiply m[j] and mu - Done\n\t" -#ifdef __clang__ - "adds r4, r4, %[a]\n\t" -#else - "add r4, r4, %[a]\n\t" -#endif -#ifdef __clang__ - "adcs r5, %[ca]\n\t" -#else - "adc r5, %[ca]\n\t" -#endif - "mov %[a], r10\n\t" - "str r4, [%[a]]\n\t" - "movs r6, #4\n\t" -#ifdef __clang__ - "adds %[m], %[m], #4\n\t" -#else - "add %[m], %[m], #4\n\t" -#endif - "add r10, r10, r6\n\t" - "movs r4, #0xfc\n\t" - "add r4, r4, r9\n\t" - "cmp r10, r4\n\t" + "stm %[a]!, {r3}\n\t" + "cmp %[a], r9\n\t" "blt L_sp_2048_mont_reduce_64_word_%=\n\t" "# a[i+63] += m[63] * mu\n\t" - "movs %[ca], #0\n\t" - "mov r4, r12\n\t" - "movs %[a], #0\n\t" + "ldr %[mp], [%[m]]\n\t" + "mov r3, r12\n\t" "# Multiply m[63] and mu - Start\n\t" - "ldr r7, [%[m]]\n\t" -#ifdef __clang__ - "lsls r6, %[mp], #16\n\t" + "mov r5, r10\n\t" + "uxth r6, %[mp]\n\t" + "uxth r5, r5\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" #else - "lsl r6, %[mp], #16\n\t" + "mul r6, r5\n\t" #endif -#ifdef __clang__ - "lsls r7, r7, #16\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" #else - "lsl r7, r7, #16\n\t" + "add r4, r4, r6\n\t" #endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" #else - "lsr r6, r6, #16\n\t" + "adc r3, r7\n\t" #endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r7\n\t" +#elif defined(__clang__) + "adcs r7, r7\n\t" #else - "lsr r7, r7, #16\n\t" + "adc r7, r7\n\t" #endif -#ifdef __clang__ - "muls r7, r6\n\t" -#else - "mul r7, r6\n\t" -#endif -#ifdef __clang__ - "adds r5, r5, r7\n\t" -#else - "add r5, r5, r7\n\t" -#endif -#ifdef __clang__ - "adcs r4, %[ca]\n\t" -#else - "adc r4, %[ca]\n\t" -#endif -#ifdef __clang__ - "adcs %[a], %[ca]\n\t" -#else - "adc %[a], %[ca]\n\t" -#endif - "ldr r7, [%[m]]\n\t" -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "muls r6, r7\n\t" -#else - "mul r6, r7\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r6, #16\n\t" -#else - "lsr r7, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "adds r5, r5, r6\n\t" -#else - "add r5, r5, r6\n\t" -#endif -#ifdef __clang__ - "adcs r4, r7\n\t" -#else - "adc r4, r7\n\t" -#endif -#ifdef __clang__ - "adcs %[a], %[ca]\n\t" -#else - "adc %[a], %[ca]\n\t" -#endif - "ldr r7, [%[m]]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, %[mp], #16\n\t" #else "lsr r6, %[mp], #16\n\t" #endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" #else - "lsr r7, r7, #16\n\t" + "mul r5, r6\n\t" #endif -#ifdef __clang__ - "muls r7, r6\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" #else - "mul r7, r6\n\t" + "lsr r6, r5, #16\n\t" #endif -#ifdef __clang__ - "adds r4, r4, r7\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" #else - "add r4, r4, r7\n\t" + "lsl r5, r5, #16\n\t" #endif -#ifdef __clang__ - "adcs %[a], %[ca]\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" #else - "adc %[a], %[ca]\n\t" + "add r4, r4, r5\n\t" #endif - "ldr r7, [%[m]]\n\t" -#ifdef __clang__ - "lsls r7, r7, #16\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" #else - "lsl r7, r7, #16\n\t" + "adc r3, r6\n\t" #endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r7\n\t" +#elif defined(__clang__) + "adcs r7, r7\n\t" #else - "lsr r7, r7, #16\n\t" + "adc r7, r7\n\t" #endif -#ifdef __clang__ - "muls r6, r7\n\t" + "mov r5, r10\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[mp], #16\n\t" #else - "mul r6, r7\n\t" + "lsr r6, %[mp], #16\n\t" #endif -#ifdef __clang__ - "lsrs r7, r6, #16\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, r5, #16\n\t" #else - "lsr r7, r6, #16\n\t" + "lsr r5, r5, #16\n\t" #endif -#ifdef __clang__ - "lsls r6, r6, #16\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" #else - "lsl r6, r6, #16\n\t" + "mul r6, r5\n\t" #endif -#ifdef __clang__ - "adds r5, r5, r6\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" #else - "add r5, r5, r6\n\t" + "add r3, r3, r6\n\t" #endif -#ifdef __clang__ - "adcs r4, r7\n\t" +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r7\n\t" +#elif defined(__clang__) + "adcs r7, r7\n\t" #else - "adc r4, r7\n\t" + "adc r7, r7\n\t" #endif -#ifdef __clang__ - "adcs %[a], %[ca]\n\t" + "uxth r6, %[mp]\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" #else - "adc %[a], %[ca]\n\t" + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r7\n\t" +#elif defined(__clang__) + "adcs r7, r7\n\t" +#else + "adc r7, r7\n\t" #endif "# Multiply m[63] and mu - Done\n\t" - "movs %[ca], %[a]\n\t" - "mov %[a], r10\n\t" - "ldr r7, [%[a], #4]\n\t" - "ldr %[a], [%[a]]\n\t" - "movs r6, #0\n\t" -#ifdef __clang__ - "adds r5, r5, %[a]\n\t" + "ldr r5, [%[a]]\n\t" + "ldr r6, [%[a], #4]\n\t" + "movs %[mp], #0\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r4\n\t" #else - "add r5, r5, %[a]\n\t" + "add r5, r5, r4\n\t" #endif -#ifdef __clang__ - "adcs r7, r4\n\t" +#ifdef WOLFSSL_KEIL + "adcs r6, r6, r3\n\t" +#elif defined(__clang__) + "adcs r6, r3\n\t" #else - "adc r7, r4\n\t" + "adc r6, r3\n\t" #endif -#ifdef __clang__ - "adcs %[ca], r6\n\t" +#ifdef WOLFSSL_KEIL + "adcs r7, r7, %[mp]\n\t" +#elif defined(__clang__) + "adcs r7, %[mp]\n\t" #else - "adc %[ca], r6\n\t" + "adc r7, %[mp]\n\t" #endif - "mov %[a], r10\n\t" - "str r5, [%[a]]\n\t" - "str r7, [%[a], #4]\n\t" + "stm %[a]!, {r5, r6}\n\t" "# i += 1\n\t" - "movs r6, #4\n\t" - "add r9, r9, r6\n\t" - "add r11, r11, r6\n\t" - "mov r12, %[ca]\n\t" - "mov %[a], r9\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "subs %[a], %[a], #4\n\t" +#else + "sub %[a], %[a], #4\n\t" +#endif + "movs r3, #0xfc\n\t" + "mov r9, %[a]\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "subs %[a], %[a], r3\n\t" +#else + "sub %[a], %[a], r3\n\t" +#endif + "mov r12, r7\n\t" + "mov %[m], lr\n\t" + "cmp r11, %[a]\n\t" + "bgt L_sp_2048_mont_reduce_64_mod_%=\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "negs r7, r7\n\t" +#else + "neg r7, r7\n\t" +#endif + "# Subtract masked modulus\n\t" "movs r4, #0xff\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, #1\n\t" #else "add r4, r4, #1\n\t" #endif - "cmp r11, r4\n\t" - "blt L_sp_2048_mont_reduce_64_mod_%=\n\t" - "mov %[m], lr\n\t" - : [a] "+r" (a), [m] "+r" (m), [mp] "+r" (mp), [ca] "+r" (ca) + "movs %[mp], #0\n\t" + "movs r3, #0\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "subs %[a], %[a], r4\n\t" +#else + "sub %[a], %[a], r4\n\t" +#endif +#ifndef WOLFSSL_SP_LARGE_CODE + "\n" + "L_sp_2048_mont_reduce_64_sub_mask_%=:\n\t" + "ldm %[m]!, {r6}\n\t" + "movs r5, #0\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "subs r5, r5, %[mp]\n\t" +#else + "sub r5, r5, %[mp]\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "sbcs %[mp], %[mp], %[mp]\n\t" +#elif defined(__clang__) + "sbcs %[mp], %[mp]\n\t" +#else + "sbc %[mp], %[mp]\n\t" +#endif + "stm %[a]!, {r5}\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, #4\n\t" +#else + "add r3, r3, #4\n\t" +#endif + "cmp r3, r4\n\t" + "blt L_sp_2048_mont_reduce_64_sub_mask_%=\n\t" +#else /* WOLFSSL_SP_LARGE_CODE */ + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "subs r5, r5, r6\n\t" +#else + "sub r5, r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" +#endif /* WOLFSSL_SP_LARGE_CODE */ + : [a] "+r" (a), [m] "+r" (m), [mp] "+r" (mp) : - : "memory", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12", "lr" + : "memory", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12", "lr" ); - sp_2048_cond_sub_64(a - 64, a, m, (sp_digit)0 - ca); } /* Multiply two Montogmery form numbers mod the modulus (prime). @@ -7328,48 +25821,52 @@ SP_NOINLINE static sp_digit sp_2048_sub_64(sp_digit* r, const sp_digit* a, "movs r6, %[a]\n\t" "movs r3, #0\n\t" "movs r5, #0xff\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r5, r5, #1\n\t" #else "add r5, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r6, r6, r5\n\t" #else "add r6, r6, r5\n\t" #endif "\n" - "L_sp_2048_sub_64_word_%=: \n\t" + "L_sp_2048_sub_64_word_%=:\n\t" "movs r5, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r5, r5, r3\n\t" #else "sub r5, r5, r3\n\t" #endif "ldr r4, [%[a]]\n\t" "ldr r5, [%[b]]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r5\n\t" +#elif defined(__clang__) "sbcs r4, r5\n\t" #else "sbc r4, r5\n\t" #endif "str r4, [%[r]]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r3\n\t" +#elif defined(__clang__) "sbcs r3, r3\n\t" #else "sbc r3, r3\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[a], %[a], #4\n\t" #else "add %[a], %[a], #4\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[b], %[b], #4\n\t" #else "add %[b], %[b], #4\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[r], %[r], #4\n\t" #else "add %[r], %[r], #4\n\t" @@ -7395,554 +25892,558 @@ SP_NOINLINE static sp_digit sp_2048_sub_64(sp_digit* r, const sp_digit* a, const sp_digit* b) { __asm__ __volatile__ ( - "movs r3, #0\n\t" - "ldr r4, [%[a]]\n\t" - "ldr r5, [%[a], #4]\n\t" - "ldr r6, [%[b]]\n\t" - "ldr r7, [%[b], #4]\n\t" -#ifdef __clang__ - "subs r4, r4, r6\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "subs r3, r3, r5\n\t" #else - "sub r4, r4, r6\n\t" + "sub r3, r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" -#else - "sbc r5, r7\n\t" -#endif - "str r4, [%[r]]\n\t" - "str r5, [%[r], #4]\n\t" - "ldr r4, [%[a], #8]\n\t" - "ldr r5, [%[a], #12]\n\t" - "ldr r6, [%[b], #8]\n\t" - "ldr r7, [%[b], #12]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #8]\n\t" - "str r5, [%[r], #12]\n\t" - "ldr r4, [%[a], #16]\n\t" - "ldr r5, [%[a], #20]\n\t" - "ldr r6, [%[b], #16]\n\t" - "ldr r7, [%[b], #20]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #16]\n\t" - "str r5, [%[r], #20]\n\t" - "ldr r4, [%[a], #24]\n\t" - "ldr r5, [%[a], #28]\n\t" - "ldr r6, [%[b], #24]\n\t" - "ldr r7, [%[b], #28]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #24]\n\t" - "str r5, [%[r], #28]\n\t" - "ldr r4, [%[a], #32]\n\t" - "ldr r5, [%[a], #36]\n\t" - "ldr r6, [%[b], #32]\n\t" - "ldr r7, [%[b], #36]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #32]\n\t" - "str r5, [%[r], #36]\n\t" - "ldr r4, [%[a], #40]\n\t" - "ldr r5, [%[a], #44]\n\t" - "ldr r6, [%[b], #40]\n\t" - "ldr r7, [%[b], #44]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #40]\n\t" - "str r5, [%[r], #44]\n\t" - "ldr r4, [%[a], #48]\n\t" - "ldr r5, [%[a], #52]\n\t" - "ldr r6, [%[b], #48]\n\t" - "ldr r7, [%[b], #52]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #48]\n\t" - "str r5, [%[r], #52]\n\t" - "ldr r4, [%[a], #56]\n\t" - "ldr r5, [%[a], #60]\n\t" - "ldr r6, [%[b], #56]\n\t" - "ldr r7, [%[b], #60]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #56]\n\t" - "str r5, [%[r], #60]\n\t" - "ldr r4, [%[a], #64]\n\t" - "ldr r5, [%[a], #68]\n\t" - "ldr r6, [%[b], #64]\n\t" - "ldr r7, [%[b], #68]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #64]\n\t" - "str r5, [%[r], #68]\n\t" - "ldr r4, [%[a], #72]\n\t" - "ldr r5, [%[a], #76]\n\t" - "ldr r6, [%[b], #72]\n\t" - "ldr r7, [%[b], #76]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #72]\n\t" - "str r5, [%[r], #76]\n\t" - "ldr r4, [%[a], #80]\n\t" - "ldr r5, [%[a], #84]\n\t" - "ldr r6, [%[b], #80]\n\t" - "ldr r7, [%[b], #84]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #80]\n\t" - "str r5, [%[r], #84]\n\t" - "ldr r4, [%[a], #88]\n\t" - "ldr r5, [%[a], #92]\n\t" - "ldr r6, [%[b], #88]\n\t" - "ldr r7, [%[b], #92]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #88]\n\t" - "str r5, [%[r], #92]\n\t" - "ldr r4, [%[a], #96]\n\t" - "ldr r5, [%[a], #100]\n\t" - "ldr r6, [%[b], #96]\n\t" - "ldr r7, [%[b], #100]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #96]\n\t" - "str r5, [%[r], #100]\n\t" - "ldr r4, [%[a], #104]\n\t" - "ldr r5, [%[a], #108]\n\t" - "ldr r6, [%[b], #104]\n\t" - "ldr r7, [%[b], #108]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #104]\n\t" - "str r5, [%[r], #108]\n\t" - "ldr r4, [%[a], #112]\n\t" - "ldr r5, [%[a], #116]\n\t" - "ldr r6, [%[b], #112]\n\t" - "ldr r7, [%[b], #116]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #112]\n\t" - "str r5, [%[r], #116]\n\t" - "ldr r4, [%[a], #120]\n\t" - "ldr r5, [%[a], #124]\n\t" - "ldr r6, [%[b], #120]\n\t" - "ldr r7, [%[b], #124]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #120]\n\t" - "str r5, [%[r], #124]\n\t" -#ifdef __clang__ - "sbcs r3, r3\n\t" -#else - "sbc r3, r3\n\t" -#endif -#ifdef __clang__ - "adds %[a], %[a], #0x80\n\t" -#else - "add %[a], %[a], #0x80\n\t" -#endif -#ifdef __clang__ - "adds %[b], %[b], #0x80\n\t" -#else - "add %[b], %[b], #0x80\n\t" -#endif -#ifdef __clang__ - "adds %[r], %[r], #0x80\n\t" -#else - "add %[r], %[r], #0x80\n\t" -#endif - "movs r6, #0\n\t" -#ifdef __clang__ - "subs r6, r6, r3\n\t" -#else - "sub r6, r6, r3\n\t" -#endif - "ldr r4, [%[a]]\n\t" - "ldr r5, [%[a], #4]\n\t" - "ldr r6, [%[b]]\n\t" - "ldr r7, [%[b], #4]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r]]\n\t" - "str r5, [%[r], #4]\n\t" - "ldr r4, [%[a], #8]\n\t" - "ldr r5, [%[a], #12]\n\t" - "ldr r6, [%[b], #8]\n\t" - "ldr r7, [%[b], #12]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #8]\n\t" - "str r5, [%[r], #12]\n\t" - "ldr r4, [%[a], #16]\n\t" - "ldr r5, [%[a], #20]\n\t" - "ldr r6, [%[b], #16]\n\t" - "ldr r7, [%[b], #20]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #16]\n\t" - "str r5, [%[r], #20]\n\t" - "ldr r4, [%[a], #24]\n\t" - "ldr r5, [%[a], #28]\n\t" - "ldr r6, [%[b], #24]\n\t" - "ldr r7, [%[b], #28]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #24]\n\t" - "str r5, [%[r], #28]\n\t" - "ldr r4, [%[a], #32]\n\t" - "ldr r5, [%[a], #36]\n\t" - "ldr r6, [%[b], #32]\n\t" - "ldr r7, [%[b], #36]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #32]\n\t" - "str r5, [%[r], #36]\n\t" - "ldr r4, [%[a], #40]\n\t" - "ldr r5, [%[a], #44]\n\t" - "ldr r6, [%[b], #40]\n\t" - "ldr r7, [%[b], #44]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #40]\n\t" - "str r5, [%[r], #44]\n\t" - "ldr r4, [%[a], #48]\n\t" - "ldr r5, [%[a], #52]\n\t" - "ldr r6, [%[b], #48]\n\t" - "ldr r7, [%[b], #52]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #48]\n\t" - "str r5, [%[r], #52]\n\t" - "ldr r4, [%[a], #56]\n\t" - "ldr r5, [%[a], #60]\n\t" - "ldr r6, [%[b], #56]\n\t" - "ldr r7, [%[b], #60]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #56]\n\t" - "str r5, [%[r], #60]\n\t" - "ldr r4, [%[a], #64]\n\t" - "ldr r5, [%[a], #68]\n\t" - "ldr r6, [%[b], #64]\n\t" - "ldr r7, [%[b], #68]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #64]\n\t" - "str r5, [%[r], #68]\n\t" - "ldr r4, [%[a], #72]\n\t" - "ldr r5, [%[a], #76]\n\t" - "ldr r6, [%[b], #72]\n\t" - "ldr r7, [%[b], #76]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #72]\n\t" - "str r5, [%[r], #76]\n\t" - "ldr r4, [%[a], #80]\n\t" - "ldr r5, [%[a], #84]\n\t" - "ldr r6, [%[b], #80]\n\t" - "ldr r7, [%[b], #84]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #80]\n\t" - "str r5, [%[r], #84]\n\t" - "ldr r4, [%[a], #88]\n\t" - "ldr r5, [%[a], #92]\n\t" - "ldr r6, [%[b], #88]\n\t" - "ldr r7, [%[b], #92]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #88]\n\t" - "str r5, [%[r], #92]\n\t" - "ldr r4, [%[a], #96]\n\t" - "ldr r5, [%[a], #100]\n\t" - "ldr r6, [%[b], #96]\n\t" - "ldr r7, [%[b], #100]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #96]\n\t" - "str r5, [%[r], #100]\n\t" - "ldr r4, [%[a], #104]\n\t" - "ldr r5, [%[a], #108]\n\t" - "ldr r6, [%[b], #104]\n\t" - "ldr r7, [%[b], #108]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #104]\n\t" - "str r5, [%[r], #108]\n\t" - "ldr r4, [%[a], #112]\n\t" - "ldr r5, [%[a], #116]\n\t" - "ldr r6, [%[b], #112]\n\t" - "ldr r7, [%[b], #116]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #112]\n\t" - "str r5, [%[r], #116]\n\t" - "ldr r4, [%[a], #120]\n\t" - "ldr r5, [%[a], #124]\n\t" - "ldr r6, [%[b], #120]\n\t" - "ldr r7, [%[b], #124]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #120]\n\t" - "str r5, [%[r], #124]\n\t" -#ifdef __clang__ - "sbcs r3, r3\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) + "sbcs r4, r6\n\t" #else - "sbc r3, r3\n\t" + "sbc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs %[r], %[r], %[r]\n\t" +#elif defined(__clang__) + "sbcs %[r], %[r]\n\t" +#else + "sbc %[r], %[r]\n\t" #endif - "movs %[r], r3\n\t" : [r] "+r" (r), [a] "+r" (a), [b] "+r" (b) : - : "memory", "r3", "r4", "r5", "r6", "r7" + : "memory", "r3", "r4", "r5", "r6" ); return (uint32_t)(size_t)r; } @@ -7962,12 +26463,12 @@ SP_NOINLINE static sp_digit div_2048_word_64(sp_digit d1, sp_digit d0, { __asm__ __volatile__ ( "movs r3, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, %[div], #1\n\t" #else "lsr r5, %[div], #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r5, r5, #1\n\t" #else "add r5, r5, #1\n\t" @@ -7976,326 +26477,307 @@ SP_NOINLINE static sp_digit div_2048_word_64(sp_digit d1, sp_digit d0, "mov r9, %[d1]\n\t" "# Do top 32\n\t" "movs r6, r5\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r6, r6, %[d1]\n\t" #else "sub r6, r6, %[d1]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r6\n\t" +#elif defined(__clang__) "sbcs r6, r6\n\t" #else "sbc r6, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r3\n\t" #else "add r3, r3, r3\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r3, r3, r6\n\t" #else "sub r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, r5\n\t" +#elif defined(__clang__) "ands r6, r5\n\t" #else "and r6, r5\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[d1], %[d1], r6\n\t" #else "sub %[d1], %[d1], r6\n\t" #endif - "\n\t" "movs r4, #29\n\t" "\n" - "L_div_2048_word_64_loop_%=: \n\t" -#ifdef __clang__ + "L_div_2048_word_64_loop_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls %[d0], %[d0], #1\n\t" #else "lsl %[d0], %[d0], #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs %[d1], %[d1], %[d1]\n\t" +#elif defined(__clang__) "adcs %[d1], %[d1]\n\t" #else "adc %[d1], %[d1]\n\t" #endif "movs r6, r5\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r6, r6, %[d1]\n\t" #else "sub r6, r6, %[d1]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r6\n\t" +#elif defined(__clang__) "sbcs r6, r6\n\t" #else "sbc r6, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r3\n\t" #else "add r3, r3, r3\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r3, r3, r6\n\t" #else "sub r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, r5\n\t" +#elif defined(__clang__) "ands r6, r5\n\t" #else "and r6, r5\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[d1], %[d1], r6\n\t" #else "sub %[d1], %[d1], r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r4, r4, #1\n\t" #else "sub r4, r4, #1\n\t" #endif "bpl L_div_2048_word_64_loop_%=\n\t" "movs r7, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r3\n\t" #else "add r3, r3, r3\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, #1\n\t" #else "add r3, r3, #1\n\t" #endif "# r * div - Start\n\t" -#ifdef __clang__ - "lsls %[d1], r3, #16\n\t" -#else - "lsl %[d1], r3, #16\n\t" -#endif -#ifdef __clang__ - "lsls r4, %[div], #16\n\t" -#else - "lsl r4, %[div], #16\n\t" -#endif -#ifdef __clang__ - "lsrs %[d1], %[d1], #16\n\t" -#else - "lsr %[d1], %[d1], #16\n\t" -#endif -#ifdef __clang__ - "lsrs r4, r4, #16\n\t" -#else - "lsr r4, r4, #16\n\t" -#endif -#ifdef __clang__ + "uxth %[d1], r3\n\t" + "uxth r4, %[div]\n\t" +#ifdef WOLFSSL_KEIL + "muls r4, %[d1], r4\n\t" +#elif defined(__clang__) "muls r4, %[d1]\n\t" #else "mul r4, %[d1]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, %[div], #16\n\t" #else "lsr r6, %[div], #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls %[d1], r6, %[d1]\n\t" +#elif defined(__clang__) "muls %[d1], r6\n\t" #else "mul %[d1], r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, %[d1], #16\n\t" #else "lsr r5, %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls %[d1], %[d1], #16\n\t" #else "lsl %[d1], %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, %[d1]\n\t" #else "add r4, r4, %[d1]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs %[d1], r3, #16\n\t" #else "lsr %[d1], r3, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r6, %[d1], r6\n\t" +#elif defined(__clang__) "muls r6, %[d1]\n\t" #else "mul r6, %[d1]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r5, r5, r6\n\t" #else "add r5, r5, r6\n\t" #endif -#ifdef __clang__ - "lsls r6, %[div], #16\n\t" -#else - "lsl r6, %[div], #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ + "uxth r6, %[div]\n\t" +#ifdef WOLFSSL_KEIL + "muls %[d1], r6, %[d1]\n\t" +#elif defined(__clang__) "muls %[d1], r6\n\t" #else "mul %[d1], r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, %[d1], #16\n\t" #else "lsr r6, %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls %[d1], %[d1], #16\n\t" #else "lsl %[d1], %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, %[d1]\n\t" #else "add r4, r4, %[d1]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r6\n\t" +#elif defined(__clang__) "adcs r5, r6\n\t" #else "adc r5, r6\n\t" #endif "# r * div - Done\n\t" "mov %[d1], r8\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[d1], %[d1], r4\n\t" #else "sub %[d1], %[d1], r4\n\t" #endif "movs r4, %[d1]\n\t" "mov %[d1], r9\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs %[d1], %[d1], r5\n\t" +#elif defined(__clang__) "sbcs %[d1], r5\n\t" #else "sbc %[d1], r5\n\t" #endif "movs r5, %[d1]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r5\n\t" #else "add r3, r3, r5\n\t" #endif "# r * div - Start\n\t" -#ifdef __clang__ - "lsls %[d1], r3, #16\n\t" -#else - "lsl %[d1], r3, #16\n\t" -#endif -#ifdef __clang__ - "lsls r4, %[div], #16\n\t" -#else - "lsl r4, %[div], #16\n\t" -#endif -#ifdef __clang__ - "lsrs %[d1], %[d1], #16\n\t" -#else - "lsr %[d1], %[d1], #16\n\t" -#endif -#ifdef __clang__ - "lsrs r4, r4, #16\n\t" -#else - "lsr r4, r4, #16\n\t" -#endif -#ifdef __clang__ + "uxth %[d1], r3\n\t" + "uxth r4, %[div]\n\t" +#ifdef WOLFSSL_KEIL + "muls r4, %[d1], r4\n\t" +#elif defined(__clang__) "muls r4, %[d1]\n\t" #else "mul r4, %[d1]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, %[div], #16\n\t" #else "lsr r6, %[div], #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls %[d1], r6, %[d1]\n\t" +#elif defined(__clang__) "muls %[d1], r6\n\t" #else "mul %[d1], r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, %[d1], #16\n\t" #else "lsr r5, %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls %[d1], %[d1], #16\n\t" #else "lsl %[d1], %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, %[d1]\n\t" #else "add r4, r4, %[d1]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs %[d1], r3, #16\n\t" #else "lsr %[d1], r3, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r6, %[d1], r6\n\t" +#elif defined(__clang__) "muls r6, %[d1]\n\t" #else "mul r6, %[d1]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r5, r5, r6\n\t" #else "add r5, r5, r6\n\t" #endif -#ifdef __clang__ - "lsls r6, %[div], #16\n\t" -#else - "lsl r6, %[div], #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ + "uxth r6, %[div]\n\t" +#ifdef WOLFSSL_KEIL + "muls %[d1], r6, %[d1]\n\t" +#elif defined(__clang__) "muls %[d1], r6\n\t" #else "mul %[d1], r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, %[d1], #16\n\t" #else "lsr r6, %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls %[d1], %[d1], #16\n\t" #else "lsl %[d1], %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, %[d1]\n\t" #else "add r4, r4, %[d1]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r6\n\t" +#elif defined(__clang__) "adcs r5, r6\n\t" #else "adc r5, r6\n\t" @@ -8303,124 +26785,115 @@ SP_NOINLINE static sp_digit div_2048_word_64(sp_digit d1, sp_digit d0, "# r * div - Done\n\t" "mov %[d1], r8\n\t" "mov r6, r9\n\t" +#ifdef WOLFSSL_KEIL + "subs r4, %[d1], r4\n\t" +#else #ifdef __clang__ "subs r4, %[d1], r4\n\t" #else "sub r4, %[d1], r4\n\t" #endif -#ifdef __clang__ +#endif +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r5\n\t" +#elif defined(__clang__) "sbcs r6, r5\n\t" #else "sbc r6, r5\n\t" #endif "movs r5, r6\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r5\n\t" #else "add r3, r3, r5\n\t" #endif "# r * div - Start\n\t" -#ifdef __clang__ - "lsls %[d1], r3, #16\n\t" -#else - "lsl %[d1], r3, #16\n\t" -#endif -#ifdef __clang__ - "lsls r4, %[div], #16\n\t" -#else - "lsl r4, %[div], #16\n\t" -#endif -#ifdef __clang__ - "lsrs %[d1], %[d1], #16\n\t" -#else - "lsr %[d1], %[d1], #16\n\t" -#endif -#ifdef __clang__ - "lsrs r4, r4, #16\n\t" -#else - "lsr r4, r4, #16\n\t" -#endif -#ifdef __clang__ + "uxth %[d1], r3\n\t" + "uxth r4, %[div]\n\t" +#ifdef WOLFSSL_KEIL + "muls r4, %[d1], r4\n\t" +#elif defined(__clang__) "muls r4, %[d1]\n\t" #else "mul r4, %[d1]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, %[div], #16\n\t" #else "lsr r6, %[div], #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls %[d1], r6, %[d1]\n\t" +#elif defined(__clang__) "muls %[d1], r6\n\t" #else "mul %[d1], r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, %[d1], #16\n\t" #else "lsr r5, %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls %[d1], %[d1], #16\n\t" #else "lsl %[d1], %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, %[d1]\n\t" #else "add r4, r4, %[d1]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs %[d1], r3, #16\n\t" #else "lsr %[d1], r3, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r6, %[d1], r6\n\t" +#elif defined(__clang__) "muls r6, %[d1]\n\t" #else "mul r6, %[d1]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r5, r5, r6\n\t" #else "add r5, r5, r6\n\t" #endif -#ifdef __clang__ - "lsls r6, %[div], #16\n\t" -#else - "lsl r6, %[div], #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ + "uxth r6, %[div]\n\t" +#ifdef WOLFSSL_KEIL + "muls %[d1], r6, %[d1]\n\t" +#elif defined(__clang__) "muls %[d1], r6\n\t" #else "mul %[d1], r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, %[d1], #16\n\t" #else "lsr r6, %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls %[d1], %[d1], #16\n\t" #else "lsl %[d1], %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, %[d1]\n\t" #else "add r4, r4, %[d1]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r6\n\t" +#elif defined(__clang__) "adcs r5, r6\n\t" #else "adc r5, r6\n\t" @@ -8428,34 +26901,42 @@ SP_NOINLINE static sp_digit div_2048_word_64(sp_digit d1, sp_digit d0, "# r * div - Done\n\t" "mov %[d1], r8\n\t" "mov r6, r9\n\t" +#ifdef WOLFSSL_KEIL + "subs r4, %[d1], r4\n\t" +#else #ifdef __clang__ "subs r4, %[d1], r4\n\t" #else "sub r4, %[d1], r4\n\t" #endif -#ifdef __clang__ +#endif +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r5\n\t" +#elif defined(__clang__) "sbcs r6, r5\n\t" #else "sbc r6, r5\n\t" #endif "movs r5, r6\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r5\n\t" #else "add r3, r3, r5\n\t" #endif "movs r6, %[div]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r6, r6, r4\n\t" #else "sub r6, r6, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r6\n\t" +#elif defined(__clang__) "sbcs r6, r6\n\t" #else "sbc r6, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r3, r3, r6\n\t" #else "sub r3, r3, r6\n\t" @@ -8571,78 +27052,90 @@ SP_NOINLINE static sp_int32 sp_2048_cmp_64(const sp_digit* a, const sp_digit* b) __asm__ __volatile__ ( "movs r2, #0\n\t" "movs r3, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "mvns r3, r3\n\t" #else "mvn r3, r3\n\t" #endif "movs r6, #0xfc\n\t" "\n" - "L_sp_2048_cmp_64_words_%=: \n\t" + "L_sp_2048_cmp_64_words_%=:\n\t" "ldr r7, [%[a], r6]\n\t" "ldr r5, [%[b], r6]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, r3\n\t" +#elif defined(__clang__) "ands r7, r3\n\t" #else "and r7, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r3\n\t" +#elif defined(__clang__) "ands r5, r3\n\t" #else "and r5, r3\n\t" #endif "movs r4, r7\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r7, r7, r5\n\t" #else "sub r7, r7, r5\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r7, r7, r7\n\t" +#elif defined(__clang__) "sbcs r7, r7\n\t" #else "sbc r7, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r7\n\t" #else "add r2, r2, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "mvns r7, r7\n\t" #else "mvn r7, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r3, r3, r7\n\t" +#elif defined(__clang__) "ands r3, r7\n\t" #else "and r3, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r5, r5, r4\n\t" #else "sub r5, r5, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r7, r7, r7\n\t" +#elif defined(__clang__) "sbcs r7, r7\n\t" #else "sbc r7, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r2, r2, r7\n\t" #else "sub r2, r2, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "mvns r7, r7\n\t" #else "mvn r7, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r3, r3, r7\n\t" +#elif defined(__clang__) "ands r3, r7\n\t" #else "and r3, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r6, r6, #4\n\t" #else "sub r6, r6, #4\n\t" @@ -9133,38 +27626,44 @@ SP_NOINLINE static sp_digit sp_2048_cond_add_32(sp_digit* r, const sp_digit* a, "mov r8, r5\n\t" "movs r7, #0\n\t" "\n" - "L_sp_2048_cond_add_32_words_%=: \n\t" + "L_sp_2048_cond_add_32_words_%=:\n\t" "ldr r6, [%[b], r7]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, %[m]\n\t" +#elif defined(__clang__) "ands r6, %[m]\n\t" #else "and r6, %[m]\n\t" #endif "movs r5, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r5, r5, #1\n\t" #else "sub r5, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r5, r5, r4\n\t" #else "add r5, r5, r4\n\t" #endif "ldr r5, [%[a], r7]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r6\n\t" +#elif defined(__clang__) "adcs r5, r6\n\t" #else "adc r5, r6\n\t" #endif "movs r4, #0\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r4\n\t" +#elif defined(__clang__) "adcs r4, r4\n\t" #else "adc r4, r4\n\t" #endif "str r5, [%[r], r7]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r7, r7, #4\n\t" #else "add r7, r7, #4\n\t" @@ -9497,1449 +27996,1575 @@ static void sp_2048_lshift_64(sp_digit* r, const sp_digit* a, byte n) { __asm__ __volatile__ ( "movs r7, #31\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r7, r7, %[n]\n\t" #else "sub r7, r7, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[a], %[a], #0xc0\n\t" #else "add %[a], %[a], #0xc0\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[r], %[r], #0xc0\n\t" #else "add %[r], %[r], #0xc0\n\t" #endif "ldr r4, [%[a], #60]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r4, #1\n\t" #else "lsr r5, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r5, r7\n\t" #else "lsr r5, r5, r7\n\t" #endif "ldr r3, [%[a], #56]\n\t" "str r5, [%[r], #64]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #52]\n\t" "str r4, [%[r], #60]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #48]\n\t" "str r3, [%[r], #56]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #44]\n\t" "str r5, [%[r], #52]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #40]\n\t" "str r4, [%[r], #48]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #36]\n\t" "str r3, [%[r], #44]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #32]\n\t" "str r5, [%[r], #40]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #28]\n\t" "str r4, [%[r], #36]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #24]\n\t" "str r3, [%[r], #32]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #20]\n\t" "str r5, [%[r], #28]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #16]\n\t" "str r4, [%[r], #24]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #12]\n\t" "str r3, [%[r], #20]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #8]\n\t" "str r5, [%[r], #16]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #4]\n\t" "str r4, [%[r], #12]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a]]\n\t" "str r3, [%[r], #8]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[a], %[a], #0x40\n\t" #else "sub %[a], %[a], #0x40\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[r], %[r], #0x40\n\t" #else "sub %[r], %[r], #0x40\n\t" #endif "ldr r3, [%[a], #60]\n\t" "str r5, [%[r], #68]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #56]\n\t" "str r4, [%[r], #64]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #52]\n\t" "str r3, [%[r], #60]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #48]\n\t" "str r5, [%[r], #56]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #44]\n\t" "str r4, [%[r], #52]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #40]\n\t" "str r3, [%[r], #48]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #36]\n\t" "str r5, [%[r], #44]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #32]\n\t" "str r4, [%[r], #40]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #28]\n\t" "str r3, [%[r], #36]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #24]\n\t" "str r5, [%[r], #32]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #20]\n\t" "str r4, [%[r], #28]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #16]\n\t" "str r3, [%[r], #24]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #12]\n\t" "str r5, [%[r], #20]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #8]\n\t" "str r4, [%[r], #16]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #4]\n\t" "str r3, [%[r], #12]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a]]\n\t" "str r5, [%[r], #8]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[a], %[a], #0x40\n\t" #else "sub %[a], %[a], #0x40\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[r], %[r], #0x40\n\t" #else "sub %[r], %[r], #0x40\n\t" #endif "ldr r5, [%[a], #60]\n\t" "str r4, [%[r], #68]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #56]\n\t" "str r3, [%[r], #64]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #52]\n\t" "str r5, [%[r], #60]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #48]\n\t" "str r4, [%[r], #56]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #44]\n\t" "str r3, [%[r], #52]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #40]\n\t" "str r5, [%[r], #48]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #36]\n\t" "str r4, [%[r], #44]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #32]\n\t" "str r3, [%[r], #40]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #28]\n\t" "str r5, [%[r], #36]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #24]\n\t" "str r4, [%[r], #32]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #20]\n\t" "str r3, [%[r], #28]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #16]\n\t" "str r5, [%[r], #24]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #12]\n\t" "str r4, [%[r], #20]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #8]\n\t" "str r3, [%[r], #16]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #4]\n\t" "str r5, [%[r], #12]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a]]\n\t" "str r4, [%[r], #8]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[a], %[a], #0x40\n\t" #else "sub %[a], %[a], #0x40\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[r], %[r], #0x40\n\t" #else "sub %[r], %[r], #0x40\n\t" #endif "ldr r4, [%[a], #60]\n\t" "str r3, [%[r], #68]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #56]\n\t" "str r5, [%[r], #64]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #52]\n\t" "str r4, [%[r], #60]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #48]\n\t" "str r3, [%[r], #56]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #44]\n\t" "str r5, [%[r], #52]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #40]\n\t" "str r4, [%[r], #48]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #36]\n\t" "str r3, [%[r], #44]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #32]\n\t" "str r5, [%[r], #40]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #28]\n\t" "str r4, [%[r], #36]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #24]\n\t" "str r3, [%[r], #32]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #20]\n\t" "str r5, [%[r], #28]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #16]\n\t" "str r4, [%[r], #24]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #12]\n\t" "str r3, [%[r], #20]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #8]\n\t" "str r5, [%[r], #16]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #4]\n\t" "str r4, [%[r], #12]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a]]\n\t" "str r3, [%[r], #8]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" @@ -11365,6 +29990,7 @@ static void sp_3072_to_bin_96(sp_digit* r, byte* a) #define sp_3072_norm_96(a) #ifndef WOLFSSL_SP_SMALL +#ifndef WOLFSSL_SP_LARGE_CODE /* Multiply a and b into r. (r = a * b) * * r A single precision integer. @@ -11387,33 +30013,37 @@ SP_NOINLINE static void sp_3072_mul_12(sp_digit* r, const sp_digit* a, "add r6, r6, r9\n\t" "mov r12, r6\n\t" "\n" - "L_sp_3072_mul_12_words_%=: \n\t" + "L_sp_3072_mul_12_words_%=:\n\t" "movs %[tmp], #0\n\t" "movs r5, #0\n\t" "movs r6, #44\n\t" "mov %[a], r8\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[a], %[a], r6\n\t" #else "sub %[a], %[a], r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r6\n\t" +#elif defined(__clang__) "sbcs r6, r6\n\t" #else "sbc r6, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "mvns r6, r6\n\t" #else "mvn r6, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands %[a], %[a], r6\n\t" +#elif defined(__clang__) "ands %[a], r6\n\t" #else "and %[a], r6\n\t" #endif "mov %[b], r8\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[b], %[b], %[a]\n\t" #else "sub %[b], %[b], %[a]\n\t" @@ -11421,161 +30051,153 @@ SP_NOINLINE static void sp_3072_mul_12(sp_digit* r, const sp_digit* a, "add %[a], %[a], r9\n\t" "add %[b], %[b], r10\n\t" "\n" - "L_sp_3072_mul_12_mul_%=: \n\t" + "L_sp_3072_mul_12_mul_%=:\n\t" "# Multiply Start\n\t" - "ldr r6, [%[a]]\n\t" - "ldr r7, [%[b]]\n\t" -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsls r7, r7, #16\n\t" -#else - "lsl r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ + "ldrh r6, [%[a]]\n\t" + "ldrh r7, [%[b]]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) "muls r7, r6\n\t" #else "mul r7, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r7\n\t" #else "add r3, r3, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[tmp]\n\t" +#elif defined(__clang__) "adcs r4, %[tmp]\n\t" #else "adc r4, %[tmp]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[tmp]\n\t" +#elif defined(__clang__) "adcs r5, %[tmp]\n\t" #else "adc r5, %[tmp]\n\t" #endif "ldr r7, [%[b]]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r7, #16\n\t" #else "lsr r7, r7, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) "muls r6, r7\n\t" #else "mul r6, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r6, #16\n\t" #else "lsr r7, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #16\n\t" #else "lsl r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[tmp]\n\t" +#elif defined(__clang__) "adcs r5, %[tmp]\n\t" #else "adc r5, %[tmp]\n\t" #endif "ldr r6, [%[a]]\n\t" "ldr r7, [%[b]]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, #16\n\t" #else "lsr r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r7, #16\n\t" #else "lsr r7, r7, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) "muls r7, r6\n\t" #else "mul r7, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, r7\n\t" #else "add r4, r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[tmp]\n\t" +#elif defined(__clang__) "adcs r5, %[tmp]\n\t" #else "adc r5, %[tmp]\n\t" #endif - "ldr r7, [%[b]]\n\t" -#ifdef __clang__ - "lsls r7, r7, #16\n\t" -#else - "lsl r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ + "ldrh r7, [%[b]]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) "muls r6, r7\n\t" #else "mul r6, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r6, #16\n\t" #else "lsr r7, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #16\n\t" #else "lsl r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[tmp]\n\t" +#elif defined(__clang__) "adcs r5, %[tmp]\n\t" #else "adc r5, %[tmp]\n\t" #endif "# Multiply Done\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[a], %[a], #4\n\t" #else "add %[a], %[a], #4\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[b], %[b], #4\n\t" #else "sub %[b], %[b], #4\n\t" @@ -11587,13 +30209,13 @@ SP_NOINLINE static void sp_3072_mul_12(sp_digit* r, const sp_digit* a, "cmp %[a], r6\n\t" "ble L_sp_3072_mul_12_mul_%=\n\t" "\n" - "L_sp_3072_mul_12_done_mul_%=: \n\t" + "L_sp_3072_mul_12_done_mul_%=:\n\t" "mov %[tmp], r11\n\t" "mov r7, r8\n\t" "str r3, [%[tmp], r7]\n\t" "movs r3, r4\n\t" "movs r4, r5\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r7, r7, #4\n\t" #else "add r7, r7, #4\n\t" @@ -11613,6 +30235,20188 @@ SP_NOINLINE static void sp_3072_mul_12(sp_digit* r, const sp_digit* a, XMEMCPY(r, t, sizeof(t)); } +#else +/* Multiply a and b into r. (r = a * b) + * + * r A single precision integer. + * a A single precision integer. + * b A single precision integer. + */ +SP_NOINLINE static void sp_3072_mul_12(sp_digit* r, const sp_digit* a, + const sp_digit* b) +{ + __asm__ __volatile__ ( + "sub sp, sp, #48\n\t" + "mov r8, %[r]\n\t" + "mov r9, %[a]\n\t" + "mov r10, %[b]\n\t" + "movs %[r], #0\n\t" + "# A[0] * B[0]\n\t" + "ldr %[a], [%[a]]\n\t" + "ldr %[b], [%[b]]\n\t" + "uxth r6, %[a]\n\t" + "uxth r3, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r3, r6, r3\n\t" +#elif defined(__clang__) + "muls r3, r6\n\t" +#else + "mul r3, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r4, r6, #16\n\t" +#else + "lsr r4, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif + "movs r5, #0\n\t" + "str r3, [sp]\n\t" + "# A[0] * B[1]\n\t" + "movs r3, #0\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a]]\n\t" + "ldr %[b], [%[b], #4]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[1] * B[0]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #4]\n\t" + "ldr %[b], [%[b]]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "str r4, [sp, #4]\n\t" + "# A[2] * B[0]\n\t" + "movs r4, #0\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #8]\n\t" + "ldr %[b], [%[b]]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[1] * B[1]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #4]\n\t" + "ldr %[b], [%[b], #4]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[0] * B[2]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a]]\n\t" + "ldr %[b], [%[b], #8]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "str r5, [sp, #8]\n\t" + "# A[0] * B[3]\n\t" + "movs r5, #0\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a]]\n\t" + "ldr %[b], [%[b], #12]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[1] * B[2]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #4]\n\t" + "ldr %[b], [%[b], #8]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[2] * B[1]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #8]\n\t" + "ldr %[b], [%[b], #4]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[3] * B[0]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #12]\n\t" + "ldr %[b], [%[b]]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "str r3, [sp, #12]\n\t" + "# A[4] * B[0]\n\t" + "movs r3, #0\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #16]\n\t" + "ldr %[b], [%[b]]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[3] * B[1]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #12]\n\t" + "ldr %[b], [%[b], #4]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[2] * B[2]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #8]\n\t" + "ldr %[b], [%[b], #8]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[1] * B[3]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #4]\n\t" + "ldr %[b], [%[b], #12]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[0] * B[4]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a]]\n\t" + "ldr %[b], [%[b], #16]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "str r4, [sp, #16]\n\t" + "# A[0] * B[5]\n\t" + "movs r4, #0\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a]]\n\t" + "ldr %[b], [%[b], #20]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[1] * B[4]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #4]\n\t" + "ldr %[b], [%[b], #16]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[2] * B[3]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #8]\n\t" + "ldr %[b], [%[b], #12]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[3] * B[2]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #12]\n\t" + "ldr %[b], [%[b], #8]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[4] * B[1]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #16]\n\t" + "ldr %[b], [%[b], #4]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[5] * B[0]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #20]\n\t" + "ldr %[b], [%[b]]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "str r5, [sp, #20]\n\t" + "# A[6] * B[0]\n\t" + "movs r5, #0\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #24]\n\t" + "ldr %[b], [%[b]]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[5] * B[1]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #20]\n\t" + "ldr %[b], [%[b], #4]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[4] * B[2]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #16]\n\t" + "ldr %[b], [%[b], #8]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[3] * B[3]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #12]\n\t" + "ldr %[b], [%[b], #12]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[2] * B[4]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #8]\n\t" + "ldr %[b], [%[b], #16]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[1] * B[5]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #4]\n\t" + "ldr %[b], [%[b], #20]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[0] * B[6]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a]]\n\t" + "ldr %[b], [%[b], #24]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "str r3, [sp, #24]\n\t" + "# A[0] * B[7]\n\t" + "movs r3, #0\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a]]\n\t" + "ldr %[b], [%[b], #28]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[1] * B[6]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #4]\n\t" + "ldr %[b], [%[b], #24]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[2] * B[5]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #8]\n\t" + "ldr %[b], [%[b], #20]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[3] * B[4]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #12]\n\t" + "ldr %[b], [%[b], #16]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[4] * B[3]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #16]\n\t" + "ldr %[b], [%[b], #12]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[5] * B[2]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #20]\n\t" + "ldr %[b], [%[b], #8]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[6] * B[1]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #24]\n\t" + "ldr %[b], [%[b], #4]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[7] * B[0]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #28]\n\t" + "ldr %[b], [%[b]]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "str r4, [sp, #28]\n\t" + "# A[8] * B[0]\n\t" + "movs r4, #0\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #32]\n\t" + "ldr %[b], [%[b]]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[7] * B[1]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #28]\n\t" + "ldr %[b], [%[b], #4]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[6] * B[2]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #24]\n\t" + "ldr %[b], [%[b], #8]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[5] * B[3]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #20]\n\t" + "ldr %[b], [%[b], #12]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[4] * B[4]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #16]\n\t" + "ldr %[b], [%[b], #16]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[3] * B[5]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #12]\n\t" + "ldr %[b], [%[b], #20]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[2] * B[6]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #8]\n\t" + "ldr %[b], [%[b], #24]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[1] * B[7]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #4]\n\t" + "ldr %[b], [%[b], #28]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[0] * B[8]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a]]\n\t" + "ldr %[b], [%[b], #32]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "str r5, [sp, #32]\n\t" + "# A[0] * B[9]\n\t" + "movs r5, #0\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a]]\n\t" + "ldr %[b], [%[b], #36]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[1] * B[8]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #4]\n\t" + "ldr %[b], [%[b], #32]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[2] * B[7]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #8]\n\t" + "ldr %[b], [%[b], #28]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[3] * B[6]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #12]\n\t" + "ldr %[b], [%[b], #24]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[4] * B[5]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #16]\n\t" + "ldr %[b], [%[b], #20]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[5] * B[4]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #20]\n\t" + "ldr %[b], [%[b], #16]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[6] * B[3]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #24]\n\t" + "ldr %[b], [%[b], #12]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[7] * B[2]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #28]\n\t" + "ldr %[b], [%[b], #8]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[8] * B[1]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #32]\n\t" + "ldr %[b], [%[b], #4]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[9] * B[0]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #36]\n\t" + "ldr %[b], [%[b]]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "str r3, [sp, #36]\n\t" + "# A[10] * B[0]\n\t" + "movs r3, #0\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #40]\n\t" + "ldr %[b], [%[b]]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[9] * B[1]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #36]\n\t" + "ldr %[b], [%[b], #4]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[8] * B[2]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #32]\n\t" + "ldr %[b], [%[b], #8]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[7] * B[3]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #28]\n\t" + "ldr %[b], [%[b], #12]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[6] * B[4]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #24]\n\t" + "ldr %[b], [%[b], #16]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[5] * B[5]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #20]\n\t" + "ldr %[b], [%[b], #20]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[4] * B[6]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #16]\n\t" + "ldr %[b], [%[b], #24]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[3] * B[7]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #12]\n\t" + "ldr %[b], [%[b], #28]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[2] * B[8]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #8]\n\t" + "ldr %[b], [%[b], #32]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[1] * B[9]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #4]\n\t" + "ldr %[b], [%[b], #36]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[0] * B[10]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a]]\n\t" + "ldr %[b], [%[b], #40]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "str r4, [sp, #40]\n\t" + "# A[0] * B[11]\n\t" + "movs r4, #0\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a]]\n\t" + "ldr %[b], [%[b], #44]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[1] * B[10]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #4]\n\t" + "ldr %[b], [%[b], #40]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[2] * B[9]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #8]\n\t" + "ldr %[b], [%[b], #36]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[3] * B[8]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #12]\n\t" + "ldr %[b], [%[b], #32]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[4] * B[7]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #16]\n\t" + "ldr %[b], [%[b], #28]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[5] * B[6]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #20]\n\t" + "ldr %[b], [%[b], #24]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[6] * B[5]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #24]\n\t" + "ldr %[b], [%[b], #20]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[7] * B[4]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #28]\n\t" + "ldr %[b], [%[b], #16]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[8] * B[3]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #32]\n\t" + "ldr %[b], [%[b], #12]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[9] * B[2]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #36]\n\t" + "ldr %[b], [%[b], #8]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[10] * B[1]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #40]\n\t" + "ldr %[b], [%[b], #4]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[11] * B[0]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #44]\n\t" + "ldr %[b], [%[b]]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "str r5, [sp, #44]\n\t" + "# A[11] * B[1]\n\t" + "movs r5, #0\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #44]\n\t" + "ldr %[b], [%[b], #4]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[10] * B[2]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #40]\n\t" + "ldr %[b], [%[b], #8]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[9] * B[3]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #36]\n\t" + "ldr %[b], [%[b], #12]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[8] * B[4]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #32]\n\t" + "ldr %[b], [%[b], #16]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[7] * B[5]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #28]\n\t" + "ldr %[b], [%[b], #20]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[6] * B[6]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #24]\n\t" + "ldr %[b], [%[b], #24]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[5] * B[7]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #20]\n\t" + "ldr %[b], [%[b], #28]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[4] * B[8]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #16]\n\t" + "ldr %[b], [%[b], #32]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[3] * B[9]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #12]\n\t" + "ldr %[b], [%[b], #36]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[2] * B[10]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #8]\n\t" + "ldr %[b], [%[b], #40]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[1] * B[11]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #4]\n\t" + "ldr %[b], [%[b], #44]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "mov %[r], r8\n\t" + "str r3, [%[r], #48]\n\t" + "movs %[r], #0\n\t" + "# A[2] * B[11]\n\t" + "movs r3, #0\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #8]\n\t" + "ldr %[b], [%[b], #44]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[3] * B[10]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #12]\n\t" + "ldr %[b], [%[b], #40]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[4] * B[9]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #16]\n\t" + "ldr %[b], [%[b], #36]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[5] * B[8]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #20]\n\t" + "ldr %[b], [%[b], #32]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[6] * B[7]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #24]\n\t" + "ldr %[b], [%[b], #28]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[7] * B[6]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #28]\n\t" + "ldr %[b], [%[b], #24]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[8] * B[5]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #32]\n\t" + "ldr %[b], [%[b], #20]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[9] * B[4]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #36]\n\t" + "ldr %[b], [%[b], #16]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[10] * B[3]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #40]\n\t" + "ldr %[b], [%[b], #12]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[11] * B[2]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #44]\n\t" + "ldr %[b], [%[b], #8]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "mov %[r], r8\n\t" + "str r4, [%[r], #52]\n\t" + "movs %[r], #0\n\t" + "# A[11] * B[3]\n\t" + "movs r4, #0\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #44]\n\t" + "ldr %[b], [%[b], #12]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[10] * B[4]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #40]\n\t" + "ldr %[b], [%[b], #16]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[9] * B[5]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #36]\n\t" + "ldr %[b], [%[b], #20]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[8] * B[6]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #32]\n\t" + "ldr %[b], [%[b], #24]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[7] * B[7]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #28]\n\t" + "ldr %[b], [%[b], #28]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[6] * B[8]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #24]\n\t" + "ldr %[b], [%[b], #32]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[5] * B[9]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #20]\n\t" + "ldr %[b], [%[b], #36]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[4] * B[10]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #16]\n\t" + "ldr %[b], [%[b], #40]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[3] * B[11]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #12]\n\t" + "ldr %[b], [%[b], #44]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "mov %[r], r8\n\t" + "str r5, [%[r], #56]\n\t" + "movs %[r], #0\n\t" + "# A[4] * B[11]\n\t" + "movs r5, #0\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #16]\n\t" + "ldr %[b], [%[b], #44]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[5] * B[10]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #20]\n\t" + "ldr %[b], [%[b], #40]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[6] * B[9]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #24]\n\t" + "ldr %[b], [%[b], #36]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[7] * B[8]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #28]\n\t" + "ldr %[b], [%[b], #32]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[8] * B[7]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #32]\n\t" + "ldr %[b], [%[b], #28]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[9] * B[6]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #36]\n\t" + "ldr %[b], [%[b], #24]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[10] * B[5]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #40]\n\t" + "ldr %[b], [%[b], #20]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[11] * B[4]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #44]\n\t" + "ldr %[b], [%[b], #16]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "mov %[r], r8\n\t" + "str r3, [%[r], #60]\n\t" + "movs %[r], #0\n\t" + "# A[11] * B[5]\n\t" + "movs r3, #0\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #44]\n\t" + "ldr %[b], [%[b], #20]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[10] * B[6]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #40]\n\t" + "ldr %[b], [%[b], #24]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[9] * B[7]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #36]\n\t" + "ldr %[b], [%[b], #28]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[8] * B[8]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #32]\n\t" + "ldr %[b], [%[b], #32]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[7] * B[9]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #28]\n\t" + "ldr %[b], [%[b], #36]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[6] * B[10]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #24]\n\t" + "ldr %[b], [%[b], #40]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[5] * B[11]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #20]\n\t" + "ldr %[b], [%[b], #44]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "mov %[r], r8\n\t" + "str r4, [%[r], #64]\n\t" + "movs %[r], #0\n\t" + "# A[6] * B[11]\n\t" + "movs r4, #0\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #24]\n\t" + "ldr %[b], [%[b], #44]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[7] * B[10]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #28]\n\t" + "ldr %[b], [%[b], #40]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[8] * B[9]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #32]\n\t" + "ldr %[b], [%[b], #36]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[9] * B[8]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #36]\n\t" + "ldr %[b], [%[b], #32]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[10] * B[7]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #40]\n\t" + "ldr %[b], [%[b], #28]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[11] * B[6]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #44]\n\t" + "ldr %[b], [%[b], #24]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "mov %[r], r8\n\t" + "str r5, [%[r], #68]\n\t" + "movs %[r], #0\n\t" + "# A[11] * B[7]\n\t" + "movs r5, #0\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #44]\n\t" + "ldr %[b], [%[b], #28]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[10] * B[8]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #40]\n\t" + "ldr %[b], [%[b], #32]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[9] * B[9]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #36]\n\t" + "ldr %[b], [%[b], #36]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[8] * B[10]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #32]\n\t" + "ldr %[b], [%[b], #40]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[7] * B[11]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #28]\n\t" + "ldr %[b], [%[b], #44]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "mov %[r], r8\n\t" + "str r3, [%[r], #72]\n\t" + "movs %[r], #0\n\t" + "# A[8] * B[11]\n\t" + "movs r3, #0\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #32]\n\t" + "ldr %[b], [%[b], #44]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[9] * B[10]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #36]\n\t" + "ldr %[b], [%[b], #40]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[10] * B[9]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #40]\n\t" + "ldr %[b], [%[b], #36]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[11] * B[8]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #44]\n\t" + "ldr %[b], [%[b], #32]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "mov %[r], r8\n\t" + "str r4, [%[r], #76]\n\t" + "movs %[r], #0\n\t" + "# A[11] * B[9]\n\t" + "movs r4, #0\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #44]\n\t" + "ldr %[b], [%[b], #36]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[10] * B[10]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #40]\n\t" + "ldr %[b], [%[b], #40]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[9] * B[11]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #36]\n\t" + "ldr %[b], [%[b], #44]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "mov %[r], r8\n\t" + "str r5, [%[r], #80]\n\t" + "movs %[r], #0\n\t" + "# A[10] * B[11]\n\t" + "movs r5, #0\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #40]\n\t" + "ldr %[b], [%[b], #44]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[11] * B[10]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #44]\n\t" + "ldr %[b], [%[b], #40]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "mov %[r], r8\n\t" + "str r3, [%[r], #84]\n\t" + "movs %[r], #0\n\t" + "# A[11] * B[11]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #44]\n\t" + "ldr %[b], [%[b], #44]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif + "mov %[r], r8\n\t" + "str r4, [%[r], #88]\n\t" + "str r5, [%[r], #92]\n\t" + "pop {r3, r4, r5, r6}\n\t" + "stm %[r]!, {r3, r4, r5, r6}\n\t" + "pop {r3, r4, r5, r6}\n\t" + "stm %[r]!, {r3, r4, r5, r6}\n\t" + "pop {r3, r4, r5, r6}\n\t" + "stm %[r]!, {r3, r4, r5, r6}\n\t" + : [r] "+r" (r), [a] "+r" (a), [b] "+r" (b) + : + : "memory", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10" + ); +} + +#endif /* !WOLFSSL_SP_LARGE_CODE */ +#ifndef WOLFSSL_SP_LARGE_CODE /* Square a and put result in r. (r = a * a) * * r A single precision integer. @@ -11627,7 +50431,7 @@ SP_NOINLINE static void sp_3072_sqr_12(sp_digit* r, const sp_digit* a) "mov r8, r3\n\t" "mov r11, %[r]\n\t" "movs r6, #0x60\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "negs r6, r6\n\t" #else "neg r6, r6\n\t" @@ -11636,32 +50440,36 @@ SP_NOINLINE static void sp_3072_sqr_12(sp_digit* r, const sp_digit* a) "mov r10, sp\n\t" "mov r9, %[a]\n\t" "\n" - "L_sp_3072_sqr_12_words_%=: \n\t" + "L_sp_3072_sqr_12_words_%=:\n\t" "movs %[r], #0\n\t" "movs r6, #44\n\t" "mov %[a], r8\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[a], %[a], r6\n\t" #else "sub %[a], %[a], r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r6\n\t" +#elif defined(__clang__) "sbcs r6, r6\n\t" #else "sbc r6, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "mvns r6, r6\n\t" #else "mvn r6, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands %[a], %[a], r6\n\t" +#elif defined(__clang__) "ands %[a], r6\n\t" #else "and %[a], r6\n\t" #endif "mov r2, r8\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r2, r2, %[a]\n\t" #else "sub r2, r2, %[a]\n\t" @@ -11669,207 +50477,213 @@ SP_NOINLINE static void sp_3072_sqr_12(sp_digit* r, const sp_digit* a) "add %[a], %[a], r9\n\t" "add r2, r2, r9\n\t" "\n" - "L_sp_3072_sqr_12_mul_%=: \n\t" + "L_sp_3072_sqr_12_mul_%=:\n\t" "cmp r2, %[a]\n\t" "beq L_sp_3072_sqr_12_sqr_%=\n\t" "# Multiply * 2: Start\n\t" - "ldr r6, [%[a]]\n\t" - "ldr r7, [r2]\n\t" -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsls r7, r7, #16\n\t" -#else - "lsl r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ + "ldrh r6, [%[a]]\n\t" + "ldrh r7, [r2]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) "muls r7, r6\n\t" #else "mul r7, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r7\n\t" #else "add r3, r3, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) "adcs r4, %[r]\n\t" #else "adc r4, %[r]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r7\n\t" #else "add r3, r3, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) "adcs r4, %[r]\n\t" #else "adc r4, %[r]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif "ldr r7, [r2]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r7, #16\n\t" #else "lsr r7, r7, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) "muls r6, r7\n\t" #else "mul r6, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r6, #16\n\t" #else "lsr r7, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #16\n\t" #else "lsl r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif "ldr r6, [%[a]]\n\t" "ldr r7, [r2]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, #16\n\t" #else "lsr r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r7, #16\n\t" #else "lsr r7, r7, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) "muls r7, r6\n\t" #else "mul r7, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, r7\n\t" #else "add r4, r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, r7\n\t" #else "add r4, r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif - "ldr r7, [r2]\n\t" -#ifdef __clang__ - "lsls r7, r7, #16\n\t" -#else - "lsl r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ + "ldrh r7, [r2]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) "muls r6, r7\n\t" #else "mul r6, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r6, #16\n\t" #else "lsr r7, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #16\n\t" #else "lsl r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" @@ -11877,114 +50691,101 @@ SP_NOINLINE static void sp_3072_sqr_12(sp_digit* r, const sp_digit* a) "# Multiply * 2: Done\n\t" "bal L_sp_3072_sqr_12_done_sqr_%=\n\t" "\n" - "L_sp_3072_sqr_12_sqr_%=: \n\t" + "L_sp_3072_sqr_12_sqr_%=:\n\t" + "mov r12, r2\n\t" + "ldr r2, [%[a]]\n\t" "# Square: Start\n\t" - "ldr r6, [%[a]]\n\t" -#ifdef __clang__ - "lsrs r7, r6, #16\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r2, #16\n\t" #else - "lsr r7, r6, #16\n\t" + "lsr r7, r2, #16\n\t" #endif -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ + "uxth r6, r2\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r6, r6\n\t" +#elif defined(__clang__) "muls r6, r6\n\t" #else "mul r6, r6\n\t" #endif -#ifdef __clang__ - "adds r3, r3, r6\n\t" -#else - "add r3, r3, r6\n\t" -#endif -#ifdef __clang__ - "adcs r4, %[r]\n\t" -#else - "adc r4, %[r]\n\t" -#endif -#ifdef __clang__ - "adcs r5, %[r]\n\t" -#else - "adc r5, %[r]\n\t" -#endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r7, r7, r7\n\t" +#elif defined(__clang__) "muls r7, r7\n\t" #else "mul r7, r7\n\t" #endif -#ifdef __clang__ - "adds r4, r4, r7\n\t" -#else - "add r4, r4, r7\n\t" -#endif -#ifdef __clang__ - "adcs r5, %[r]\n\t" -#else - "adc r5, %[r]\n\t" -#endif - "ldr r6, [%[a]]\n\t" -#ifdef __clang__ - "lsrs r7, r6, #16\n\t" -#else - "lsr r7, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "muls r6, r7\n\t" -#else - "mul r6, r7\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r6, #15\n\t" -#else - "lsr r7, r6, #15\n\t" -#endif -#ifdef __clang__ - "lsls r6, r6, #17\n\t" -#else - "lsl r6, r6, #17\n\t" -#endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r2, #16\n\t" +#else + "lsr r7, r2, #16\n\t" +#endif + "uxth r6, r2\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #15\n\t" +#else + "lsr r7, r6, #15\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #17\n\t" +#else + "lsl r6, r6, #17\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif "# Square: Done\n\t" + "mov r2, r12\n\t" "\n" - "L_sp_3072_sqr_12_done_sqr_%=: \n\t" -#ifdef __clang__ + "L_sp_3072_sqr_12_done_sqr_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[a], %[a], #4\n\t" #else "add %[a], %[a], #4\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r2, r2, #4\n\t" #else "sub r2, r2, #4\n\t" @@ -12000,14 +50801,14 @@ SP_NOINLINE static void sp_3072_sqr_12(sp_digit* r, const sp_digit* a) "cmp %[a], r7\n\t" "ble L_sp_3072_sqr_12_mul_%=\n\t" "\n" - "L_sp_3072_sqr_12_done_mul_%=: \n\t" + "L_sp_3072_sqr_12_done_mul_%=:\n\t" "mov %[r], r10\n\t" "mov r7, r8\n\t" "str r3, [%[r], r7]\n\t" "movs r3, r4\n\t" "movs r4, r5\n\t" "movs r5, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r7, r7, #4\n\t" #else "add r7, r7, #4\n\t" @@ -12022,10 +50823,10 @@ SP_NOINLINE static void sp_3072_sqr_12(sp_digit* r, const sp_digit* a) "mov %[a], r10\n\t" "movs r3, #0x5c\n\t" "\n" - "L_sp_3072_sqr_12_store_%=: \n\t" + "L_sp_3072_sqr_12_store_%=:\n\t" "ldr r6, [%[a], r3]\n\t" "str r6, [%[r], r3]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r3, r3, #4\n\t" #else "sub r3, r3, #4\n\t" @@ -12035,10 +50836,14782 @@ SP_NOINLINE static void sp_3072_sqr_12(sp_digit* r, const sp_digit* a) "add sp, sp, r6\n\t" : [r] "+r" (r), [a] "+r" (a) : - : "memory", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11" + : "memory", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12" ); } +#else +/* Square a and put result in r. (r = a * a) + * + * r A single precision integer. + * a A single precision integer. + */ +SP_NOINLINE static void sp_3072_sqr_12(sp_digit* r, const sp_digit* a) +{ + __asm__ __volatile__ ( + "sub sp, sp, #48\n\t" + "mov r8, %[r]\n\t" + "mov r9, %[a]\n\t" + "movs %[r], #0\n\t" + "ldm %[a]!, {r2, r3, r4, r5}\n\t" + "mov r10, r2\n\t" + "mov r11, r3\n\t" + "mov r12, r4\n\t" + "mov lr, r5\n\t" + "mov %[a], r9\n\t" + "# A[0] * A[0]\n\t" + "movs r4, #0\n\t" + "mov r7, r10\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" + "movs r2, r5\n\t" + "movs r3, r6\n\t" +#ifdef WOLFSSL_KEIL + "muls r2, r2, r2\n\t" +#elif defined(__clang__) + "muls r2, r2\n\t" +#else + "mul r2, r2\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r3, r3, r3\n\t" +#elif defined(__clang__) + "muls r3, r3\n\t" +#else + "mul r3, r3\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #15\n\t" +#else + "lsr r6, r5, #15\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #17\n\t" +#else + "lsl r5, r5, #17\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif + "str r2, [sp]\n\t" + "# A[1] * A[0]\n\t" + "movs r2, #0\n\t" + "mov %[a], r11\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "str r3, [sp, #4]\n\t" + "# A[2] * A[0]\n\t" + "movs r3, #0\n\t" + "mov %[a], r9\n\t" + "mov %[a], r12\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[1] * A[1]\n\t" + "mov r7, r11\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r5, r5\n\t" +#elif defined(__clang__) + "muls r5, r5\n\t" +#else + "mul r5, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r6, r6\n\t" +#elif defined(__clang__) + "muls r6, r6\n\t" +#else + "mul r6, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #15\n\t" +#else + "lsr r6, r5, #15\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #17\n\t" +#else + "lsl r5, r5, #17\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "str r4, [sp, #8]\n\t" + "# A[2] * A[1]\n\t" + "movs r4, #0\n\t" + "mov %[a], r9\n\t" + "mov %[a], r12\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[3] * A[0]\n\t" + "mov %[a], r9\n\t" + "mov r7, r10\n\t" + "mov %[a], lr\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "str r2, [sp, #12]\n\t" + "# A[4] * A[0]\n\t" + "movs r2, #0\n\t" + "mov %[a], r9\n\t" + "ldr %[a], [%[a], #16]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "# A[3] * A[1]\n\t" + "mov %[a], r9\n\t" + "mov r7, r11\n\t" + "mov %[a], lr\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "# A[2] * A[2]\n\t" + "mov r7, r12\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r5, r5\n\t" +#elif defined(__clang__) + "muls r5, r5\n\t" +#else + "mul r5, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r6, r6\n\t" +#elif defined(__clang__) + "muls r6, r6\n\t" +#else + "mul r6, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #15\n\t" +#else + "lsr r6, r5, #15\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #17\n\t" +#else + "lsl r5, r5, #17\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "str r3, [sp, #16]\n\t" + "# A[3] * A[2]\n\t" + "movs r3, #0\n\t" + "mov %[a], r9\n\t" + "mov %[a], lr\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[4] * A[1]\n\t" + "mov %[a], r9\n\t" + "mov r7, r11\n\t" + "ldr %[a], [%[a], #16]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[5] * A[0]\n\t" + "mov %[a], r9\n\t" + "mov r7, r10\n\t" + "ldr %[a], [%[a], #20]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "str r4, [sp, #20]\n\t" + "# A[6] * A[0]\n\t" + "movs r4, #0\n\t" + "mov %[a], r9\n\t" + "ldr %[a], [%[a], #24]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[5] * A[1]\n\t" + "mov %[a], r9\n\t" + "mov r7, r11\n\t" + "ldr %[a], [%[a], #20]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[4] * A[2]\n\t" + "mov %[a], r9\n\t" + "mov r7, r12\n\t" + "ldr %[a], [%[a], #16]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[3] * A[3]\n\t" + "mov r7, lr\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r5, r5\n\t" +#elif defined(__clang__) + "muls r5, r5\n\t" +#else + "mul r5, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r6, r6\n\t" +#elif defined(__clang__) + "muls r6, r6\n\t" +#else + "mul r6, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #15\n\t" +#else + "lsr r6, r5, #15\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #17\n\t" +#else + "lsl r5, r5, #17\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "str r2, [sp, #24]\n\t" + "# A[4] * A[3]\n\t" + "movs r2, #0\n\t" + "mov %[a], r9\n\t" + "ldr %[a], [%[a], #16]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "# A[5] * A[2]\n\t" + "mov %[a], r9\n\t" + "mov r7, r12\n\t" + "ldr %[a], [%[a], #20]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "# A[6] * A[1]\n\t" + "mov %[a], r9\n\t" + "mov r7, r11\n\t" + "ldr %[a], [%[a], #24]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "# A[7] * A[0]\n\t" + "mov %[a], r9\n\t" + "mov r7, r10\n\t" + "ldr %[a], [%[a], #28]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "str r3, [sp, #28]\n\t" + "# A[8] * A[0]\n\t" + "movs r3, #0\n\t" + "mov %[a], r9\n\t" + "ldr %[a], [%[a], #32]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[7] * A[1]\n\t" + "mov %[a], r9\n\t" + "mov r7, r11\n\t" + "ldr %[a], [%[a], #28]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[6] * A[2]\n\t" + "mov %[a], r9\n\t" + "mov r7, r12\n\t" + "ldr %[a], [%[a], #24]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[5] * A[3]\n\t" + "mov %[a], r9\n\t" + "mov r7, lr\n\t" + "ldr %[a], [%[a], #20]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[4] * A[4]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #16]\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r5, r5\n\t" +#elif defined(__clang__) + "muls r5, r5\n\t" +#else + "mul r5, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r6, r6\n\t" +#elif defined(__clang__) + "muls r6, r6\n\t" +#else + "mul r6, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #15\n\t" +#else + "lsr r6, r5, #15\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #17\n\t" +#else + "lsl r5, r5, #17\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "str r4, [sp, #32]\n\t" + "# A[5] * A[4]\n\t" + "movs r4, #0\n\t" + "ldr %[a], [%[a], #20]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[6] * A[3]\n\t" + "mov %[a], r9\n\t" + "mov r7, lr\n\t" + "ldr %[a], [%[a], #24]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[7] * A[2]\n\t" + "mov %[a], r9\n\t" + "mov r7, r12\n\t" + "ldr %[a], [%[a], #28]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[8] * A[1]\n\t" + "mov %[a], r9\n\t" + "mov r7, r11\n\t" + "ldr %[a], [%[a], #32]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[9] * A[0]\n\t" + "mov %[a], r9\n\t" + "mov r7, r10\n\t" + "ldr %[a], [%[a], #36]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "str r2, [sp, #36]\n\t" + "# A[10] * A[0]\n\t" + "movs r2, #0\n\t" + "mov %[a], r9\n\t" + "ldr %[a], [%[a], #40]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "# A[9] * A[1]\n\t" + "mov %[a], r9\n\t" + "mov r7, r11\n\t" + "ldr %[a], [%[a], #36]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "# A[8] * A[2]\n\t" + "mov %[a], r9\n\t" + "mov r7, r12\n\t" + "ldr %[a], [%[a], #32]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "# A[7] * A[3]\n\t" + "mov %[a], r9\n\t" + "mov r7, lr\n\t" + "ldr %[a], [%[a], #28]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "# A[6] * A[4]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #16]\n\t" + "ldr %[a], [%[a], #24]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "# A[5] * A[5]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #20]\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r5, r5\n\t" +#elif defined(__clang__) + "muls r5, r5\n\t" +#else + "mul r5, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r6, r6\n\t" +#elif defined(__clang__) + "muls r6, r6\n\t" +#else + "mul r6, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #15\n\t" +#else + "lsr r6, r5, #15\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #17\n\t" +#else + "lsl r5, r5, #17\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "str r3, [sp, #40]\n\t" + "# A[6] * A[5]\n\t" + "movs r3, #0\n\t" + "ldr %[a], [%[a], #24]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[7] * A[4]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #16]\n\t" + "ldr %[a], [%[a], #28]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[8] * A[3]\n\t" + "mov %[a], r9\n\t" + "mov r7, lr\n\t" + "ldr %[a], [%[a], #32]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[9] * A[2]\n\t" + "mov %[a], r9\n\t" + "mov r7, r12\n\t" + "ldr %[a], [%[a], #36]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[10] * A[1]\n\t" + "mov %[a], r9\n\t" + "mov r7, r11\n\t" + "ldr %[a], [%[a], #40]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[11] * A[0]\n\t" + "mov %[a], r9\n\t" + "mov r7, r10\n\t" + "ldr %[a], [%[a], #44]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "str r4, [sp, #44]\n\t" + "# A[11] * A[1]\n\t" + "movs r4, #0\n\t" + "mov %[a], r9\n\t" + "mov r7, r11\n\t" + "ldr %[a], [%[a], #44]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[10] * A[2]\n\t" + "mov %[a], r9\n\t" + "mov r7, r12\n\t" + "ldr %[a], [%[a], #40]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[9] * A[3]\n\t" + "mov %[a], r9\n\t" + "mov r7, lr\n\t" + "ldr %[a], [%[a], #36]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[8] * A[4]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #16]\n\t" + "ldr %[a], [%[a], #32]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[7] * A[5]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #20]\n\t" + "ldr %[a], [%[a], #28]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[6] * A[6]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #24]\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r5, r5\n\t" +#elif defined(__clang__) + "muls r5, r5\n\t" +#else + "mul r5, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r6, r6\n\t" +#elif defined(__clang__) + "muls r6, r6\n\t" +#else + "mul r6, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #15\n\t" +#else + "lsr r6, r5, #15\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #17\n\t" +#else + "lsl r5, r5, #17\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "mov %[r], r8\n\t" + "str r2, [%[r], #48]\n\t" + "movs %[r], #0\n\t" + "movs %[a], #32\n\t" + "add %[a], %[a], r9\n\t" + "ldm %[a]!, {r5, r6}\n\t" + "mov r10, r5\n\t" + "mov r11, r6\n\t" + "ldm %[a]!, {r5, r6}\n\t" + "mov r12, r5\n\t" + "mov lr, r6\n\t" + "mov %[a], r9\n\t" + "# A[7] * A[6]\n\t" + "movs r2, #0\n\t" + "ldr %[a], [%[a], #28]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "# A[8] * A[5]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #20]\n\t" + "mov %[a], r10\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "# A[9] * A[4]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #16]\n\t" + "mov %[a], r11\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "# A[10] * A[3]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #12]\n\t" + "mov %[a], r12\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "# A[11] * A[2]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #8]\n\t" + "mov %[a], lr\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "mov %[r], r8\n\t" + "str r3, [%[r], #52]\n\t" + "movs %[r], #0\n\t" + "# A[11] * A[3]\n\t" + "movs r3, #0\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #12]\n\t" + "mov %[a], lr\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[10] * A[4]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #16]\n\t" + "mov %[a], r12\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[9] * A[5]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #20]\n\t" + "mov %[a], r11\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[8] * A[6]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #24]\n\t" + "mov %[a], r10\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[7] * A[7]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #28]\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r5, r5\n\t" +#elif defined(__clang__) + "muls r5, r5\n\t" +#else + "mul r5, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r6, r6\n\t" +#elif defined(__clang__) + "muls r6, r6\n\t" +#else + "mul r6, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #15\n\t" +#else + "lsr r6, r5, #15\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #17\n\t" +#else + "lsl r5, r5, #17\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "mov %[r], r8\n\t" + "str r4, [%[r], #56]\n\t" + "movs %[r], #0\n\t" + "# A[8] * A[7]\n\t" + "movs r4, #0\n\t" + "mov %[a], r10\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[9] * A[6]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #24]\n\t" + "mov %[a], r11\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[10] * A[5]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #20]\n\t" + "mov %[a], r12\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[11] * A[4]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #16]\n\t" + "mov %[a], lr\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "mov %[r], r8\n\t" + "str r2, [%[r], #60]\n\t" + "movs %[r], #0\n\t" + "# A[11] * A[5]\n\t" + "movs r2, #0\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #20]\n\t" + "mov %[a], lr\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "# A[10] * A[6]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #24]\n\t" + "mov %[a], r12\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "# A[9] * A[7]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #28]\n\t" + "mov %[a], r11\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "# A[8] * A[8]\n\t" + "mov r7, r10\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r5, r5\n\t" +#elif defined(__clang__) + "muls r5, r5\n\t" +#else + "mul r5, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r6, r6\n\t" +#elif defined(__clang__) + "muls r6, r6\n\t" +#else + "mul r6, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #15\n\t" +#else + "lsr r6, r5, #15\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #17\n\t" +#else + "lsl r5, r5, #17\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "mov %[r], r8\n\t" + "str r3, [%[r], #64]\n\t" + "movs %[r], #0\n\t" + "# A[9] * A[8]\n\t" + "movs r3, #0\n\t" + "mov %[a], r9\n\t" + "mov %[a], r11\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[10] * A[7]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #28]\n\t" + "mov %[a], r12\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[11] * A[6]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #24]\n\t" + "mov %[a], lr\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "mov %[r], r8\n\t" + "str r4, [%[r], #68]\n\t" + "movs %[r], #0\n\t" + "# A[11] * A[7]\n\t" + "movs r4, #0\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #28]\n\t" + "mov %[a], lr\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[10] * A[8]\n\t" + "mov %[a], r9\n\t" + "mov r7, r10\n\t" + "mov %[a], r12\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[9] * A[9]\n\t" + "mov r7, r11\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r5, r5\n\t" +#elif defined(__clang__) + "muls r5, r5\n\t" +#else + "mul r5, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r6, r6\n\t" +#elif defined(__clang__) + "muls r6, r6\n\t" +#else + "mul r6, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #15\n\t" +#else + "lsr r6, r5, #15\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #17\n\t" +#else + "lsl r5, r5, #17\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "mov %[r], r8\n\t" + "str r2, [%[r], #72]\n\t" + "movs %[r], #0\n\t" + "# A[10] * A[9]\n\t" + "movs r2, #0\n\t" + "mov %[a], r9\n\t" + "mov %[a], r12\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "# A[11] * A[8]\n\t" + "mov %[a], r9\n\t" + "mov r7, r10\n\t" + "mov %[a], lr\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "mov %[r], r8\n\t" + "str r3, [%[r], #76]\n\t" + "movs %[r], #0\n\t" + "# A[11] * A[9]\n\t" + "movs r3, #0\n\t" + "mov %[a], r9\n\t" + "mov r7, r11\n\t" + "mov %[a], lr\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[10] * A[10]\n\t" + "mov r7, r12\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r5, r5\n\t" +#elif defined(__clang__) + "muls r5, r5\n\t" +#else + "mul r5, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r6, r6\n\t" +#elif defined(__clang__) + "muls r6, r6\n\t" +#else + "mul r6, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #15\n\t" +#else + "lsr r6, r5, #15\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #17\n\t" +#else + "lsl r5, r5, #17\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "mov %[r], r8\n\t" + "str r4, [%[r], #80]\n\t" + "movs %[r], #0\n\t" + "# A[11] * A[10]\n\t" + "movs r4, #0\n\t" + "mov %[a], r9\n\t" + "mov %[a], lr\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "mov %[r], r8\n\t" + "str r2, [%[r], #84]\n\t" + "movs %[r], #0\n\t" + "# A[11] * A[11]\n\t" + "mov %[a], r9\n\t" + "mov r7, lr\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r5, r5\n\t" +#elif defined(__clang__) + "muls r5, r5\n\t" +#else + "mul r5, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r6, r6\n\t" +#elif defined(__clang__) + "muls r6, r6\n\t" +#else + "mul r6, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #15\n\t" +#else + "lsr r6, r5, #15\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #17\n\t" +#else + "lsl r5, r5, #17\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "mov %[r], r8\n\t" + "str r3, [%[r], #88]\n\t" + "str r4, [%[r], #92]\n\t" + "pop {r2, r3, r4, r5}\n\t" + "stm %[r]!, {r2, r3, r4, r5}\n\t" + "pop {r2, r3, r4, r5}\n\t" + "stm %[r]!, {r2, r3, r4, r5}\n\t" + "pop {r2, r3, r4, r5}\n\t" + "stm %[r]!, {r2, r3, r4, r5}\n\t" + : [r] "+r" (r), [a] "+r" (a) + : + : "memory", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12", "lr" + ); +} + +#endif /* !WOLFSSL_SP_LARGE_CODE */ /* Add b to a into r. (r = a + b) * * r A single precision integer. @@ -12049,109 +65622,234 @@ SP_NOINLINE static sp_digit sp_3072_add_12(sp_digit* r, const sp_digit* a, const sp_digit* b) { __asm__ __volatile__ ( - "ldr r4, [%[a]]\n\t" - "ldr r5, [%[b]]\n\t" -#ifdef __clang__ - "adds r4, r4, r5\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" #else - "add r4, r4, r5\n\t" + "add r3, r3, r5\n\t" #endif - "str r4, [%[r]]\n\t" - "ldr r4, [%[a], #4]\n\t" - "ldr r5, [%[b], #4]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "movs %[r], #0\n\t" +#ifdef WOLFSSL_KEIL + "adcs %[r], %[r], %[r]\n\t" +#elif defined(__clang__) + "adcs %[r], %[r]\n\t" +#else + "adc %[r], %[r]\n\t" +#endif + : [r] "+r" (r), [a] "+r" (a), [b] "+r" (b) + : + : "memory", "r3", "r4", "r5", "r6" + ); + return (uint32_t)(size_t)r; +} + +/* Add b to a into r. (r = a + b) + * + * r A single precision integer. + * a A single precision integer. + * b A single precision integer. + */ +SP_NOINLINE static sp_digit sp_3072_add_to_word_12(sp_digit* r, sp_digit a, + const sp_digit* b) +{ + __asm__ __volatile__ ( + "movs r5, #0\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, %[a]\n\t" +#else + "add r3, r3, %[a]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) "adcs r4, r5\n\t" #else "adc r4, r5\n\t" #endif - "str r4, [%[r], #4]\n\t" - "ldr r4, [%[a], #8]\n\t" - "ldr r5, [%[b], #8]\n\t" -#ifdef __clang__ + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) "adcs r4, r5\n\t" #else "adc r4, r5\n\t" #endif - "str r4, [%[r], #8]\n\t" - "ldr r4, [%[a], #12]\n\t" - "ldr r5, [%[b], #12]\n\t" -#ifdef __clang__ + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) "adcs r4, r5\n\t" #else "adc r4, r5\n\t" #endif - "str r4, [%[r], #12]\n\t" - "ldr r4, [%[a], #16]\n\t" - "ldr r5, [%[b], #16]\n\t" -#ifdef __clang__ + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) "adcs r4, r5\n\t" #else "adc r4, r5\n\t" #endif - "str r4, [%[r], #16]\n\t" - "ldr r4, [%[a], #20]\n\t" - "ldr r5, [%[b], #20]\n\t" -#ifdef __clang__ + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) "adcs r4, r5\n\t" #else "adc r4, r5\n\t" #endif - "str r4, [%[r], #20]\n\t" - "ldr r4, [%[a], #24]\n\t" - "ldr r5, [%[b], #24]\n\t" -#ifdef __clang__ + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) "adcs r4, r5\n\t" #else "adc r4, r5\n\t" #endif - "str r4, [%[r], #24]\n\t" - "ldr r4, [%[a], #28]\n\t" - "ldr r5, [%[b], #28]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "movs %[r], #0\n\t" +#ifdef WOLFSSL_KEIL + "adcs %[r], %[r], %[r]\n\t" +#elif defined(__clang__) + "adcs %[r], %[r]\n\t" #else - "adc r4, r5\n\t" + "adc %[r], %[r]\n\t" #endif - "str r4, [%[r], #28]\n\t" - "ldr r4, [%[a], #32]\n\t" - "ldr r5, [%[b], #32]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #32]\n\t" - "ldr r4, [%[a], #36]\n\t" - "ldr r5, [%[b], #36]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #36]\n\t" - "ldr r4, [%[a], #40]\n\t" - "ldr r5, [%[b], #40]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #40]\n\t" - "ldr r4, [%[a], #44]\n\t" - "ldr r5, [%[b], #44]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #44]\n\t" - "movs r3, #0\n\t" -#ifdef __clang__ - "adcs r3, r3\n\t" -#else - "adc r3, r3\n\t" -#endif - "movs %[r], r3\n\t" : [r] "+r" (r), [a] "+r" (a), [b] "+r" (b) : : "memory", "r3", "r4", "r5" @@ -12168,208 +65866,230 @@ SP_NOINLINE static sp_digit sp_3072_sub_in_place_24(sp_digit* a, const sp_digit* b) { __asm__ __volatile__ ( - "movs r2, #0\n\t" - "ldr r3, [%[a]]\n\t" - "ldr r4, [%[a], #4]\n\t" - "ldr r5, [%[b]]\n\t" - "ldr r6, [%[b], #4]\n\t" -#ifdef __clang__ - "subs r3, r3, r5\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "subs r2, r2, r4\n\t" #else - "sub r3, r3, r5\n\t" + "sub r2, r2, r4\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" -#else - "sbc r4, r6\n\t" -#endif - "str r3, [%[a]]\n\t" - "str r4, [%[a], #4]\n\t" - "ldr r3, [%[a], #8]\n\t" - "ldr r4, [%[a], #12]\n\t" - "ldr r5, [%[b], #8]\n\t" - "ldr r6, [%[b], #12]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #8]\n\t" - "str r4, [%[a], #12]\n\t" - "ldr r3, [%[a], #16]\n\t" - "ldr r4, [%[a], #20]\n\t" - "ldr r5, [%[b], #16]\n\t" - "ldr r6, [%[b], #20]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #16]\n\t" - "str r4, [%[a], #20]\n\t" - "ldr r3, [%[a], #24]\n\t" - "ldr r4, [%[a], #28]\n\t" - "ldr r5, [%[b], #24]\n\t" - "ldr r6, [%[b], #28]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #24]\n\t" - "str r4, [%[a], #28]\n\t" - "ldr r3, [%[a], #32]\n\t" - "ldr r4, [%[a], #36]\n\t" - "ldr r5, [%[b], #32]\n\t" - "ldr r6, [%[b], #36]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #32]\n\t" - "str r4, [%[a], #36]\n\t" - "ldr r3, [%[a], #40]\n\t" - "ldr r4, [%[a], #44]\n\t" - "ldr r5, [%[b], #40]\n\t" - "ldr r6, [%[b], #44]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #40]\n\t" - "str r4, [%[a], #44]\n\t" - "ldr r3, [%[a], #48]\n\t" - "ldr r4, [%[a], #52]\n\t" - "ldr r5, [%[b], #48]\n\t" - "ldr r6, [%[b], #52]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #48]\n\t" - "str r4, [%[a], #52]\n\t" - "ldr r3, [%[a], #56]\n\t" - "ldr r4, [%[a], #60]\n\t" - "ldr r5, [%[b], #56]\n\t" - "ldr r6, [%[b], #60]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #56]\n\t" - "str r4, [%[a], #60]\n\t" - "ldr r3, [%[a], #64]\n\t" - "ldr r4, [%[a], #68]\n\t" - "ldr r5, [%[b], #64]\n\t" - "ldr r6, [%[b], #68]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #64]\n\t" - "str r4, [%[a], #68]\n\t" - "ldr r3, [%[a], #72]\n\t" - "ldr r4, [%[a], #76]\n\t" - "ldr r5, [%[b], #72]\n\t" - "ldr r6, [%[b], #76]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #72]\n\t" - "str r4, [%[a], #76]\n\t" - "ldr r3, [%[a], #80]\n\t" - "ldr r4, [%[a], #84]\n\t" - "ldr r5, [%[b], #80]\n\t" - "ldr r6, [%[b], #84]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #80]\n\t" - "str r4, [%[a], #84]\n\t" - "ldr r3, [%[a], #88]\n\t" - "ldr r4, [%[a], #92]\n\t" - "ldr r5, [%[b], #88]\n\t" - "ldr r6, [%[b], #92]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #88]\n\t" - "str r4, [%[a], #92]\n\t" -#ifdef __clang__ - "sbcs r2, r2\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r2, r2\n\t" + "sbc r3, r5\n\t" +#endif + "stm %[a]!, {r2, r3}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs %[a], %[a], %[a]\n\t" +#elif defined(__clang__) + "sbcs %[a], %[a]\n\t" +#else + "sbc %[a], %[a]\n\t" #endif - "movs %[a], r2\n\t" : [a] "+r" (a), [b] "+r" (b) : - : "memory", "r2", "r3", "r4", "r5", "r6" + : "memory", "r2", "r3", "r4", "r5" ); return (uint32_t)(size_t)a; } @@ -12384,208 +66104,219 @@ SP_NOINLINE static sp_digit sp_3072_add_24(sp_digit* r, const sp_digit* a, const sp_digit* b) { __asm__ __volatile__ ( - "ldr r4, [%[a]]\n\t" - "ldr r5, [%[b]]\n\t" -#ifdef __clang__ - "adds r4, r4, r5\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" #else - "add r4, r4, r5\n\t" + "add r3, r3, r5\n\t" #endif - "str r4, [%[r]]\n\t" - "ldr r4, [%[a], #4]\n\t" - "ldr r5, [%[b], #4]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #4]\n\t" - "ldr r4, [%[a], #8]\n\t" - "ldr r5, [%[b], #8]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #8]\n\t" - "ldr r4, [%[a], #12]\n\t" - "ldr r5, [%[b], #12]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #12]\n\t" - "ldr r4, [%[a], #16]\n\t" - "ldr r5, [%[b], #16]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #16]\n\t" - "ldr r4, [%[a], #20]\n\t" - "ldr r5, [%[b], #20]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #20]\n\t" - "ldr r4, [%[a], #24]\n\t" - "ldr r5, [%[b], #24]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #24]\n\t" - "ldr r4, [%[a], #28]\n\t" - "ldr r5, [%[b], #28]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #28]\n\t" - "ldr r4, [%[a], #32]\n\t" - "ldr r5, [%[b], #32]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #32]\n\t" - "ldr r4, [%[a], #36]\n\t" - "ldr r5, [%[b], #36]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #36]\n\t" - "ldr r4, [%[a], #40]\n\t" - "ldr r5, [%[b], #40]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #40]\n\t" - "ldr r4, [%[a], #44]\n\t" - "ldr r5, [%[b], #44]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #44]\n\t" - "ldr r4, [%[a], #48]\n\t" - "ldr r5, [%[b], #48]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #48]\n\t" - "ldr r4, [%[a], #52]\n\t" - "ldr r5, [%[b], #52]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #52]\n\t" - "ldr r4, [%[a], #56]\n\t" - "ldr r5, [%[b], #56]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #56]\n\t" - "ldr r4, [%[a], #60]\n\t" - "ldr r5, [%[b], #60]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #60]\n\t" - "ldr r4, [%[a], #64]\n\t" - "ldr r5, [%[b], #64]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #64]\n\t" - "ldr r4, [%[a], #68]\n\t" - "ldr r5, [%[b], #68]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #68]\n\t" - "ldr r4, [%[a], #72]\n\t" - "ldr r5, [%[b], #72]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #72]\n\t" - "ldr r4, [%[a], #76]\n\t" - "ldr r5, [%[b], #76]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #76]\n\t" - "ldr r4, [%[a], #80]\n\t" - "ldr r5, [%[b], #80]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #80]\n\t" - "ldr r4, [%[a], #84]\n\t" - "ldr r5, [%[b], #84]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #84]\n\t" - "ldr r4, [%[a], #88]\n\t" - "ldr r5, [%[b], #88]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #88]\n\t" - "ldr r4, [%[a], #92]\n\t" - "ldr r5, [%[b], #92]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #92]\n\t" - "movs r3, #0\n\t" -#ifdef __clang__ - "adcs r3, r3\n\t" + "stm %[r]!, {r3, r4}\n\t" + "movs %[r], #0\n\t" +#ifdef WOLFSSL_KEIL + "adcs %[r], %[r], %[r]\n\t" +#elif defined(__clang__) + "adcs %[r], %[r]\n\t" #else - "adc r3, r3\n\t" + "adc %[r], %[r]\n\t" #endif - "movs %[r], r3\n\t" : [r] "+r" (r), [a] "+r" (a), [b] "+r" (b) : - : "memory", "r3", "r4", "r5" + : "memory", "r3", "r4", "r5", "r6" ); return (uint32_t)(size_t)r; } @@ -12650,9 +66381,119 @@ SP_NOINLINE static void sp_3072_mul_24(sp_digit* r, const sp_digit* a, u += sp_3072_sub_in_place_24(z1, z2); u += sp_3072_sub_in_place_24(z1, z0); u += sp_3072_add_24(r + 12, r + 12, z1); - r[36] = u; - XMEMSET(r + 36 + 1, 0, sizeof(sp_digit) * (12 - 1)); - (void)sp_3072_add_24(r + 24, r + 24, z2); + u += sp_3072_add_12(r + 24, r + 24, z2); + (void)sp_3072_add_to_word_12(r + 36, u, z2 + 12); +} + +/* Double a into r. (r = a + a) + * + * r A single precision integer. + * a A single precision integer. + */ +SP_NOINLINE static sp_digit sp_3072_dbl_12(sp_digit* r, const sp_digit* a) +{ + __asm__ __volatile__ ( + "ldm %[a]!, {r2, r3, r4, r5}\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r2\n\t" +#else + "add r2, r2, r2\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r3\n\t" +#elif defined(__clang__) + "adcs r3, r3\n\t" +#else + "adc r3, r3\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r4\n\t" +#elif defined(__clang__) + "adcs r4, r4\n\t" +#else + "adc r4, r4\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r5\n\t" +#elif defined(__clang__) + "adcs r5, r5\n\t" +#else + "adc r5, r5\n\t" +#endif + "stm %[r]!, {r2, r3, r4, r5}\n\t" + "ldm %[a]!, {r2, r3, r4, r5}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r2\n\t" +#elif defined(__clang__) + "adcs r2, r2\n\t" +#else + "adc r2, r2\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r3\n\t" +#elif defined(__clang__) + "adcs r3, r3\n\t" +#else + "adc r3, r3\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r4\n\t" +#elif defined(__clang__) + "adcs r4, r4\n\t" +#else + "adc r4, r4\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r5\n\t" +#elif defined(__clang__) + "adcs r5, r5\n\t" +#else + "adc r5, r5\n\t" +#endif + "stm %[r]!, {r2, r3, r4, r5}\n\t" + "ldm %[a]!, {r2, r3, r4, r5}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r2\n\t" +#elif defined(__clang__) + "adcs r2, r2\n\t" +#else + "adc r2, r2\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r3\n\t" +#elif defined(__clang__) + "adcs r3, r3\n\t" +#else + "adc r3, r3\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r4\n\t" +#elif defined(__clang__) + "adcs r4, r4\n\t" +#else + "adc r4, r4\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r5\n\t" +#elif defined(__clang__) + "adcs r5, r5\n\t" +#else + "adc r5, r5\n\t" +#endif + "stm %[r]!, {r2, r3, r4, r5}\n\t" + "movs %[r], #0\n\t" +#ifdef WOLFSSL_KEIL + "adcs %[r], %[r], %[r]\n\t" +#elif defined(__clang__) + "adcs %[r], %[r]\n\t" +#else + "adc %[r], %[r]\n\t" +#endif + : [r] "+r" (r), [a] "+r" (a) + : + : "memory", "r2", "r3", "r4", "r5" + ); + return (uint32_t)(size_t)r; } /* Square a and put result in r. (r = a * a) @@ -12673,13 +66514,228 @@ SP_NOINLINE static void sp_3072_sqr_24(sp_digit* r, const sp_digit* a) sp_3072_sqr_12(z2, &a[12]); sp_3072_sqr_12(z0, a); sp_3072_mask_12(r + 24, a1, 0 - u); - u += sp_3072_add_12(r + 24, r + 24, r + 24); + u += sp_3072_dbl_12(r + 24, r + 24); u += sp_3072_sub_in_place_24(z1, z2); u += sp_3072_sub_in_place_24(z1, z0); u += sp_3072_add_24(r + 12, r + 12, z1); - r[36] = u; - XMEMSET(r + 36 + 1, 0, sizeof(sp_digit) * (12 - 1)); - (void)sp_3072_add_24(r + 24, r + 24, z2); + u += sp_3072_add_12(r + 24, r + 24, z2); + (void)sp_3072_add_to_word_12(r + 36, u, z2 + 12); +} + +/* Add b to a into r. (r = a + b) + * + * r A single precision integer. + * a A single precision integer. + * b A single precision integer. + */ +SP_NOINLINE static sp_digit sp_3072_add_to_word_24(sp_digit* r, sp_digit a, + const sp_digit* b) +{ + __asm__ __volatile__ ( + "movs r5, #0\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, %[a]\n\t" +#else + "add r3, r3, %[a]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "movs %[r], #0\n\t" +#ifdef WOLFSSL_KEIL + "adcs %[r], %[r], %[r]\n\t" +#elif defined(__clang__) + "adcs %[r], %[r]\n\t" +#else + "adc %[r], %[r]\n\t" +#endif + : [r] "+r" (r), [a] "+r" (a), [b] "+r" (b) + : + : "memory", "r3", "r4", "r5" + ); + return (uint32_t)(size_t)r; } /* Sub b from a into a. (a -= b) @@ -12691,421 +66747,446 @@ SP_NOINLINE static sp_digit sp_3072_sub_in_place_48(sp_digit* a, const sp_digit* b) { __asm__ __volatile__ ( - "movs r2, #0\n\t" - "ldr r3, [%[a]]\n\t" - "ldr r4, [%[a], #4]\n\t" - "ldr r5, [%[b]]\n\t" - "ldr r6, [%[b], #4]\n\t" -#ifdef __clang__ - "subs r3, r3, r5\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "subs r2, r2, r4\n\t" #else - "sub r3, r3, r5\n\t" + "sub r2, r2, r4\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" -#else - "sbc r4, r6\n\t" -#endif - "str r3, [%[a]]\n\t" - "str r4, [%[a], #4]\n\t" - "ldr r3, [%[a], #8]\n\t" - "ldr r4, [%[a], #12]\n\t" - "ldr r5, [%[b], #8]\n\t" - "ldr r6, [%[b], #12]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #8]\n\t" - "str r4, [%[a], #12]\n\t" - "ldr r3, [%[a], #16]\n\t" - "ldr r4, [%[a], #20]\n\t" - "ldr r5, [%[b], #16]\n\t" - "ldr r6, [%[b], #20]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #16]\n\t" - "str r4, [%[a], #20]\n\t" - "ldr r3, [%[a], #24]\n\t" - "ldr r4, [%[a], #28]\n\t" - "ldr r5, [%[b], #24]\n\t" - "ldr r6, [%[b], #28]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #24]\n\t" - "str r4, [%[a], #28]\n\t" - "ldr r3, [%[a], #32]\n\t" - "ldr r4, [%[a], #36]\n\t" - "ldr r5, [%[b], #32]\n\t" - "ldr r6, [%[b], #36]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #32]\n\t" - "str r4, [%[a], #36]\n\t" - "ldr r3, [%[a], #40]\n\t" - "ldr r4, [%[a], #44]\n\t" - "ldr r5, [%[b], #40]\n\t" - "ldr r6, [%[b], #44]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #40]\n\t" - "str r4, [%[a], #44]\n\t" - "ldr r3, [%[a], #48]\n\t" - "ldr r4, [%[a], #52]\n\t" - "ldr r5, [%[b], #48]\n\t" - "ldr r6, [%[b], #52]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #48]\n\t" - "str r4, [%[a], #52]\n\t" - "ldr r3, [%[a], #56]\n\t" - "ldr r4, [%[a], #60]\n\t" - "ldr r5, [%[b], #56]\n\t" - "ldr r6, [%[b], #60]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #56]\n\t" - "str r4, [%[a], #60]\n\t" - "ldr r3, [%[a], #64]\n\t" - "ldr r4, [%[a], #68]\n\t" - "ldr r5, [%[b], #64]\n\t" - "ldr r6, [%[b], #68]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #64]\n\t" - "str r4, [%[a], #68]\n\t" - "ldr r3, [%[a], #72]\n\t" - "ldr r4, [%[a], #76]\n\t" - "ldr r5, [%[b], #72]\n\t" - "ldr r6, [%[b], #76]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #72]\n\t" - "str r4, [%[a], #76]\n\t" - "ldr r3, [%[a], #80]\n\t" - "ldr r4, [%[a], #84]\n\t" - "ldr r5, [%[b], #80]\n\t" - "ldr r6, [%[b], #84]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #80]\n\t" - "str r4, [%[a], #84]\n\t" - "ldr r3, [%[a], #88]\n\t" - "ldr r4, [%[a], #92]\n\t" - "ldr r5, [%[b], #88]\n\t" - "ldr r6, [%[b], #92]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #88]\n\t" - "str r4, [%[a], #92]\n\t" - "ldr r3, [%[a], #96]\n\t" - "ldr r4, [%[a], #100]\n\t" - "ldr r5, [%[b], #96]\n\t" - "ldr r6, [%[b], #100]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #96]\n\t" - "str r4, [%[a], #100]\n\t" - "ldr r3, [%[a], #104]\n\t" - "ldr r4, [%[a], #108]\n\t" - "ldr r5, [%[b], #104]\n\t" - "ldr r6, [%[b], #108]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #104]\n\t" - "str r4, [%[a], #108]\n\t" - "ldr r3, [%[a], #112]\n\t" - "ldr r4, [%[a], #116]\n\t" - "ldr r5, [%[b], #112]\n\t" - "ldr r6, [%[b], #116]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #112]\n\t" - "str r4, [%[a], #116]\n\t" - "ldr r3, [%[a], #120]\n\t" - "ldr r4, [%[a], #124]\n\t" - "ldr r5, [%[b], #120]\n\t" - "ldr r6, [%[b], #124]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #120]\n\t" - "str r4, [%[a], #124]\n\t" -#ifdef __clang__ - "sbcs r2, r2\n\t" -#else - "sbc r2, r2\n\t" -#endif -#ifdef __clang__ - "adds %[a], %[a], #0x80\n\t" -#else - "add %[a], %[a], #0x80\n\t" -#endif -#ifdef __clang__ - "adds %[b], %[b], #0x80\n\t" -#else - "add %[b], %[b], #0x80\n\t" -#endif - "movs r5, #0\n\t" -#ifdef __clang__ - "subs r5, r5, r2\n\t" -#else - "sub r5, r5, r2\n\t" -#endif - "ldr r3, [%[a]]\n\t" - "ldr r4, [%[a], #4]\n\t" - "ldr r5, [%[b]]\n\t" - "ldr r6, [%[b], #4]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a]]\n\t" - "str r4, [%[a], #4]\n\t" - "ldr r3, [%[a], #8]\n\t" - "ldr r4, [%[a], #12]\n\t" - "ldr r5, [%[b], #8]\n\t" - "ldr r6, [%[b], #12]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #8]\n\t" - "str r4, [%[a], #12]\n\t" - "ldr r3, [%[a], #16]\n\t" - "ldr r4, [%[a], #20]\n\t" - "ldr r5, [%[b], #16]\n\t" - "ldr r6, [%[b], #20]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #16]\n\t" - "str r4, [%[a], #20]\n\t" - "ldr r3, [%[a], #24]\n\t" - "ldr r4, [%[a], #28]\n\t" - "ldr r5, [%[b], #24]\n\t" - "ldr r6, [%[b], #28]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #24]\n\t" - "str r4, [%[a], #28]\n\t" - "ldr r3, [%[a], #32]\n\t" - "ldr r4, [%[a], #36]\n\t" - "ldr r5, [%[b], #32]\n\t" - "ldr r6, [%[b], #36]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #32]\n\t" - "str r4, [%[a], #36]\n\t" - "ldr r3, [%[a], #40]\n\t" - "ldr r4, [%[a], #44]\n\t" - "ldr r5, [%[b], #40]\n\t" - "ldr r6, [%[b], #44]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #40]\n\t" - "str r4, [%[a], #44]\n\t" - "ldr r3, [%[a], #48]\n\t" - "ldr r4, [%[a], #52]\n\t" - "ldr r5, [%[b], #48]\n\t" - "ldr r6, [%[b], #52]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #48]\n\t" - "str r4, [%[a], #52]\n\t" - "ldr r3, [%[a], #56]\n\t" - "ldr r4, [%[a], #60]\n\t" - "ldr r5, [%[b], #56]\n\t" - "ldr r6, [%[b], #60]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #56]\n\t" - "str r4, [%[a], #60]\n\t" -#ifdef __clang__ - "sbcs r2, r2\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r2, r2\n\t" + "sbc r3, r5\n\t" +#endif + "stm %[a]!, {r2, r3}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs %[a], %[a], %[a]\n\t" +#elif defined(__clang__) + "sbcs %[a], %[a]\n\t" +#else + "sbc %[a], %[a]\n\t" #endif - "movs %[a], r2\n\t" : [a] "+r" (a), [b] "+r" (b) : - : "memory", "r2", "r3", "r4", "r5", "r6" + : "memory", "r2", "r3", "r4", "r5" ); return (uint32_t)(size_t)a; } @@ -13120,429 +67201,420 @@ SP_NOINLINE static sp_digit sp_3072_add_48(sp_digit* r, const sp_digit* a, const sp_digit* b) { __asm__ __volatile__ ( - "movs r6, #0\n\t" -#ifdef __clang__ - "mvns r6, r6\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" #else - "mvn r6, r6\n\t" + "add r3, r3, r5\n\t" #endif - "ldr r4, [%[a]]\n\t" - "ldr r5, [%[b]]\n\t" -#ifdef __clang__ - "adds r4, r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "add r4, r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r]]\n\t" - "ldr r4, [%[a], #4]\n\t" - "ldr r5, [%[b], #4]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #4]\n\t" - "ldr r4, [%[a], #8]\n\t" - "ldr r5, [%[b], #8]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #8]\n\t" - "ldr r4, [%[a], #12]\n\t" - "ldr r5, [%[b], #12]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #12]\n\t" - "ldr r4, [%[a], #16]\n\t" - "ldr r5, [%[b], #16]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #16]\n\t" - "ldr r4, [%[a], #20]\n\t" - "ldr r5, [%[b], #20]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #20]\n\t" - "ldr r4, [%[a], #24]\n\t" - "ldr r5, [%[b], #24]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #24]\n\t" - "ldr r4, [%[a], #28]\n\t" - "ldr r5, [%[b], #28]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #28]\n\t" - "ldr r4, [%[a], #32]\n\t" - "ldr r5, [%[b], #32]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #32]\n\t" - "ldr r4, [%[a], #36]\n\t" - "ldr r5, [%[b], #36]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #36]\n\t" - "ldr r4, [%[a], #40]\n\t" - "ldr r5, [%[b], #40]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #40]\n\t" - "ldr r4, [%[a], #44]\n\t" - "ldr r5, [%[b], #44]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #44]\n\t" - "ldr r4, [%[a], #48]\n\t" - "ldr r5, [%[b], #48]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #48]\n\t" - "ldr r4, [%[a], #52]\n\t" - "ldr r5, [%[b], #52]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #52]\n\t" - "ldr r4, [%[a], #56]\n\t" - "ldr r5, [%[b], #56]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #56]\n\t" - "ldr r4, [%[a], #60]\n\t" - "ldr r5, [%[b], #60]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #60]\n\t" - "ldr r4, [%[a], #64]\n\t" - "ldr r5, [%[b], #64]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #64]\n\t" - "ldr r4, [%[a], #68]\n\t" - "ldr r5, [%[b], #68]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #68]\n\t" - "ldr r4, [%[a], #72]\n\t" - "ldr r5, [%[b], #72]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #72]\n\t" - "ldr r4, [%[a], #76]\n\t" - "ldr r5, [%[b], #76]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #76]\n\t" - "ldr r4, [%[a], #80]\n\t" - "ldr r5, [%[b], #80]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #80]\n\t" - "ldr r4, [%[a], #84]\n\t" - "ldr r5, [%[b], #84]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #84]\n\t" - "ldr r4, [%[a], #88]\n\t" - "ldr r5, [%[b], #88]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #88]\n\t" - "ldr r4, [%[a], #92]\n\t" - "ldr r5, [%[b], #92]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #92]\n\t" - "ldr r4, [%[a], #96]\n\t" - "ldr r5, [%[b], #96]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #96]\n\t" - "ldr r4, [%[a], #100]\n\t" - "ldr r5, [%[b], #100]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #100]\n\t" - "ldr r4, [%[a], #104]\n\t" - "ldr r5, [%[b], #104]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #104]\n\t" - "ldr r4, [%[a], #108]\n\t" - "ldr r5, [%[b], #108]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #108]\n\t" - "ldr r4, [%[a], #112]\n\t" - "ldr r5, [%[b], #112]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #112]\n\t" - "ldr r4, [%[a], #116]\n\t" - "ldr r5, [%[b], #116]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #116]\n\t" - "ldr r4, [%[a], #120]\n\t" - "ldr r5, [%[b], #120]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #120]\n\t" - "ldr r4, [%[a], #124]\n\t" - "ldr r5, [%[b], #124]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #124]\n\t" - "movs r3, #0\n\t" -#ifdef __clang__ - "adcs r3, r3\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r3, r3\n\t" + "adc r4, r6\n\t" #endif -#ifdef __clang__ - "adds %[a], %[a], #0x80\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "add %[a], %[a], #0x80\n\t" + "adc r3, r5\n\t" #endif -#ifdef __clang__ - "adds %[b], %[b], #0x80\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "add %[b], %[b], #0x80\n\t" + "adc r4, r6\n\t" #endif -#ifdef __clang__ - "adds %[r], %[r], #0x80\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "add %[r], %[r], #0x80\n\t" + "adc r3, r5\n\t" #endif -#ifdef __clang__ - "adds r3, r3, r6\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "add r3, r3, r6\n\t" + "adc r4, r6\n\t" #endif - "ldr r4, [%[a]]\n\t" - "ldr r5, [%[b]]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r]]\n\t" - "ldr r4, [%[a], #4]\n\t" - "ldr r5, [%[b], #4]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #4]\n\t" - "ldr r4, [%[a], #8]\n\t" - "ldr r5, [%[b], #8]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #8]\n\t" - "ldr r4, [%[a], #12]\n\t" - "ldr r5, [%[b], #12]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #12]\n\t" - "ldr r4, [%[a], #16]\n\t" - "ldr r5, [%[b], #16]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #16]\n\t" - "ldr r4, [%[a], #20]\n\t" - "ldr r5, [%[b], #20]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #20]\n\t" - "ldr r4, [%[a], #24]\n\t" - "ldr r5, [%[b], #24]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #24]\n\t" - "ldr r4, [%[a], #28]\n\t" - "ldr r5, [%[b], #28]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #28]\n\t" - "ldr r4, [%[a], #32]\n\t" - "ldr r5, [%[b], #32]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #32]\n\t" - "ldr r4, [%[a], #36]\n\t" - "ldr r5, [%[b], #36]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #36]\n\t" - "ldr r4, [%[a], #40]\n\t" - "ldr r5, [%[b], #40]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "movs %[r], #0\n\t" +#ifdef WOLFSSL_KEIL + "adcs %[r], %[r], %[r]\n\t" +#elif defined(__clang__) + "adcs %[r], %[r]\n\t" #else - "adc r4, r5\n\t" + "adc %[r], %[r]\n\t" #endif - "str r4, [%[r], #40]\n\t" - "ldr r4, [%[a], #44]\n\t" - "ldr r5, [%[b], #44]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #44]\n\t" - "ldr r4, [%[a], #48]\n\t" - "ldr r5, [%[b], #48]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #48]\n\t" - "ldr r4, [%[a], #52]\n\t" - "ldr r5, [%[b], #52]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #52]\n\t" - "ldr r4, [%[a], #56]\n\t" - "ldr r5, [%[b], #56]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #56]\n\t" - "ldr r4, [%[a], #60]\n\t" - "ldr r5, [%[b], #60]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #60]\n\t" - "movs r3, #0\n\t" -#ifdef __clang__ - "adcs r3, r3\n\t" -#else - "adc r3, r3\n\t" -#endif - "movs %[r], r3\n\t" : [r] "+r" (r), [a] "+r" (a), [b] "+r" (b) : : "memory", "r3", "r4", "r5", "r6" @@ -13610,9 +67682,209 @@ SP_NOINLINE static void sp_3072_mul_48(sp_digit* r, const sp_digit* a, u += sp_3072_sub_in_place_48(z1, z2); u += sp_3072_sub_in_place_48(z1, z0); u += sp_3072_add_48(r + 24, r + 24, z1); - r[72] = u; - XMEMSET(r + 72 + 1, 0, sizeof(sp_digit) * (24 - 1)); - (void)sp_3072_add_48(r + 48, r + 48, z2); + u += sp_3072_add_24(r + 48, r + 48, z2); + (void)sp_3072_add_to_word_24(r + 72, u, z2 + 24); +} + +/* Double a into r. (r = a + a) + * + * r A single precision integer. + * a A single precision integer. + */ +SP_NOINLINE static sp_digit sp_3072_dbl_24(sp_digit* r, const sp_digit* a) +{ + __asm__ __volatile__ ( + "ldm %[a]!, {r2, r3, r4, r5}\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r2\n\t" +#else + "add r2, r2, r2\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r3\n\t" +#elif defined(__clang__) + "adcs r3, r3\n\t" +#else + "adc r3, r3\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r4\n\t" +#elif defined(__clang__) + "adcs r4, r4\n\t" +#else + "adc r4, r4\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r5\n\t" +#elif defined(__clang__) + "adcs r5, r5\n\t" +#else + "adc r5, r5\n\t" +#endif + "stm %[r]!, {r2, r3, r4, r5}\n\t" + "ldm %[a]!, {r2, r3, r4, r5}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r2\n\t" +#elif defined(__clang__) + "adcs r2, r2\n\t" +#else + "adc r2, r2\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r3\n\t" +#elif defined(__clang__) + "adcs r3, r3\n\t" +#else + "adc r3, r3\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r4\n\t" +#elif defined(__clang__) + "adcs r4, r4\n\t" +#else + "adc r4, r4\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r5\n\t" +#elif defined(__clang__) + "adcs r5, r5\n\t" +#else + "adc r5, r5\n\t" +#endif + "stm %[r]!, {r2, r3, r4, r5}\n\t" + "ldm %[a]!, {r2, r3, r4, r5}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r2\n\t" +#elif defined(__clang__) + "adcs r2, r2\n\t" +#else + "adc r2, r2\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r3\n\t" +#elif defined(__clang__) + "adcs r3, r3\n\t" +#else + "adc r3, r3\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r4\n\t" +#elif defined(__clang__) + "adcs r4, r4\n\t" +#else + "adc r4, r4\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r5\n\t" +#elif defined(__clang__) + "adcs r5, r5\n\t" +#else + "adc r5, r5\n\t" +#endif + "stm %[r]!, {r2, r3, r4, r5}\n\t" + "ldm %[a]!, {r2, r3, r4, r5}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r2\n\t" +#elif defined(__clang__) + "adcs r2, r2\n\t" +#else + "adc r2, r2\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r3\n\t" +#elif defined(__clang__) + "adcs r3, r3\n\t" +#else + "adc r3, r3\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r4\n\t" +#elif defined(__clang__) + "adcs r4, r4\n\t" +#else + "adc r4, r4\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r5\n\t" +#elif defined(__clang__) + "adcs r5, r5\n\t" +#else + "adc r5, r5\n\t" +#endif + "stm %[r]!, {r2, r3, r4, r5}\n\t" + "ldm %[a]!, {r2, r3, r4, r5}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r2\n\t" +#elif defined(__clang__) + "adcs r2, r2\n\t" +#else + "adc r2, r2\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r3\n\t" +#elif defined(__clang__) + "adcs r3, r3\n\t" +#else + "adc r3, r3\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r4\n\t" +#elif defined(__clang__) + "adcs r4, r4\n\t" +#else + "adc r4, r4\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r5\n\t" +#elif defined(__clang__) + "adcs r5, r5\n\t" +#else + "adc r5, r5\n\t" +#endif + "stm %[r]!, {r2, r3, r4, r5}\n\t" + "ldm %[a]!, {r2, r3, r4, r5}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r2\n\t" +#elif defined(__clang__) + "adcs r2, r2\n\t" +#else + "adc r2, r2\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r3\n\t" +#elif defined(__clang__) + "adcs r3, r3\n\t" +#else + "adc r3, r3\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r4\n\t" +#elif defined(__clang__) + "adcs r4, r4\n\t" +#else + "adc r4, r4\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r5\n\t" +#elif defined(__clang__) + "adcs r5, r5\n\t" +#else + "adc r5, r5\n\t" +#endif + "stm %[r]!, {r2, r3, r4, r5}\n\t" + "movs %[r], #0\n\t" +#ifdef WOLFSSL_KEIL + "adcs %[r], %[r], %[r]\n\t" +#elif defined(__clang__) + "adcs %[r], %[r]\n\t" +#else + "adc %[r], %[r]\n\t" +#endif + : [r] "+r" (r), [a] "+r" (a) + : + : "memory", "r2", "r3", "r4", "r5" + ); + return (uint32_t)(size_t)r; } /* Square a and put result in r. (r = a * a) @@ -13633,13 +67905,420 @@ SP_NOINLINE static void sp_3072_sqr_48(sp_digit* r, const sp_digit* a) sp_3072_sqr_24(z2, &a[24]); sp_3072_sqr_24(z0, a); sp_3072_mask_24(r + 48, a1, 0 - u); - u += sp_3072_add_24(r + 48, r + 48, r + 48); + u += sp_3072_dbl_24(r + 48, r + 48); u += sp_3072_sub_in_place_48(z1, z2); u += sp_3072_sub_in_place_48(z1, z0); u += sp_3072_add_48(r + 24, r + 24, z1); - r[72] = u; - XMEMSET(r + 72 + 1, 0, sizeof(sp_digit) * (24 - 1)); - (void)sp_3072_add_48(r + 48, r + 48, z2); + u += sp_3072_add_24(r + 48, r + 48, z2); + (void)sp_3072_add_to_word_24(r + 72, u, z2 + 24); +} + +/* Add b to a into r. (r = a + b) + * + * r A single precision integer. + * a A single precision integer. + * b A single precision integer. + */ +SP_NOINLINE static sp_digit sp_3072_add_to_word_48(sp_digit* r, sp_digit a, + const sp_digit* b) +{ + __asm__ __volatile__ ( + "movs r5, #0\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, %[a]\n\t" +#else + "add r3, r3, %[a]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "movs %[r], #0\n\t" +#ifdef WOLFSSL_KEIL + "adcs %[r], %[r], %[r]\n\t" +#elif defined(__clang__) + "adcs %[r], %[r]\n\t" +#else + "adc %[r], %[r]\n\t" +#endif + : [r] "+r" (r), [a] "+r" (a), [b] "+r" (b) + : + : "memory", "r3", "r4", "r5" + ); + return (uint32_t)(size_t)r; } /* Sub b from a into a. (a -= b) @@ -13651,826 +68330,878 @@ SP_NOINLINE static sp_digit sp_3072_sub_in_place_96(sp_digit* a, const sp_digit* b) { __asm__ __volatile__ ( - "movs r2, #0\n\t" - "ldr r3, [%[a]]\n\t" - "ldr r4, [%[a], #4]\n\t" - "ldr r5, [%[b]]\n\t" - "ldr r6, [%[b], #4]\n\t" -#ifdef __clang__ - "subs r3, r3, r5\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "subs r2, r2, r4\n\t" #else - "sub r3, r3, r5\n\t" + "sub r2, r2, r4\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" -#else - "sbc r4, r6\n\t" -#endif - "str r3, [%[a]]\n\t" - "str r4, [%[a], #4]\n\t" - "ldr r3, [%[a], #8]\n\t" - "ldr r4, [%[a], #12]\n\t" - "ldr r5, [%[b], #8]\n\t" - "ldr r6, [%[b], #12]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #8]\n\t" - "str r4, [%[a], #12]\n\t" - "ldr r3, [%[a], #16]\n\t" - "ldr r4, [%[a], #20]\n\t" - "ldr r5, [%[b], #16]\n\t" - "ldr r6, [%[b], #20]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #16]\n\t" - "str r4, [%[a], #20]\n\t" - "ldr r3, [%[a], #24]\n\t" - "ldr r4, [%[a], #28]\n\t" - "ldr r5, [%[b], #24]\n\t" - "ldr r6, [%[b], #28]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #24]\n\t" - "str r4, [%[a], #28]\n\t" - "ldr r3, [%[a], #32]\n\t" - "ldr r4, [%[a], #36]\n\t" - "ldr r5, [%[b], #32]\n\t" - "ldr r6, [%[b], #36]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #32]\n\t" - "str r4, [%[a], #36]\n\t" - "ldr r3, [%[a], #40]\n\t" - "ldr r4, [%[a], #44]\n\t" - "ldr r5, [%[b], #40]\n\t" - "ldr r6, [%[b], #44]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #40]\n\t" - "str r4, [%[a], #44]\n\t" - "ldr r3, [%[a], #48]\n\t" - "ldr r4, [%[a], #52]\n\t" - "ldr r5, [%[b], #48]\n\t" - "ldr r6, [%[b], #52]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #48]\n\t" - "str r4, [%[a], #52]\n\t" - "ldr r3, [%[a], #56]\n\t" - "ldr r4, [%[a], #60]\n\t" - "ldr r5, [%[b], #56]\n\t" - "ldr r6, [%[b], #60]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #56]\n\t" - "str r4, [%[a], #60]\n\t" - "ldr r3, [%[a], #64]\n\t" - "ldr r4, [%[a], #68]\n\t" - "ldr r5, [%[b], #64]\n\t" - "ldr r6, [%[b], #68]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #64]\n\t" - "str r4, [%[a], #68]\n\t" - "ldr r3, [%[a], #72]\n\t" - "ldr r4, [%[a], #76]\n\t" - "ldr r5, [%[b], #72]\n\t" - "ldr r6, [%[b], #76]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #72]\n\t" - "str r4, [%[a], #76]\n\t" - "ldr r3, [%[a], #80]\n\t" - "ldr r4, [%[a], #84]\n\t" - "ldr r5, [%[b], #80]\n\t" - "ldr r6, [%[b], #84]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #80]\n\t" - "str r4, [%[a], #84]\n\t" - "ldr r3, [%[a], #88]\n\t" - "ldr r4, [%[a], #92]\n\t" - "ldr r5, [%[b], #88]\n\t" - "ldr r6, [%[b], #92]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #88]\n\t" - "str r4, [%[a], #92]\n\t" - "ldr r3, [%[a], #96]\n\t" - "ldr r4, [%[a], #100]\n\t" - "ldr r5, [%[b], #96]\n\t" - "ldr r6, [%[b], #100]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #96]\n\t" - "str r4, [%[a], #100]\n\t" - "ldr r3, [%[a], #104]\n\t" - "ldr r4, [%[a], #108]\n\t" - "ldr r5, [%[b], #104]\n\t" - "ldr r6, [%[b], #108]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #104]\n\t" - "str r4, [%[a], #108]\n\t" - "ldr r3, [%[a], #112]\n\t" - "ldr r4, [%[a], #116]\n\t" - "ldr r5, [%[b], #112]\n\t" - "ldr r6, [%[b], #116]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #112]\n\t" - "str r4, [%[a], #116]\n\t" - "ldr r3, [%[a], #120]\n\t" - "ldr r4, [%[a], #124]\n\t" - "ldr r5, [%[b], #120]\n\t" - "ldr r6, [%[b], #124]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #120]\n\t" - "str r4, [%[a], #124]\n\t" -#ifdef __clang__ - "sbcs r2, r2\n\t" -#else - "sbc r2, r2\n\t" -#endif -#ifdef __clang__ - "adds %[a], %[a], #0x80\n\t" -#else - "add %[a], %[a], #0x80\n\t" -#endif -#ifdef __clang__ - "adds %[b], %[b], #0x80\n\t" -#else - "add %[b], %[b], #0x80\n\t" -#endif - "movs r5, #0\n\t" -#ifdef __clang__ - "subs r5, r5, r2\n\t" -#else - "sub r5, r5, r2\n\t" -#endif - "ldr r3, [%[a]]\n\t" - "ldr r4, [%[a], #4]\n\t" - "ldr r5, [%[b]]\n\t" - "ldr r6, [%[b], #4]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a]]\n\t" - "str r4, [%[a], #4]\n\t" - "ldr r3, [%[a], #8]\n\t" - "ldr r4, [%[a], #12]\n\t" - "ldr r5, [%[b], #8]\n\t" - "ldr r6, [%[b], #12]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #8]\n\t" - "str r4, [%[a], #12]\n\t" - "ldr r3, [%[a], #16]\n\t" - "ldr r4, [%[a], #20]\n\t" - "ldr r5, [%[b], #16]\n\t" - "ldr r6, [%[b], #20]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #16]\n\t" - "str r4, [%[a], #20]\n\t" - "ldr r3, [%[a], #24]\n\t" - "ldr r4, [%[a], #28]\n\t" - "ldr r5, [%[b], #24]\n\t" - "ldr r6, [%[b], #28]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #24]\n\t" - "str r4, [%[a], #28]\n\t" - "ldr r3, [%[a], #32]\n\t" - "ldr r4, [%[a], #36]\n\t" - "ldr r5, [%[b], #32]\n\t" - "ldr r6, [%[b], #36]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #32]\n\t" - "str r4, [%[a], #36]\n\t" - "ldr r3, [%[a], #40]\n\t" - "ldr r4, [%[a], #44]\n\t" - "ldr r5, [%[b], #40]\n\t" - "ldr r6, [%[b], #44]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #40]\n\t" - "str r4, [%[a], #44]\n\t" - "ldr r3, [%[a], #48]\n\t" - "ldr r4, [%[a], #52]\n\t" - "ldr r5, [%[b], #48]\n\t" - "ldr r6, [%[b], #52]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #48]\n\t" - "str r4, [%[a], #52]\n\t" - "ldr r3, [%[a], #56]\n\t" - "ldr r4, [%[a], #60]\n\t" - "ldr r5, [%[b], #56]\n\t" - "ldr r6, [%[b], #60]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #56]\n\t" - "str r4, [%[a], #60]\n\t" - "ldr r3, [%[a], #64]\n\t" - "ldr r4, [%[a], #68]\n\t" - "ldr r5, [%[b], #64]\n\t" - "ldr r6, [%[b], #68]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #64]\n\t" - "str r4, [%[a], #68]\n\t" - "ldr r3, [%[a], #72]\n\t" - "ldr r4, [%[a], #76]\n\t" - "ldr r5, [%[b], #72]\n\t" - "ldr r6, [%[b], #76]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #72]\n\t" - "str r4, [%[a], #76]\n\t" - "ldr r3, [%[a], #80]\n\t" - "ldr r4, [%[a], #84]\n\t" - "ldr r5, [%[b], #80]\n\t" - "ldr r6, [%[b], #84]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #80]\n\t" - "str r4, [%[a], #84]\n\t" - "ldr r3, [%[a], #88]\n\t" - "ldr r4, [%[a], #92]\n\t" - "ldr r5, [%[b], #88]\n\t" - "ldr r6, [%[b], #92]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #88]\n\t" - "str r4, [%[a], #92]\n\t" - "ldr r3, [%[a], #96]\n\t" - "ldr r4, [%[a], #100]\n\t" - "ldr r5, [%[b], #96]\n\t" - "ldr r6, [%[b], #100]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #96]\n\t" - "str r4, [%[a], #100]\n\t" - "ldr r3, [%[a], #104]\n\t" - "ldr r4, [%[a], #108]\n\t" - "ldr r5, [%[b], #104]\n\t" - "ldr r6, [%[b], #108]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #104]\n\t" - "str r4, [%[a], #108]\n\t" - "ldr r3, [%[a], #112]\n\t" - "ldr r4, [%[a], #116]\n\t" - "ldr r5, [%[b], #112]\n\t" - "ldr r6, [%[b], #116]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #112]\n\t" - "str r4, [%[a], #116]\n\t" - "ldr r3, [%[a], #120]\n\t" - "ldr r4, [%[a], #124]\n\t" - "ldr r5, [%[b], #120]\n\t" - "ldr r6, [%[b], #124]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #120]\n\t" - "str r4, [%[a], #124]\n\t" -#ifdef __clang__ - "sbcs r2, r2\n\t" -#else - "sbc r2, r2\n\t" -#endif -#ifdef __clang__ - "adds %[a], %[a], #0x80\n\t" -#else - "add %[a], %[a], #0x80\n\t" -#endif -#ifdef __clang__ - "adds %[b], %[b], #0x80\n\t" -#else - "add %[b], %[b], #0x80\n\t" -#endif - "movs r5, #0\n\t" -#ifdef __clang__ - "subs r5, r5, r2\n\t" -#else - "sub r5, r5, r2\n\t" -#endif - "ldr r3, [%[a]]\n\t" - "ldr r4, [%[a], #4]\n\t" - "ldr r5, [%[b]]\n\t" - "ldr r6, [%[b], #4]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a]]\n\t" - "str r4, [%[a], #4]\n\t" - "ldr r3, [%[a], #8]\n\t" - "ldr r4, [%[a], #12]\n\t" - "ldr r5, [%[b], #8]\n\t" - "ldr r6, [%[b], #12]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #8]\n\t" - "str r4, [%[a], #12]\n\t" - "ldr r3, [%[a], #16]\n\t" - "ldr r4, [%[a], #20]\n\t" - "ldr r5, [%[b], #16]\n\t" - "ldr r6, [%[b], #20]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #16]\n\t" - "str r4, [%[a], #20]\n\t" - "ldr r3, [%[a], #24]\n\t" - "ldr r4, [%[a], #28]\n\t" - "ldr r5, [%[b], #24]\n\t" - "ldr r6, [%[b], #28]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #24]\n\t" - "str r4, [%[a], #28]\n\t" - "ldr r3, [%[a], #32]\n\t" - "ldr r4, [%[a], #36]\n\t" - "ldr r5, [%[b], #32]\n\t" - "ldr r6, [%[b], #36]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #32]\n\t" - "str r4, [%[a], #36]\n\t" - "ldr r3, [%[a], #40]\n\t" - "ldr r4, [%[a], #44]\n\t" - "ldr r5, [%[b], #40]\n\t" - "ldr r6, [%[b], #44]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #40]\n\t" - "str r4, [%[a], #44]\n\t" - "ldr r3, [%[a], #48]\n\t" - "ldr r4, [%[a], #52]\n\t" - "ldr r5, [%[b], #48]\n\t" - "ldr r6, [%[b], #52]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #48]\n\t" - "str r4, [%[a], #52]\n\t" - "ldr r3, [%[a], #56]\n\t" - "ldr r4, [%[a], #60]\n\t" - "ldr r5, [%[b], #56]\n\t" - "ldr r6, [%[b], #60]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #56]\n\t" - "str r4, [%[a], #60]\n\t" - "ldr r3, [%[a], #64]\n\t" - "ldr r4, [%[a], #68]\n\t" - "ldr r5, [%[b], #64]\n\t" - "ldr r6, [%[b], #68]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #64]\n\t" - "str r4, [%[a], #68]\n\t" - "ldr r3, [%[a], #72]\n\t" - "ldr r4, [%[a], #76]\n\t" - "ldr r5, [%[b], #72]\n\t" - "ldr r6, [%[b], #76]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #72]\n\t" - "str r4, [%[a], #76]\n\t" - "ldr r3, [%[a], #80]\n\t" - "ldr r4, [%[a], #84]\n\t" - "ldr r5, [%[b], #80]\n\t" - "ldr r6, [%[b], #84]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #80]\n\t" - "str r4, [%[a], #84]\n\t" - "ldr r3, [%[a], #88]\n\t" - "ldr r4, [%[a], #92]\n\t" - "ldr r5, [%[b], #88]\n\t" - "ldr r6, [%[b], #92]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #88]\n\t" - "str r4, [%[a], #92]\n\t" - "ldr r3, [%[a], #96]\n\t" - "ldr r4, [%[a], #100]\n\t" - "ldr r5, [%[b], #96]\n\t" - "ldr r6, [%[b], #100]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #96]\n\t" - "str r4, [%[a], #100]\n\t" - "ldr r3, [%[a], #104]\n\t" - "ldr r4, [%[a], #108]\n\t" - "ldr r5, [%[b], #104]\n\t" - "ldr r6, [%[b], #108]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #104]\n\t" - "str r4, [%[a], #108]\n\t" - "ldr r3, [%[a], #112]\n\t" - "ldr r4, [%[a], #116]\n\t" - "ldr r5, [%[b], #112]\n\t" - "ldr r6, [%[b], #116]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #112]\n\t" - "str r4, [%[a], #116]\n\t" - "ldr r3, [%[a], #120]\n\t" - "ldr r4, [%[a], #124]\n\t" - "ldr r5, [%[b], #120]\n\t" - "ldr r6, [%[b], #124]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #120]\n\t" - "str r4, [%[a], #124]\n\t" -#ifdef __clang__ - "sbcs r2, r2\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r2, r2\n\t" + "sbc r3, r5\n\t" +#endif + "stm %[a]!, {r2, r3}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs %[a], %[a], %[a]\n\t" +#elif defined(__clang__) + "sbcs %[a], %[a]\n\t" +#else + "sbc %[a], %[a]\n\t" #endif - "movs %[a], r2\n\t" : [a] "+r" (a), [b] "+r" (b) : - : "memory", "r2", "r3", "r4", "r5", "r6" + : "memory", "r2", "r3", "r4", "r5" ); return (uint32_t)(size_t)a; } @@ -14485,839 +69216,828 @@ SP_NOINLINE static sp_digit sp_3072_add_96(sp_digit* r, const sp_digit* a, const sp_digit* b) { __asm__ __volatile__ ( - "movs r6, #0\n\t" -#ifdef __clang__ - "mvns r6, r6\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "mvn r6, r6\n\t" -#endif - "ldr r4, [%[a]]\n\t" - "ldr r5, [%[b]]\n\t" -#ifdef __clang__ - "adds r4, r4, r5\n\t" -#else - "add r4, r4, r5\n\t" -#endif - "str r4, [%[r]]\n\t" - "ldr r4, [%[a], #4]\n\t" - "ldr r5, [%[b], #4]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #4]\n\t" - "ldr r4, [%[a], #8]\n\t" - "ldr r5, [%[b], #8]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #8]\n\t" - "ldr r4, [%[a], #12]\n\t" - "ldr r5, [%[b], #12]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #12]\n\t" - "ldr r4, [%[a], #16]\n\t" - "ldr r5, [%[b], #16]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #16]\n\t" - "ldr r4, [%[a], #20]\n\t" - "ldr r5, [%[b], #20]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #20]\n\t" - "ldr r4, [%[a], #24]\n\t" - "ldr r5, [%[b], #24]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #24]\n\t" - "ldr r4, [%[a], #28]\n\t" - "ldr r5, [%[b], #28]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #28]\n\t" - "ldr r4, [%[a], #32]\n\t" - "ldr r5, [%[b], #32]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #32]\n\t" - "ldr r4, [%[a], #36]\n\t" - "ldr r5, [%[b], #36]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #36]\n\t" - "ldr r4, [%[a], #40]\n\t" - "ldr r5, [%[b], #40]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #40]\n\t" - "ldr r4, [%[a], #44]\n\t" - "ldr r5, [%[b], #44]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #44]\n\t" - "ldr r4, [%[a], #48]\n\t" - "ldr r5, [%[b], #48]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #48]\n\t" - "ldr r4, [%[a], #52]\n\t" - "ldr r5, [%[b], #52]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #52]\n\t" - "ldr r4, [%[a], #56]\n\t" - "ldr r5, [%[b], #56]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #56]\n\t" - "ldr r4, [%[a], #60]\n\t" - "ldr r5, [%[b], #60]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #60]\n\t" - "ldr r4, [%[a], #64]\n\t" - "ldr r5, [%[b], #64]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #64]\n\t" - "ldr r4, [%[a], #68]\n\t" - "ldr r5, [%[b], #68]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #68]\n\t" - "ldr r4, [%[a], #72]\n\t" - "ldr r5, [%[b], #72]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #72]\n\t" - "ldr r4, [%[a], #76]\n\t" - "ldr r5, [%[b], #76]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #76]\n\t" - "ldr r4, [%[a], #80]\n\t" - "ldr r5, [%[b], #80]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #80]\n\t" - "ldr r4, [%[a], #84]\n\t" - "ldr r5, [%[b], #84]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #84]\n\t" - "ldr r4, [%[a], #88]\n\t" - "ldr r5, [%[b], #88]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #88]\n\t" - "ldr r4, [%[a], #92]\n\t" - "ldr r5, [%[b], #92]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #92]\n\t" - "ldr r4, [%[a], #96]\n\t" - "ldr r5, [%[b], #96]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #96]\n\t" - "ldr r4, [%[a], #100]\n\t" - "ldr r5, [%[b], #100]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #100]\n\t" - "ldr r4, [%[a], #104]\n\t" - "ldr r5, [%[b], #104]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #104]\n\t" - "ldr r4, [%[a], #108]\n\t" - "ldr r5, [%[b], #108]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #108]\n\t" - "ldr r4, [%[a], #112]\n\t" - "ldr r5, [%[b], #112]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #112]\n\t" - "ldr r4, [%[a], #116]\n\t" - "ldr r5, [%[b], #116]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #116]\n\t" - "ldr r4, [%[a], #120]\n\t" - "ldr r5, [%[b], #120]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #120]\n\t" - "ldr r4, [%[a], #124]\n\t" - "ldr r5, [%[b], #124]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #124]\n\t" - "movs r3, #0\n\t" -#ifdef __clang__ - "adcs r3, r3\n\t" -#else - "adc r3, r3\n\t" -#endif -#ifdef __clang__ - "adds %[a], %[a], #0x80\n\t" -#else - "add %[a], %[a], #0x80\n\t" -#endif -#ifdef __clang__ - "adds %[b], %[b], #0x80\n\t" -#else - "add %[b], %[b], #0x80\n\t" -#endif -#ifdef __clang__ - "adds %[r], %[r], #0x80\n\t" -#else - "add %[r], %[r], #0x80\n\t" -#endif -#ifdef __clang__ - "adds r3, r3, r6\n\t" -#else - "add r3, r3, r6\n\t" -#endif - "ldr r4, [%[a]]\n\t" - "ldr r5, [%[b]]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r]]\n\t" - "ldr r4, [%[a], #4]\n\t" - "ldr r5, [%[b], #4]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #4]\n\t" - "ldr r4, [%[a], #8]\n\t" - "ldr r5, [%[b], #8]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #8]\n\t" - "ldr r4, [%[a], #12]\n\t" - "ldr r5, [%[b], #12]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #12]\n\t" - "ldr r4, [%[a], #16]\n\t" - "ldr r5, [%[b], #16]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #16]\n\t" - "ldr r4, [%[a], #20]\n\t" - "ldr r5, [%[b], #20]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #20]\n\t" - "ldr r4, [%[a], #24]\n\t" - "ldr r5, [%[b], #24]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #24]\n\t" - "ldr r4, [%[a], #28]\n\t" - "ldr r5, [%[b], #28]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #28]\n\t" - "ldr r4, [%[a], #32]\n\t" - "ldr r5, [%[b], #32]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #32]\n\t" - "ldr r4, [%[a], #36]\n\t" - "ldr r5, [%[b], #36]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #36]\n\t" - "ldr r4, [%[a], #40]\n\t" - "ldr r5, [%[b], #40]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #40]\n\t" - "ldr r4, [%[a], #44]\n\t" - "ldr r5, [%[b], #44]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #44]\n\t" - "ldr r4, [%[a], #48]\n\t" - "ldr r5, [%[b], #48]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #48]\n\t" - "ldr r4, [%[a], #52]\n\t" - "ldr r5, [%[b], #52]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #52]\n\t" - "ldr r4, [%[a], #56]\n\t" - "ldr r5, [%[b], #56]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #56]\n\t" - "ldr r4, [%[a], #60]\n\t" - "ldr r5, [%[b], #60]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #60]\n\t" - "ldr r4, [%[a], #64]\n\t" - "ldr r5, [%[b], #64]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #64]\n\t" - "ldr r4, [%[a], #68]\n\t" - "ldr r5, [%[b], #68]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #68]\n\t" - "ldr r4, [%[a], #72]\n\t" - "ldr r5, [%[b], #72]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #72]\n\t" - "ldr r4, [%[a], #76]\n\t" - "ldr r5, [%[b], #76]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #76]\n\t" - "ldr r4, [%[a], #80]\n\t" - "ldr r5, [%[b], #80]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #80]\n\t" - "ldr r4, [%[a], #84]\n\t" - "ldr r5, [%[b], #84]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #84]\n\t" - "ldr r4, [%[a], #88]\n\t" - "ldr r5, [%[b], #88]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #88]\n\t" - "ldr r4, [%[a], #92]\n\t" - "ldr r5, [%[b], #92]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #92]\n\t" - "ldr r4, [%[a], #96]\n\t" - "ldr r5, [%[b], #96]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #96]\n\t" - "ldr r4, [%[a], #100]\n\t" - "ldr r5, [%[b], #100]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #100]\n\t" - "ldr r4, [%[a], #104]\n\t" - "ldr r5, [%[b], #104]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #104]\n\t" - "ldr r4, [%[a], #108]\n\t" - "ldr r5, [%[b], #108]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #108]\n\t" - "ldr r4, [%[a], #112]\n\t" - "ldr r5, [%[b], #112]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #112]\n\t" - "ldr r4, [%[a], #116]\n\t" - "ldr r5, [%[b], #116]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #116]\n\t" - "ldr r4, [%[a], #120]\n\t" - "ldr r5, [%[b], #120]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #120]\n\t" - "ldr r4, [%[a], #124]\n\t" - "ldr r5, [%[b], #124]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #124]\n\t" - "movs r3, #0\n\t" -#ifdef __clang__ - "adcs r3, r3\n\t" -#else - "adc r3, r3\n\t" -#endif -#ifdef __clang__ - "adds %[a], %[a], #0x80\n\t" -#else - "add %[a], %[a], #0x80\n\t" -#endif -#ifdef __clang__ - "adds %[b], %[b], #0x80\n\t" -#else - "add %[b], %[b], #0x80\n\t" -#endif -#ifdef __clang__ - "adds %[r], %[r], #0x80\n\t" -#else - "add %[r], %[r], #0x80\n\t" -#endif -#ifdef __clang__ - "adds r3, r3, r6\n\t" -#else - "add r3, r3, r6\n\t" -#endif - "ldr r4, [%[a]]\n\t" - "ldr r5, [%[b]]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r]]\n\t" - "ldr r4, [%[a], #4]\n\t" - "ldr r5, [%[b], #4]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #4]\n\t" - "ldr r4, [%[a], #8]\n\t" - "ldr r5, [%[b], #8]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #8]\n\t" - "ldr r4, [%[a], #12]\n\t" - "ldr r5, [%[b], #12]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #12]\n\t" - "ldr r4, [%[a], #16]\n\t" - "ldr r5, [%[b], #16]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #16]\n\t" - "ldr r4, [%[a], #20]\n\t" - "ldr r5, [%[b], #20]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #20]\n\t" - "ldr r4, [%[a], #24]\n\t" - "ldr r5, [%[b], #24]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #24]\n\t" - "ldr r4, [%[a], #28]\n\t" - "ldr r5, [%[b], #28]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #28]\n\t" - "ldr r4, [%[a], #32]\n\t" - "ldr r5, [%[b], #32]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #32]\n\t" - "ldr r4, [%[a], #36]\n\t" - "ldr r5, [%[b], #36]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #36]\n\t" - "ldr r4, [%[a], #40]\n\t" - "ldr r5, [%[b], #40]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #40]\n\t" - "ldr r4, [%[a], #44]\n\t" - "ldr r5, [%[b], #44]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #44]\n\t" - "ldr r4, [%[a], #48]\n\t" - "ldr r5, [%[b], #48]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #48]\n\t" - "ldr r4, [%[a], #52]\n\t" - "ldr r5, [%[b], #52]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #52]\n\t" - "ldr r4, [%[a], #56]\n\t" - "ldr r5, [%[b], #56]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #56]\n\t" - "ldr r4, [%[a], #60]\n\t" - "ldr r5, [%[b], #60]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #60]\n\t" - "ldr r4, [%[a], #64]\n\t" - "ldr r5, [%[b], #64]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #64]\n\t" - "ldr r4, [%[a], #68]\n\t" - "ldr r5, [%[b], #68]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #68]\n\t" - "ldr r4, [%[a], #72]\n\t" - "ldr r5, [%[b], #72]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #72]\n\t" - "ldr r4, [%[a], #76]\n\t" - "ldr r5, [%[b], #76]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #76]\n\t" - "ldr r4, [%[a], #80]\n\t" - "ldr r5, [%[b], #80]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #80]\n\t" - "ldr r4, [%[a], #84]\n\t" - "ldr r5, [%[b], #84]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #84]\n\t" - "ldr r4, [%[a], #88]\n\t" - "ldr r5, [%[b], #88]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #88]\n\t" - "ldr r4, [%[a], #92]\n\t" - "ldr r5, [%[b], #92]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #92]\n\t" - "ldr r4, [%[a], #96]\n\t" - "ldr r5, [%[b], #96]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #96]\n\t" - "ldr r4, [%[a], #100]\n\t" - "ldr r5, [%[b], #100]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #100]\n\t" - "ldr r4, [%[a], #104]\n\t" - "ldr r5, [%[b], #104]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #104]\n\t" - "ldr r4, [%[a], #108]\n\t" - "ldr r5, [%[b], #108]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #108]\n\t" - "ldr r4, [%[a], #112]\n\t" - "ldr r5, [%[b], #112]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #112]\n\t" - "ldr r4, [%[a], #116]\n\t" - "ldr r5, [%[b], #116]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #116]\n\t" - "ldr r4, [%[a], #120]\n\t" - "ldr r5, [%[b], #120]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #120]\n\t" - "ldr r4, [%[a], #124]\n\t" - "ldr r5, [%[b], #124]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #124]\n\t" - "movs r3, #0\n\t" -#ifdef __clang__ - "adcs r3, r3\n\t" + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "movs %[r], #0\n\t" +#ifdef WOLFSSL_KEIL + "adcs %[r], %[r], %[r]\n\t" +#elif defined(__clang__) + "adcs %[r], %[r]\n\t" #else - "adc r3, r3\n\t" + "adc %[r], %[r]\n\t" #endif - "movs %[r], r3\n\t" : [r] "+r" (r), [a] "+r" (a), [b] "+r" (b) : : "memory", "r3", "r4", "r5", "r6" @@ -15385,9 +70105,389 @@ SP_NOINLINE static void sp_3072_mul_96(sp_digit* r, const sp_digit* a, u += sp_3072_sub_in_place_96(z1, z2); u += sp_3072_sub_in_place_96(z1, z0); u += sp_3072_add_96(r + 48, r + 48, z1); - r[144] = u; - XMEMSET(r + 144 + 1, 0, sizeof(sp_digit) * (48 - 1)); - (void)sp_3072_add_96(r + 96, r + 96, z2); + u += sp_3072_add_48(r + 96, r + 96, z2); + (void)sp_3072_add_to_word_48(r + 144, u, z2 + 48); +} + +/* Double a into r. (r = a + a) + * + * r A single precision integer. + * a A single precision integer. + */ +SP_NOINLINE static sp_digit sp_3072_dbl_48(sp_digit* r, const sp_digit* a) +{ + __asm__ __volatile__ ( + "ldm %[a]!, {r2, r3, r4, r5}\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r2\n\t" +#else + "add r2, r2, r2\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r3\n\t" +#elif defined(__clang__) + "adcs r3, r3\n\t" +#else + "adc r3, r3\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r4\n\t" +#elif defined(__clang__) + "adcs r4, r4\n\t" +#else + "adc r4, r4\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r5\n\t" +#elif defined(__clang__) + "adcs r5, r5\n\t" +#else + "adc r5, r5\n\t" +#endif + "stm %[r]!, {r2, r3, r4, r5}\n\t" + "ldm %[a]!, {r2, r3, r4, r5}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r2\n\t" +#elif defined(__clang__) + "adcs r2, r2\n\t" +#else + "adc r2, r2\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r3\n\t" +#elif defined(__clang__) + "adcs r3, r3\n\t" +#else + "adc r3, r3\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r4\n\t" +#elif defined(__clang__) + "adcs r4, r4\n\t" +#else + "adc r4, r4\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r5\n\t" +#elif defined(__clang__) + "adcs r5, r5\n\t" +#else + "adc r5, r5\n\t" +#endif + "stm %[r]!, {r2, r3, r4, r5}\n\t" + "ldm %[a]!, {r2, r3, r4, r5}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r2\n\t" +#elif defined(__clang__) + "adcs r2, r2\n\t" +#else + "adc r2, r2\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r3\n\t" +#elif defined(__clang__) + "adcs r3, r3\n\t" +#else + "adc r3, r3\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r4\n\t" +#elif defined(__clang__) + "adcs r4, r4\n\t" +#else + "adc r4, r4\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r5\n\t" +#elif defined(__clang__) + "adcs r5, r5\n\t" +#else + "adc r5, r5\n\t" +#endif + "stm %[r]!, {r2, r3, r4, r5}\n\t" + "ldm %[a]!, {r2, r3, r4, r5}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r2\n\t" +#elif defined(__clang__) + "adcs r2, r2\n\t" +#else + "adc r2, r2\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r3\n\t" +#elif defined(__clang__) + "adcs r3, r3\n\t" +#else + "adc r3, r3\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r4\n\t" +#elif defined(__clang__) + "adcs r4, r4\n\t" +#else + "adc r4, r4\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r5\n\t" +#elif defined(__clang__) + "adcs r5, r5\n\t" +#else + "adc r5, r5\n\t" +#endif + "stm %[r]!, {r2, r3, r4, r5}\n\t" + "ldm %[a]!, {r2, r3, r4, r5}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r2\n\t" +#elif defined(__clang__) + "adcs r2, r2\n\t" +#else + "adc r2, r2\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r3\n\t" +#elif defined(__clang__) + "adcs r3, r3\n\t" +#else + "adc r3, r3\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r4\n\t" +#elif defined(__clang__) + "adcs r4, r4\n\t" +#else + "adc r4, r4\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r5\n\t" +#elif defined(__clang__) + "adcs r5, r5\n\t" +#else + "adc r5, r5\n\t" +#endif + "stm %[r]!, {r2, r3, r4, r5}\n\t" + "ldm %[a]!, {r2, r3, r4, r5}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r2\n\t" +#elif defined(__clang__) + "adcs r2, r2\n\t" +#else + "adc r2, r2\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r3\n\t" +#elif defined(__clang__) + "adcs r3, r3\n\t" +#else + "adc r3, r3\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r4\n\t" +#elif defined(__clang__) + "adcs r4, r4\n\t" +#else + "adc r4, r4\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r5\n\t" +#elif defined(__clang__) + "adcs r5, r5\n\t" +#else + "adc r5, r5\n\t" +#endif + "stm %[r]!, {r2, r3, r4, r5}\n\t" + "ldm %[a]!, {r2, r3, r4, r5}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r2\n\t" +#elif defined(__clang__) + "adcs r2, r2\n\t" +#else + "adc r2, r2\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r3\n\t" +#elif defined(__clang__) + "adcs r3, r3\n\t" +#else + "adc r3, r3\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r4\n\t" +#elif defined(__clang__) + "adcs r4, r4\n\t" +#else + "adc r4, r4\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r5\n\t" +#elif defined(__clang__) + "adcs r5, r5\n\t" +#else + "adc r5, r5\n\t" +#endif + "stm %[r]!, {r2, r3, r4, r5}\n\t" + "ldm %[a]!, {r2, r3, r4, r5}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r2\n\t" +#elif defined(__clang__) + "adcs r2, r2\n\t" +#else + "adc r2, r2\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r3\n\t" +#elif defined(__clang__) + "adcs r3, r3\n\t" +#else + "adc r3, r3\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r4\n\t" +#elif defined(__clang__) + "adcs r4, r4\n\t" +#else + "adc r4, r4\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r5\n\t" +#elif defined(__clang__) + "adcs r5, r5\n\t" +#else + "adc r5, r5\n\t" +#endif + "stm %[r]!, {r2, r3, r4, r5}\n\t" + "ldm %[a]!, {r2, r3, r4, r5}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r2\n\t" +#elif defined(__clang__) + "adcs r2, r2\n\t" +#else + "adc r2, r2\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r3\n\t" +#elif defined(__clang__) + "adcs r3, r3\n\t" +#else + "adc r3, r3\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r4\n\t" +#elif defined(__clang__) + "adcs r4, r4\n\t" +#else + "adc r4, r4\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r5\n\t" +#elif defined(__clang__) + "adcs r5, r5\n\t" +#else + "adc r5, r5\n\t" +#endif + "stm %[r]!, {r2, r3, r4, r5}\n\t" + "ldm %[a]!, {r2, r3, r4, r5}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r2\n\t" +#elif defined(__clang__) + "adcs r2, r2\n\t" +#else + "adc r2, r2\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r3\n\t" +#elif defined(__clang__) + "adcs r3, r3\n\t" +#else + "adc r3, r3\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r4\n\t" +#elif defined(__clang__) + "adcs r4, r4\n\t" +#else + "adc r4, r4\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r5\n\t" +#elif defined(__clang__) + "adcs r5, r5\n\t" +#else + "adc r5, r5\n\t" +#endif + "stm %[r]!, {r2, r3, r4, r5}\n\t" + "ldm %[a]!, {r2, r3, r4, r5}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r2\n\t" +#elif defined(__clang__) + "adcs r2, r2\n\t" +#else + "adc r2, r2\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r3\n\t" +#elif defined(__clang__) + "adcs r3, r3\n\t" +#else + "adc r3, r3\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r4\n\t" +#elif defined(__clang__) + "adcs r4, r4\n\t" +#else + "adc r4, r4\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r5\n\t" +#elif defined(__clang__) + "adcs r5, r5\n\t" +#else + "adc r5, r5\n\t" +#endif + "stm %[r]!, {r2, r3, r4, r5}\n\t" + "ldm %[a]!, {r2, r3, r4, r5}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r2\n\t" +#elif defined(__clang__) + "adcs r2, r2\n\t" +#else + "adc r2, r2\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r3\n\t" +#elif defined(__clang__) + "adcs r3, r3\n\t" +#else + "adc r3, r3\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r4\n\t" +#elif defined(__clang__) + "adcs r4, r4\n\t" +#else + "adc r4, r4\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r5\n\t" +#elif defined(__clang__) + "adcs r5, r5\n\t" +#else + "adc r5, r5\n\t" +#endif + "stm %[r]!, {r2, r3, r4, r5}\n\t" + "movs %[r], #0\n\t" +#ifdef WOLFSSL_KEIL + "adcs %[r], %[r], %[r]\n\t" +#elif defined(__clang__) + "adcs %[r], %[r]\n\t" +#else + "adc %[r], %[r]\n\t" +#endif + : [r] "+r" (r), [a] "+r" (a) + : + : "memory", "r2", "r3", "r4", "r5" + ); + return (uint32_t)(size_t)r; } /* Square a and put result in r. (r = a * a) @@ -15408,13 +70508,12 @@ SP_NOINLINE static void sp_3072_sqr_96(sp_digit* r, const sp_digit* a) sp_3072_sqr_48(z2, &a[48]); sp_3072_sqr_48(z0, a); sp_3072_mask_48(r + 96, a1, 0 - u); - u += sp_3072_add_48(r + 96, r + 96, r + 96); + u += sp_3072_dbl_48(r + 96, r + 96); u += sp_3072_sub_in_place_96(z1, z2); u += sp_3072_sub_in_place_96(z1, z0); u += sp_3072_add_96(r + 48, r + 48, z1); - r[144] = u; - XMEMSET(r + 144 + 1, 0, sizeof(sp_digit) * (48 - 1)); - (void)sp_3072_add_96(r + 96, r + 96, z2); + u += sp_3072_add_48(r + 96, r + 96, z2); + (void)sp_3072_add_to_word_48(r + 144, u, z2 + 48); } #endif /* !WOLFSSL_SP_SMALL */ @@ -15433,53 +70532,57 @@ SP_NOINLINE static sp_digit sp_3072_add_96(sp_digit* r, const sp_digit* a, "movs r7, #0\n\t" "movs r3, #0\n\t" "movs r4, #0xff\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, #0x81\n\t" #else "add r4, r4, #0x81\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r7, r7, #1\n\t" #else "sub r7, r7, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r6, r6, r4\n\t" #else "add r6, r6, r4\n\t" #endif "\n" - "L_sp_3072_add_96_word_%=: \n\t" -#ifdef __clang__ + "L_sp_3072_add_96_word_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r7\n\t" #else "add r3, r3, r7\n\t" #endif "ldr r4, [%[a]]\n\t" "ldr r5, [%[b]]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) "adcs r4, r5\n\t" #else "adc r4, r5\n\t" #endif "str r4, [%[r]]\n\t" "movs r3, #0\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r3\n\t" +#elif defined(__clang__) "adcs r3, r3\n\t" #else "adc r3, r3\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[a], %[a], #4\n\t" #else "add %[a], %[a], #4\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[b], %[b], #4\n\t" #else "add %[b], %[b], #4\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[r], %[r], #4\n\t" #else "add %[r], %[r], #4\n\t" @@ -15508,20 +70611,20 @@ SP_NOINLINE static sp_digit sp_3072_sub_in_place_96(sp_digit* a, "movs r7, %[a]\n\t" "movs r2, #0\n\t" "movs r5, #0xff\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r5, r5, #0x81\n\t" #else "add r5, r5, #0x81\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r7, r7, r5\n\t" #else "add r7, r7, r5\n\t" #endif "\n" - "L_sp_3072_sub_in_place_96_words_%=: \n\t" + "L_sp_3072_sub_in_place_96_words_%=:\n\t" "movs r5, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r5, r5, r2\n\t" #else "sub r5, r5, r2\n\t" @@ -15530,29 +70633,35 @@ SP_NOINLINE static sp_digit sp_3072_sub_in_place_96(sp_digit* a, "ldr r4, [%[a], #4]\n\t" "ldr r5, [%[b]]\n\t" "ldr r6, [%[b], #4]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif "str r3, [%[a]]\n\t" "str r4, [%[a], #4]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r2\n\t" +#elif defined(__clang__) "sbcs r2, r2\n\t" #else "sbc r2, r2\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[a], %[a], #8\n\t" #else "add %[a], %[a], #8\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[b], %[b], #8\n\t" #else "add %[b], %[b], #8\n\t" @@ -15588,7 +70697,7 @@ SP_NOINLINE static void sp_3072_mul_96(sp_digit* r, const sp_digit* a, "mov r9, %[a]\n\t" "mov r10, %[b]\n\t" "movs r6, #0xff\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r6, r6, #0x81\n\t" #else "add r6, r6, #0x81\n\t" @@ -15596,38 +70705,42 @@ SP_NOINLINE static void sp_3072_mul_96(sp_digit* r, const sp_digit* a, "add r6, r6, r9\n\t" "mov r12, r6\n\t" "\n" - "L_sp_3072_mul_96_words_%=: \n\t" + "L_sp_3072_mul_96_words_%=:\n\t" "movs %[tmp], #0\n\t" "movs r5, #0\n\t" "movs r6, #0xff\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r6, r6, #0x7d\n\t" #else "add r6, r6, #0x7d\n\t" #endif "mov %[a], r8\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[a], %[a], r6\n\t" #else "sub %[a], %[a], r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r6\n\t" +#elif defined(__clang__) "sbcs r6, r6\n\t" #else "sbc r6, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "mvns r6, r6\n\t" #else "mvn r6, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands %[a], %[a], r6\n\t" +#elif defined(__clang__) "ands %[a], r6\n\t" #else "and %[a], r6\n\t" #endif "mov %[b], r8\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[b], %[b], %[a]\n\t" #else "sub %[b], %[b], %[a]\n\t" @@ -15635,161 +70748,153 @@ SP_NOINLINE static void sp_3072_mul_96(sp_digit* r, const sp_digit* a, "add %[a], %[a], r9\n\t" "add %[b], %[b], r10\n\t" "\n" - "L_sp_3072_mul_96_mul_%=: \n\t" + "L_sp_3072_mul_96_mul_%=:\n\t" "# Multiply Start\n\t" - "ldr r6, [%[a]]\n\t" - "ldr r7, [%[b]]\n\t" -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsls r7, r7, #16\n\t" -#else - "lsl r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ + "ldrh r6, [%[a]]\n\t" + "ldrh r7, [%[b]]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) "muls r7, r6\n\t" #else "mul r7, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r7\n\t" #else "add r3, r3, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[tmp]\n\t" +#elif defined(__clang__) "adcs r4, %[tmp]\n\t" #else "adc r4, %[tmp]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[tmp]\n\t" +#elif defined(__clang__) "adcs r5, %[tmp]\n\t" #else "adc r5, %[tmp]\n\t" #endif "ldr r7, [%[b]]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r7, #16\n\t" #else "lsr r7, r7, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) "muls r6, r7\n\t" #else "mul r6, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r6, #16\n\t" #else "lsr r7, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #16\n\t" #else "lsl r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[tmp]\n\t" +#elif defined(__clang__) "adcs r5, %[tmp]\n\t" #else "adc r5, %[tmp]\n\t" #endif "ldr r6, [%[a]]\n\t" "ldr r7, [%[b]]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, #16\n\t" #else "lsr r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r7, #16\n\t" #else "lsr r7, r7, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) "muls r7, r6\n\t" #else "mul r7, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, r7\n\t" #else "add r4, r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[tmp]\n\t" +#elif defined(__clang__) "adcs r5, %[tmp]\n\t" #else "adc r5, %[tmp]\n\t" #endif - "ldr r7, [%[b]]\n\t" -#ifdef __clang__ - "lsls r7, r7, #16\n\t" -#else - "lsl r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ + "ldrh r7, [%[b]]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) "muls r6, r7\n\t" #else "mul r6, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r6, #16\n\t" #else "lsr r7, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #16\n\t" #else "lsl r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[tmp]\n\t" +#elif defined(__clang__) "adcs r5, %[tmp]\n\t" #else "adc r5, %[tmp]\n\t" #endif "# Multiply Done\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[a], %[a], #4\n\t" #else "add %[a], %[a], #4\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[b], %[b], #4\n\t" #else "sub %[b], %[b], #4\n\t" @@ -15801,25 +70906,25 @@ SP_NOINLINE static void sp_3072_mul_96(sp_digit* r, const sp_digit* a, "cmp %[a], r6\n\t" "ble L_sp_3072_mul_96_mul_%=\n\t" "\n" - "L_sp_3072_mul_96_done_mul_%=: \n\t" + "L_sp_3072_mul_96_done_mul_%=:\n\t" "mov %[tmp], r11\n\t" "mov r7, r8\n\t" "str r3, [%[tmp], r7]\n\t" "movs r3, r4\n\t" "movs r4, r5\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r7, r7, #4\n\t" #else "add r7, r7, #4\n\t" #endif "mov r8, r7\n\t" "movs r6, #2\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #8\n\t" #else "lsl r6, r6, #8\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r6, r6, #0xf8\n\t" #else "add r6, r6, #0xf8\n\t" @@ -15851,12 +70956,12 @@ SP_NOINLINE static void sp_3072_sqr_96(sp_digit* r, const sp_digit* a) "mov r8, r3\n\t" "mov r11, %[r]\n\t" "movs r6, #3\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #8\n\t" #else "lsl r6, r6, #8\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "negs r6, r6\n\t" #else "neg r6, r6\n\t" @@ -15865,37 +70970,41 @@ SP_NOINLINE static void sp_3072_sqr_96(sp_digit* r, const sp_digit* a) "mov r10, sp\n\t" "mov r9, %[a]\n\t" "\n" - "L_sp_3072_sqr_96_words_%=: \n\t" + "L_sp_3072_sqr_96_words_%=:\n\t" "movs %[r], #0\n\t" "movs r6, #0xff\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r6, r6, #0x7d\n\t" #else "add r6, r6, #0x7d\n\t" #endif "mov %[a], r8\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[a], %[a], r6\n\t" #else "sub %[a], %[a], r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r6\n\t" +#elif defined(__clang__) "sbcs r6, r6\n\t" #else "sbc r6, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "mvns r6, r6\n\t" #else "mvn r6, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands %[a], %[a], r6\n\t" +#elif defined(__clang__) "ands %[a], r6\n\t" #else "and %[a], r6\n\t" #endif "mov r2, r8\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r2, r2, %[a]\n\t" #else "sub r2, r2, %[a]\n\t" @@ -15903,207 +71012,213 @@ SP_NOINLINE static void sp_3072_sqr_96(sp_digit* r, const sp_digit* a) "add %[a], %[a], r9\n\t" "add r2, r2, r9\n\t" "\n" - "L_sp_3072_sqr_96_mul_%=: \n\t" + "L_sp_3072_sqr_96_mul_%=:\n\t" "cmp r2, %[a]\n\t" "beq L_sp_3072_sqr_96_sqr_%=\n\t" "# Multiply * 2: Start\n\t" - "ldr r6, [%[a]]\n\t" - "ldr r7, [r2]\n\t" -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsls r7, r7, #16\n\t" -#else - "lsl r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ + "ldrh r6, [%[a]]\n\t" + "ldrh r7, [r2]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) "muls r7, r6\n\t" #else "mul r7, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r7\n\t" #else "add r3, r3, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) "adcs r4, %[r]\n\t" #else "adc r4, %[r]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r7\n\t" #else "add r3, r3, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) "adcs r4, %[r]\n\t" #else "adc r4, %[r]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif "ldr r7, [r2]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r7, #16\n\t" #else "lsr r7, r7, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) "muls r6, r7\n\t" #else "mul r6, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r6, #16\n\t" #else "lsr r7, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #16\n\t" #else "lsl r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif "ldr r6, [%[a]]\n\t" "ldr r7, [r2]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, #16\n\t" #else "lsr r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r7, #16\n\t" #else "lsr r7, r7, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) "muls r7, r6\n\t" #else "mul r7, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, r7\n\t" #else "add r4, r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, r7\n\t" #else "add r4, r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif - "ldr r7, [r2]\n\t" -#ifdef __clang__ - "lsls r7, r7, #16\n\t" -#else - "lsl r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ + "ldrh r7, [r2]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) "muls r6, r7\n\t" #else "mul r6, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r6, #16\n\t" #else "lsr r7, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #16\n\t" #else "lsl r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" @@ -16111,120 +71226,107 @@ SP_NOINLINE static void sp_3072_sqr_96(sp_digit* r, const sp_digit* a) "# Multiply * 2: Done\n\t" "bal L_sp_3072_sqr_96_done_sqr_%=\n\t" "\n" - "L_sp_3072_sqr_96_sqr_%=: \n\t" + "L_sp_3072_sqr_96_sqr_%=:\n\t" + "mov r12, r2\n\t" + "ldr r2, [%[a]]\n\t" "# Square: Start\n\t" - "ldr r6, [%[a]]\n\t" -#ifdef __clang__ - "lsrs r7, r6, #16\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r2, #16\n\t" #else - "lsr r7, r6, #16\n\t" + "lsr r7, r2, #16\n\t" #endif -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ + "uxth r6, r2\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r6, r6\n\t" +#elif defined(__clang__) "muls r6, r6\n\t" #else "mul r6, r6\n\t" #endif -#ifdef __clang__ - "adds r3, r3, r6\n\t" -#else - "add r3, r3, r6\n\t" -#endif -#ifdef __clang__ - "adcs r4, %[r]\n\t" -#else - "adc r4, %[r]\n\t" -#endif -#ifdef __clang__ - "adcs r5, %[r]\n\t" -#else - "adc r5, %[r]\n\t" -#endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r7, r7, r7\n\t" +#elif defined(__clang__) "muls r7, r7\n\t" #else "mul r7, r7\n\t" #endif -#ifdef __clang__ - "adds r4, r4, r7\n\t" -#else - "add r4, r4, r7\n\t" -#endif -#ifdef __clang__ - "adcs r5, %[r]\n\t" -#else - "adc r5, %[r]\n\t" -#endif - "ldr r6, [%[a]]\n\t" -#ifdef __clang__ - "lsrs r7, r6, #16\n\t" -#else - "lsr r7, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "muls r6, r7\n\t" -#else - "mul r6, r7\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r6, #15\n\t" -#else - "lsr r7, r6, #15\n\t" -#endif -#ifdef __clang__ - "lsls r6, r6, #17\n\t" -#else - "lsl r6, r6, #17\n\t" -#endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r2, #16\n\t" +#else + "lsr r7, r2, #16\n\t" +#endif + "uxth r6, r2\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #15\n\t" +#else + "lsr r7, r6, #15\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #17\n\t" +#else + "lsl r6, r6, #17\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif "# Square: Done\n\t" + "mov r2, r12\n\t" "\n" - "L_sp_3072_sqr_96_done_sqr_%=: \n\t" -#ifdef __clang__ + "L_sp_3072_sqr_96_done_sqr_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[a], %[a], #4\n\t" #else "add %[a], %[a], #4\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r2, r2, #4\n\t" #else "sub r2, r2, #4\n\t" #endif "movs r6, #0xff\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r6, r6, #0x81\n\t" #else "add r6, r6, #0x81\n\t" @@ -16239,26 +71341,26 @@ SP_NOINLINE static void sp_3072_sqr_96(sp_digit* r, const sp_digit* a) "cmp %[a], r7\n\t" "ble L_sp_3072_sqr_96_mul_%=\n\t" "\n" - "L_sp_3072_sqr_96_done_mul_%=: \n\t" + "L_sp_3072_sqr_96_done_mul_%=:\n\t" "mov %[r], r10\n\t" "mov r7, r8\n\t" "str r3, [%[r], r7]\n\t" "movs r3, r4\n\t" "movs r4, r5\n\t" "movs r5, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r7, r7, #4\n\t" #else "add r7, r7, #4\n\t" #endif "mov r8, r7\n\t" "movs r6, #2\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #8\n\t" #else "lsl r6, r6, #8\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r6, r6, #0xf8\n\t" #else "add r6, r6, #0xf8\n\t" @@ -16270,28 +71372,28 @@ SP_NOINLINE static void sp_3072_sqr_96(sp_digit* r, const sp_digit* a) "mov %[r], r11\n\t" "mov %[a], r10\n\t" "movs r3, #2\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, #8\n\t" #else "lsl r3, r3, #8\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, #0xfc\n\t" #else "add r3, r3, #0xfc\n\t" #endif "\n" - "L_sp_3072_sqr_96_store_%=: \n\t" + "L_sp_3072_sqr_96_store_%=:\n\t" "ldr r6, [%[a], r3]\n\t" "str r6, [%[r], r3]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r3, r3, #4\n\t" #else "sub r3, r3, #4\n\t" #endif "bge L_sp_3072_sqr_96_store_%=\n\t" "movs r6, #3\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #8\n\t" #else "lsl r6, r6, #8\n\t" @@ -16299,7 +71401,7 @@ SP_NOINLINE static void sp_3072_sqr_96(sp_digit* r, const sp_digit* a) "add sp, sp, r6\n\t" : [r] "+r" (r), [a] "+r" (a) : - : "memory", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11" + : "memory", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12" ); } @@ -16336,48 +71438,52 @@ SP_NOINLINE static sp_digit sp_3072_add_48(sp_digit* r, const sp_digit* a, "movs r6, %[a]\n\t" "movs r7, #0\n\t" "movs r3, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r6, r6, #0xc0\n\t" #else "add r6, r6, #0xc0\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r7, r7, #1\n\t" #else "sub r7, r7, #1\n\t" #endif "\n" - "L_sp_3072_add_48_word_%=: \n\t" -#ifdef __clang__ + "L_sp_3072_add_48_word_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r7\n\t" #else "add r3, r3, r7\n\t" #endif "ldr r4, [%[a]]\n\t" "ldr r5, [%[b]]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) "adcs r4, r5\n\t" #else "adc r4, r5\n\t" #endif "str r4, [%[r]]\n\t" "movs r3, #0\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r3\n\t" +#elif defined(__clang__) "adcs r3, r3\n\t" #else "adc r3, r3\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[a], %[a], #4\n\t" #else "add %[a], %[a], #4\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[b], %[b], #4\n\t" #else "add %[b], %[b], #4\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[r], %[r], #4\n\t" #else "add %[r], %[r], #4\n\t" @@ -16405,15 +71511,15 @@ SP_NOINLINE static sp_digit sp_3072_sub_in_place_48(sp_digit* a, __asm__ __volatile__ ( "movs r7, %[a]\n\t" "movs r2, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r7, r7, #0xc0\n\t" #else "add r7, r7, #0xc0\n\t" #endif "\n" - "L_sp_3072_sub_in_place_48_words_%=: \n\t" + "L_sp_3072_sub_in_place_48_words_%=:\n\t" "movs r5, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r5, r5, r2\n\t" #else "sub r5, r5, r2\n\t" @@ -16422,29 +71528,35 @@ SP_NOINLINE static sp_digit sp_3072_sub_in_place_48(sp_digit* a, "ldr r4, [%[a], #4]\n\t" "ldr r5, [%[b]]\n\t" "ldr r6, [%[b], #4]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif "str r3, [%[a]]\n\t" "str r4, [%[a], #4]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r2\n\t" +#elif defined(__clang__) "sbcs r2, r2\n\t" #else "sbc r2, r2\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[a], %[a], #8\n\t" #else "add %[a], %[a], #8\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[b], %[b], #8\n\t" #else "add %[b], %[b], #8\n\t" @@ -16483,33 +71595,37 @@ SP_NOINLINE static void sp_3072_mul_48(sp_digit* r, const sp_digit* a, "add r6, r6, r9\n\t" "mov r12, r6\n\t" "\n" - "L_sp_3072_mul_48_words_%=: \n\t" + "L_sp_3072_mul_48_words_%=:\n\t" "movs %[tmp], #0\n\t" "movs r5, #0\n\t" "movs r6, #0xbc\n\t" "mov %[a], r8\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[a], %[a], r6\n\t" #else "sub %[a], %[a], r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r6\n\t" +#elif defined(__clang__) "sbcs r6, r6\n\t" #else "sbc r6, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "mvns r6, r6\n\t" #else "mvn r6, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands %[a], %[a], r6\n\t" +#elif defined(__clang__) "ands %[a], r6\n\t" #else "and %[a], r6\n\t" #endif "mov %[b], r8\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[b], %[b], %[a]\n\t" #else "sub %[b], %[b], %[a]\n\t" @@ -16517,161 +71633,153 @@ SP_NOINLINE static void sp_3072_mul_48(sp_digit* r, const sp_digit* a, "add %[a], %[a], r9\n\t" "add %[b], %[b], r10\n\t" "\n" - "L_sp_3072_mul_48_mul_%=: \n\t" + "L_sp_3072_mul_48_mul_%=:\n\t" "# Multiply Start\n\t" - "ldr r6, [%[a]]\n\t" - "ldr r7, [%[b]]\n\t" -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsls r7, r7, #16\n\t" -#else - "lsl r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ + "ldrh r6, [%[a]]\n\t" + "ldrh r7, [%[b]]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) "muls r7, r6\n\t" #else "mul r7, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r7\n\t" #else "add r3, r3, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[tmp]\n\t" +#elif defined(__clang__) "adcs r4, %[tmp]\n\t" #else "adc r4, %[tmp]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[tmp]\n\t" +#elif defined(__clang__) "adcs r5, %[tmp]\n\t" #else "adc r5, %[tmp]\n\t" #endif "ldr r7, [%[b]]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r7, #16\n\t" #else "lsr r7, r7, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) "muls r6, r7\n\t" #else "mul r6, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r6, #16\n\t" #else "lsr r7, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #16\n\t" #else "lsl r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[tmp]\n\t" +#elif defined(__clang__) "adcs r5, %[tmp]\n\t" #else "adc r5, %[tmp]\n\t" #endif "ldr r6, [%[a]]\n\t" "ldr r7, [%[b]]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, #16\n\t" #else "lsr r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r7, #16\n\t" #else "lsr r7, r7, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) "muls r7, r6\n\t" #else "mul r7, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, r7\n\t" #else "add r4, r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[tmp]\n\t" +#elif defined(__clang__) "adcs r5, %[tmp]\n\t" #else "adc r5, %[tmp]\n\t" #endif - "ldr r7, [%[b]]\n\t" -#ifdef __clang__ - "lsls r7, r7, #16\n\t" -#else - "lsl r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ + "ldrh r7, [%[b]]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) "muls r6, r7\n\t" #else "mul r6, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r6, #16\n\t" #else "lsr r7, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #16\n\t" #else "lsl r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[tmp]\n\t" +#elif defined(__clang__) "adcs r5, %[tmp]\n\t" #else "adc r5, %[tmp]\n\t" #endif "# Multiply Done\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[a], %[a], #4\n\t" #else "add %[a], %[a], #4\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[b], %[b], #4\n\t" #else "sub %[b], %[b], #4\n\t" @@ -16683,20 +71791,20 @@ SP_NOINLINE static void sp_3072_mul_48(sp_digit* r, const sp_digit* a, "cmp %[a], r6\n\t" "ble L_sp_3072_mul_48_mul_%=\n\t" "\n" - "L_sp_3072_mul_48_done_mul_%=: \n\t" + "L_sp_3072_mul_48_done_mul_%=:\n\t" "mov %[tmp], r11\n\t" "mov r7, r8\n\t" "str r3, [%[tmp], r7]\n\t" "movs r3, r4\n\t" "movs r4, r5\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r7, r7, #4\n\t" #else "add r7, r7, #4\n\t" #endif "mov r8, r7\n\t" "movs r6, #0xff\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r6, r6, #0x79\n\t" #else "add r6, r6, #0x79\n\t" @@ -16728,12 +71836,12 @@ SP_NOINLINE static void sp_3072_sqr_48(sp_digit* r, const sp_digit* a) "mov r8, r3\n\t" "mov r11, %[r]\n\t" "movs r6, #0xff\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r6, r6, #0x81\n\t" #else "add r6, r6, #0x81\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "negs r6, r6\n\t" #else "neg r6, r6\n\t" @@ -16742,32 +71850,36 @@ SP_NOINLINE static void sp_3072_sqr_48(sp_digit* r, const sp_digit* a) "mov r10, sp\n\t" "mov r9, %[a]\n\t" "\n" - "L_sp_3072_sqr_48_words_%=: \n\t" + "L_sp_3072_sqr_48_words_%=:\n\t" "movs %[r], #0\n\t" "movs r6, #0xbc\n\t" "mov %[a], r8\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[a], %[a], r6\n\t" #else "sub %[a], %[a], r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r6\n\t" +#elif defined(__clang__) "sbcs r6, r6\n\t" #else "sbc r6, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "mvns r6, r6\n\t" #else "mvn r6, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands %[a], %[a], r6\n\t" +#elif defined(__clang__) "ands %[a], r6\n\t" #else "and %[a], r6\n\t" #endif "mov r2, r8\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r2, r2, %[a]\n\t" #else "sub r2, r2, %[a]\n\t" @@ -16775,207 +71887,213 @@ SP_NOINLINE static void sp_3072_sqr_48(sp_digit* r, const sp_digit* a) "add %[a], %[a], r9\n\t" "add r2, r2, r9\n\t" "\n" - "L_sp_3072_sqr_48_mul_%=: \n\t" + "L_sp_3072_sqr_48_mul_%=:\n\t" "cmp r2, %[a]\n\t" "beq L_sp_3072_sqr_48_sqr_%=\n\t" "# Multiply * 2: Start\n\t" - "ldr r6, [%[a]]\n\t" - "ldr r7, [r2]\n\t" -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsls r7, r7, #16\n\t" -#else - "lsl r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ + "ldrh r6, [%[a]]\n\t" + "ldrh r7, [r2]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) "muls r7, r6\n\t" #else "mul r7, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r7\n\t" #else "add r3, r3, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) "adcs r4, %[r]\n\t" #else "adc r4, %[r]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r7\n\t" #else "add r3, r3, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) "adcs r4, %[r]\n\t" #else "adc r4, %[r]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif "ldr r7, [r2]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r7, #16\n\t" #else "lsr r7, r7, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) "muls r6, r7\n\t" #else "mul r6, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r6, #16\n\t" #else "lsr r7, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #16\n\t" #else "lsl r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif "ldr r6, [%[a]]\n\t" "ldr r7, [r2]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, #16\n\t" #else "lsr r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r7, #16\n\t" #else "lsr r7, r7, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) "muls r7, r6\n\t" #else "mul r7, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, r7\n\t" #else "add r4, r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, r7\n\t" #else "add r4, r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif - "ldr r7, [r2]\n\t" -#ifdef __clang__ - "lsls r7, r7, #16\n\t" -#else - "lsl r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ + "ldrh r7, [r2]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) "muls r6, r7\n\t" #else "mul r6, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r6, #16\n\t" #else "lsr r7, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #16\n\t" #else "lsl r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" @@ -16983,114 +72101,101 @@ SP_NOINLINE static void sp_3072_sqr_48(sp_digit* r, const sp_digit* a) "# Multiply * 2: Done\n\t" "bal L_sp_3072_sqr_48_done_sqr_%=\n\t" "\n" - "L_sp_3072_sqr_48_sqr_%=: \n\t" + "L_sp_3072_sqr_48_sqr_%=:\n\t" + "mov r12, r2\n\t" + "ldr r2, [%[a]]\n\t" "# Square: Start\n\t" - "ldr r6, [%[a]]\n\t" -#ifdef __clang__ - "lsrs r7, r6, #16\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r2, #16\n\t" #else - "lsr r7, r6, #16\n\t" + "lsr r7, r2, #16\n\t" #endif -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ + "uxth r6, r2\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r6, r6\n\t" +#elif defined(__clang__) "muls r6, r6\n\t" #else "mul r6, r6\n\t" #endif -#ifdef __clang__ - "adds r3, r3, r6\n\t" -#else - "add r3, r3, r6\n\t" -#endif -#ifdef __clang__ - "adcs r4, %[r]\n\t" -#else - "adc r4, %[r]\n\t" -#endif -#ifdef __clang__ - "adcs r5, %[r]\n\t" -#else - "adc r5, %[r]\n\t" -#endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r7, r7, r7\n\t" +#elif defined(__clang__) "muls r7, r7\n\t" #else "mul r7, r7\n\t" #endif -#ifdef __clang__ - "adds r4, r4, r7\n\t" -#else - "add r4, r4, r7\n\t" -#endif -#ifdef __clang__ - "adcs r5, %[r]\n\t" -#else - "adc r5, %[r]\n\t" -#endif - "ldr r6, [%[a]]\n\t" -#ifdef __clang__ - "lsrs r7, r6, #16\n\t" -#else - "lsr r7, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "muls r6, r7\n\t" -#else - "mul r6, r7\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r6, #15\n\t" -#else - "lsr r7, r6, #15\n\t" -#endif -#ifdef __clang__ - "lsls r6, r6, #17\n\t" -#else - "lsl r6, r6, #17\n\t" -#endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r2, #16\n\t" +#else + "lsr r7, r2, #16\n\t" +#endif + "uxth r6, r2\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #15\n\t" +#else + "lsr r7, r6, #15\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #17\n\t" +#else + "lsl r6, r6, #17\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif "# Square: Done\n\t" + "mov r2, r12\n\t" "\n" - "L_sp_3072_sqr_48_done_sqr_%=: \n\t" -#ifdef __clang__ + "L_sp_3072_sqr_48_done_sqr_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[a], %[a], #4\n\t" #else "add %[a], %[a], #4\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r2, r2, #4\n\t" #else "sub r2, r2, #4\n\t" @@ -17106,21 +72211,21 @@ SP_NOINLINE static void sp_3072_sqr_48(sp_digit* r, const sp_digit* a) "cmp %[a], r7\n\t" "ble L_sp_3072_sqr_48_mul_%=\n\t" "\n" - "L_sp_3072_sqr_48_done_mul_%=: \n\t" + "L_sp_3072_sqr_48_done_mul_%=:\n\t" "mov %[r], r10\n\t" "mov r7, r8\n\t" "str r3, [%[r], r7]\n\t" "movs r3, r4\n\t" "movs r4, r5\n\t" "movs r5, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r7, r7, #4\n\t" #else "add r7, r7, #4\n\t" #endif "mov r8, r7\n\t" "movs r6, #0xff\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r6, r6, #0x79\n\t" #else "add r6, r6, #0x79\n\t" @@ -17132,23 +72237,23 @@ SP_NOINLINE static void sp_3072_sqr_48(sp_digit* r, const sp_digit* a) "mov %[r], r11\n\t" "mov %[a], r10\n\t" "movs r3, #0xff\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, #0x7d\n\t" #else "add r3, r3, #0x7d\n\t" #endif "\n" - "L_sp_3072_sqr_48_store_%=: \n\t" + "L_sp_3072_sqr_48_store_%=:\n\t" "ldr r6, [%[a], r3]\n\t" "str r6, [%[r], r3]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r3, r3, #4\n\t" #else "sub r3, r3, #4\n\t" #endif "bge L_sp_3072_sqr_48_store_%=\n\t" "movs r6, #0xff\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r6, r6, #0x81\n\t" #else "add r6, r6, #0x81\n\t" @@ -17156,7 +72261,7 @@ SP_NOINLINE static void sp_3072_sqr_48(sp_digit* r, const sp_digit* a) "add sp, sp, r6\n\t" : [r] "+r" (r), [a] "+r" (a) : - : "memory", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11" + : "memory", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12" ); } @@ -17194,12 +72299,12 @@ SP_NOINLINE static void sp_3072_mul_d_96(sp_digit* r, const sp_digit* a, { __asm__ __volatile__ ( "movs r6, #0xff\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r6, r6, #0x81\n\t" #else "add r6, r6, #0x81\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r6, r6, %[a]\n\t" #else "add r6, r6, %[a]\n\t" @@ -17209,148 +72314,142 @@ SP_NOINLINE static void sp_3072_mul_d_96(sp_digit* r, const sp_digit* a, "movs r3, #0\n\t" "movs r4, #0\n\t" "\n" - "L_sp_3072_mul_d_96_%=: \n\t" + "L_sp_3072_mul_d_96_%=:\n\t" "movs %[r], #0\n\t" "movs r5, #0\n\t" "# A[] * B\n\t" - "ldr r6, [%[a]]\n\t" -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsls r7, %[b], #16\n\t" -#else - "lsl r7, %[b], #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ + "ldrh r6, [%[a]]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) "muls r7, r6\n\t" #else "mul r7, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r7\n\t" #else "add r3, r3, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) "adcs r4, %[r]\n\t" #else "adc r4, %[r]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, %[b], #16\n\t" #else "lsr r7, %[b], #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) "muls r6, r7\n\t" #else "mul r6, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r6, #16\n\t" #else "lsr r7, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #16\n\t" #else "lsl r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif "ldr r6, [%[a]]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, #16\n\t" #else "lsr r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, %[b], #16\n\t" #else "lsr r7, %[b], #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) "muls r7, r6\n\t" #else "mul r7, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, r7\n\t" #else "add r4, r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif -#ifdef __clang__ - "lsls r7, %[b], #16\n\t" -#else - "lsl r7, %[b], #16\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) "muls r6, r7\n\t" #else "mul r6, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r6, #16\n\t" #else "lsr r7, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #16\n\t" #else "lsl r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" @@ -17360,12 +72459,12 @@ SP_NOINLINE static void sp_3072_mul_d_96(sp_digit* r, const sp_digit* a, "str r3, [%[r]]\n\t" "movs r3, r4\n\t" "movs r4, r5\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[r], %[r], #4\n\t" #else "add %[r], %[r], #4\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[a], %[a], #4\n\t" #else "add %[a], %[a], #4\n\t" @@ -17412,32 +72511,38 @@ SP_NOINLINE static sp_digit sp_3072_cond_sub_48(sp_digit* r, const sp_digit* a, "mov r8, r5\n\t" "movs r7, #0\n\t" "\n" - "L_sp_3072_cond_sub_48_words_%=: \n\t" + "L_sp_3072_cond_sub_48_words_%=:\n\t" "ldr r6, [%[b], r7]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, %[m]\n\t" +#elif defined(__clang__) "ands r6, %[m]\n\t" #else "and r6, %[m]\n\t" #endif "movs r5, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r5, r5, r4\n\t" #else "sub r5, r5, r4\n\t" #endif "ldr r5, [%[a], r7]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) "sbcs r5, r6\n\t" #else "sbc r5, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r4\n\t" +#elif defined(__clang__) "sbcs r4, r4\n\t" #else "sbc r4, r4\n\t" #endif "str r5, [%[r], r7]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r7, r7, #4\n\t" #else "add r7, r7, #4\n\t" @@ -17461,374 +72566,1333 @@ SP_NOINLINE static sp_digit sp_3072_cond_sub_48(sp_digit* r, const sp_digit* a, SP_NOINLINE static void sp_3072_mont_reduce_48(sp_digit* a, const sp_digit* m, sp_digit mp) { - sp_digit ca = 0; __asm__ __volatile__ ( + "movs r7, #0\n\t" "mov r8, %[mp]\n\t" - "mov r12, %[ca]\n\t" + "mov r12, r7\n\t" "mov lr, %[m]\n\t" "mov r9, %[a]\n\t" + "mov r11, %[a]\n\t" + "movs r5, #0xbc\n\t" + "movs r6, #0xc0\n\t" + "add r9, r9, r5\n\t" + "add r11, r11, r6\n\t" + "\n" + "L_sp_3072_mont_reduce_48_mod_%=:\n\t" + "movs r7, #0\n\t" "movs r4, #0\n\t" - "# i = 0\n\t" - "mov r11, r4\n\t" - "\n" - "L_sp_3072_mont_reduce_48_mod_%=: \n\t" - "movs r5, #0\n\t" - "movs %[ca], #0\n\t" + "# a[i] += m[0] * mu\n\t" + "ldm %[m]!, {%[mp]}\n\t" + "ldm %[a]!, {r3}\n\t" "# mu = a[i] * mp\n\t" - "mov %[mp], r8\n\t" - "ldr %[a], [%[a]]\n\t" -#ifdef __clang__ - "muls %[mp], %[a]\n\t" + "mov r5, r8\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r3, r5\n\t" +#elif defined(__clang__) + "muls r5, r3\n\t" #else - "mul %[mp], %[a]\n\t" + "mul r5, r3\n\t" #endif - "mov %[m], lr\n\t" - "mov r10, r9\n\t" - "\n" - "L_sp_3072_mont_reduce_48_word_%=: \n\t" - "# a[i+j] += m[j] * mu\n\t" - "mov %[a], r10\n\t" - "ldr %[a], [%[a]]\n\t" - "movs %[ca], #0\n\t" - "movs r4, r5\n\t" - "movs r5, #0\n\t" - "# Multiply m[j] and mu - Start\n\t" - "ldr r7, [%[m]]\n\t" -#ifdef __clang__ - "lsls r6, %[mp], #16\n\t" + "mov r10, r5\n\t" + "# Multiply m[0] and mu - Start\n\t" + "mov r5, r10\n\t" + "uxth r6, %[mp]\n\t" + "uxth r5, r5\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" #else - "lsl r6, %[mp], #16\n\t" + "mul r6, r5\n\t" #endif -#ifdef __clang__ - "lsls r7, r7, #16\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" #else - "lsl r7, r7, #16\n\t" + "add r3, r3, r6\n\t" #endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" #else - "lsr r6, r6, #16\n\t" + "adc r4, r7\n\t" #endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "muls r7, r6\n\t" -#else - "mul r7, r6\n\t" -#endif -#ifdef __clang__ - "adds %[a], %[a], r7\n\t" -#else - "add %[a], %[a], r7\n\t" -#endif -#ifdef __clang__ - "adcs r5, %[ca]\n\t" -#else - "adc r5, %[ca]\n\t" -#endif - "ldr r7, [%[m]]\n\t" -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "muls r6, r7\n\t" -#else - "mul r6, r7\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r6, #16\n\t" -#else - "lsr r7, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "adds %[a], %[a], r6\n\t" -#else - "add %[a], %[a], r6\n\t" -#endif -#ifdef __clang__ - "adcs r5, r7\n\t" -#else - "adc r5, r7\n\t" -#endif - "ldr r7, [%[m]]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, %[mp], #16\n\t" #else "lsr r6, %[mp], #16\n\t" #endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" #else - "lsr r7, r7, #16\n\t" + "mul r5, r6\n\t" #endif -#ifdef __clang__ - "muls r7, r6\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" #else - "mul r7, r6\n\t" + "lsr r6, r5, #16\n\t" #endif -#ifdef __clang__ - "adds r5, r5, r7\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" #else - "add r5, r5, r7\n\t" + "lsl r5, r5, #16\n\t" #endif - "ldr r7, [%[m]]\n\t" -#ifdef __clang__ - "lsls r7, r7, #16\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" #else - "lsl r7, r7, #16\n\t" + "add r3, r3, r5\n\t" #endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "lsr r7, r7, #16\n\t" + "adc r4, r6\n\t" #endif -#ifdef __clang__ - "muls r6, r7\n\t" + "mov r5, r10\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[mp], #16\n\t" #else - "mul r6, r7\n\t" + "lsr r6, %[mp], #16\n\t" #endif -#ifdef __clang__ - "lsrs r7, r6, #16\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, r5, #16\n\t" #else - "lsr r7, r6, #16\n\t" + "lsr r5, r5, #16\n\t" #endif -#ifdef __clang__ - "lsls r6, r6, #16\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" #else - "lsl r6, r6, #16\n\t" + "mul r6, r5\n\t" #endif -#ifdef __clang__ - "adds %[a], %[a], r6\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" #else - "add %[a], %[a], r6\n\t" + "add r4, r4, r6\n\t" #endif -#ifdef __clang__ - "adcs r5, r7\n\t" + "uxth r6, %[mp]\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" #else - "adc r5, r7\n\t" + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "# Multiply m[0] and mu - Done\n\t" + "\n" + "L_sp_3072_mont_reduce_48_word_%=:\n\t" + "# a[i+j] += m[j] * mu\n\t" + "ldr r3, [%[a]]\n\t" + "ldm %[m]!, {%[mp]}\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r4\n\t" +#else + "add r3, r3, r4\n\t" +#endif + "movs r4, #0\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif + "# Multiply m[j] and mu - Start\n\t" + "mov r5, r10\n\t" + "uxth r6, %[mp]\n\t" + "uxth r5, r5\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[mp], #16\n\t" +#else + "lsr r6, %[mp], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "mov r5, r10\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[mp], #16\n\t" +#else + "lsr r6, %[mp], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, r5, #16\n\t" +#else + "lsr r5, r5, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif + "uxth r6, %[mp]\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" #endif "# Multiply m[j] and mu - Done\n\t" -#ifdef __clang__ - "adds r4, r4, %[a]\n\t" -#else - "add r4, r4, %[a]\n\t" -#endif -#ifdef __clang__ - "adcs r5, %[ca]\n\t" -#else - "adc r5, %[ca]\n\t" -#endif - "mov %[a], r10\n\t" - "str r4, [%[a]]\n\t" - "movs r6, #4\n\t" -#ifdef __clang__ - "adds %[m], %[m], #4\n\t" -#else - "add %[m], %[m], #4\n\t" -#endif - "add r10, r10, r6\n\t" - "movs r4, #0xbc\n\t" - "add r4, r4, r9\n\t" - "cmp r10, r4\n\t" + "stm %[a]!, {r3}\n\t" + "cmp %[a], r9\n\t" "blt L_sp_3072_mont_reduce_48_word_%=\n\t" "# a[i+47] += m[47] * mu\n\t" - "movs %[ca], #0\n\t" - "mov r4, r12\n\t" - "movs %[a], #0\n\t" + "ldr %[mp], [%[m]]\n\t" + "mov r3, r12\n\t" "# Multiply m[47] and mu - Start\n\t" - "ldr r7, [%[m]]\n\t" -#ifdef __clang__ - "lsls r6, %[mp], #16\n\t" + "mov r5, r10\n\t" + "uxth r6, %[mp]\n\t" + "uxth r5, r5\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" #else - "lsl r6, %[mp], #16\n\t" + "mul r6, r5\n\t" #endif -#ifdef __clang__ - "lsls r7, r7, #16\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" #else - "lsl r7, r7, #16\n\t" + "add r4, r4, r6\n\t" #endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" #else - "lsr r6, r6, #16\n\t" + "adc r3, r7\n\t" #endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r7\n\t" +#elif defined(__clang__) + "adcs r7, r7\n\t" #else - "lsr r7, r7, #16\n\t" + "adc r7, r7\n\t" #endif -#ifdef __clang__ - "muls r7, r6\n\t" -#else - "mul r7, r6\n\t" -#endif -#ifdef __clang__ - "adds r5, r5, r7\n\t" -#else - "add r5, r5, r7\n\t" -#endif -#ifdef __clang__ - "adcs r4, %[ca]\n\t" -#else - "adc r4, %[ca]\n\t" -#endif -#ifdef __clang__ - "adcs %[a], %[ca]\n\t" -#else - "adc %[a], %[ca]\n\t" -#endif - "ldr r7, [%[m]]\n\t" -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "muls r6, r7\n\t" -#else - "mul r6, r7\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r6, #16\n\t" -#else - "lsr r7, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "adds r5, r5, r6\n\t" -#else - "add r5, r5, r6\n\t" -#endif -#ifdef __clang__ - "adcs r4, r7\n\t" -#else - "adc r4, r7\n\t" -#endif -#ifdef __clang__ - "adcs %[a], %[ca]\n\t" -#else - "adc %[a], %[ca]\n\t" -#endif - "ldr r7, [%[m]]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, %[mp], #16\n\t" #else "lsr r6, %[mp], #16\n\t" #endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" #else - "lsr r7, r7, #16\n\t" + "mul r5, r6\n\t" #endif -#ifdef __clang__ - "muls r7, r6\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" #else - "mul r7, r6\n\t" + "lsr r6, r5, #16\n\t" #endif -#ifdef __clang__ - "adds r4, r4, r7\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" #else - "add r4, r4, r7\n\t" + "lsl r5, r5, #16\n\t" #endif -#ifdef __clang__ - "adcs %[a], %[ca]\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" #else - "adc %[a], %[ca]\n\t" + "add r4, r4, r5\n\t" #endif - "ldr r7, [%[m]]\n\t" -#ifdef __clang__ - "lsls r7, r7, #16\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" #else - "lsl r7, r7, #16\n\t" + "adc r3, r6\n\t" #endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r7\n\t" +#elif defined(__clang__) + "adcs r7, r7\n\t" #else - "lsr r7, r7, #16\n\t" + "adc r7, r7\n\t" #endif -#ifdef __clang__ - "muls r6, r7\n\t" + "mov r5, r10\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[mp], #16\n\t" #else - "mul r6, r7\n\t" + "lsr r6, %[mp], #16\n\t" #endif -#ifdef __clang__ - "lsrs r7, r6, #16\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, r5, #16\n\t" #else - "lsr r7, r6, #16\n\t" + "lsr r5, r5, #16\n\t" #endif -#ifdef __clang__ - "lsls r6, r6, #16\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" #else - "lsl r6, r6, #16\n\t" + "mul r6, r5\n\t" #endif -#ifdef __clang__ - "adds r5, r5, r6\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" #else - "add r5, r5, r6\n\t" + "add r3, r3, r6\n\t" #endif -#ifdef __clang__ - "adcs r4, r7\n\t" +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r7\n\t" +#elif defined(__clang__) + "adcs r7, r7\n\t" #else - "adc r4, r7\n\t" + "adc r7, r7\n\t" #endif -#ifdef __clang__ - "adcs %[a], %[ca]\n\t" + "uxth r6, %[mp]\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" #else - "adc %[a], %[ca]\n\t" + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r7\n\t" +#elif defined(__clang__) + "adcs r7, r7\n\t" +#else + "adc r7, r7\n\t" #endif "# Multiply m[47] and mu - Done\n\t" - "movs %[ca], %[a]\n\t" - "mov %[a], r10\n\t" - "ldr r7, [%[a], #4]\n\t" - "ldr %[a], [%[a]]\n\t" - "movs r6, #0\n\t" -#ifdef __clang__ - "adds r5, r5, %[a]\n\t" + "ldr r5, [%[a]]\n\t" + "ldr r6, [%[a], #4]\n\t" + "movs %[mp], #0\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r4\n\t" #else - "add r5, r5, %[a]\n\t" + "add r5, r5, r4\n\t" #endif -#ifdef __clang__ - "adcs r7, r4\n\t" +#ifdef WOLFSSL_KEIL + "adcs r6, r6, r3\n\t" +#elif defined(__clang__) + "adcs r6, r3\n\t" #else - "adc r7, r4\n\t" + "adc r6, r3\n\t" #endif -#ifdef __clang__ - "adcs %[ca], r6\n\t" +#ifdef WOLFSSL_KEIL + "adcs r7, r7, %[mp]\n\t" +#elif defined(__clang__) + "adcs r7, %[mp]\n\t" #else - "adc %[ca], r6\n\t" + "adc r7, %[mp]\n\t" #endif - "mov %[a], r10\n\t" - "str r5, [%[a]]\n\t" - "str r7, [%[a], #4]\n\t" + "stm %[a]!, {r5, r6}\n\t" "# i += 1\n\t" - "movs r6, #4\n\t" - "add r9, r9, r6\n\t" - "add r11, r11, r6\n\t" - "mov r12, %[ca]\n\t" - "mov %[a], r9\n\t" - "movs r4, #0xc0\n\t" - "cmp r11, r4\n\t" - "blt L_sp_3072_mont_reduce_48_mod_%=\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "subs %[a], %[a], #4\n\t" +#else + "sub %[a], %[a], #4\n\t" +#endif + "movs r3, #0xbc\n\t" + "mov r9, %[a]\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "subs %[a], %[a], r3\n\t" +#else + "sub %[a], %[a], r3\n\t" +#endif + "mov r12, r7\n\t" "mov %[m], lr\n\t" - : [a] "+r" (a), [m] "+r" (m), [mp] "+r" (mp), [ca] "+r" (ca) + "cmp r11, %[a]\n\t" + "bgt L_sp_3072_mont_reduce_48_mod_%=\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "negs r7, r7\n\t" +#else + "neg r7, r7\n\t" +#endif + "# Subtract masked modulus\n\t" + "movs r4, #0xc0\n\t" + "movs %[mp], #0\n\t" + "movs r3, #0\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "subs %[a], %[a], r4\n\t" +#else + "sub %[a], %[a], r4\n\t" +#endif +#ifndef WOLFSSL_SP_LARGE_CODE + "\n" + "L_sp_3072_mont_reduce_48_sub_mask_%=:\n\t" + "ldm %[m]!, {r6}\n\t" + "movs r5, #0\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "subs r5, r5, %[mp]\n\t" +#else + "sub r5, r5, %[mp]\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "sbcs %[mp], %[mp], %[mp]\n\t" +#elif defined(__clang__) + "sbcs %[mp], %[mp]\n\t" +#else + "sbc %[mp], %[mp]\n\t" +#endif + "stm %[a]!, {r5}\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, #4\n\t" +#else + "add r3, r3, #4\n\t" +#endif + "cmp r3, r4\n\t" + "blt L_sp_3072_mont_reduce_48_sub_mask_%=\n\t" +#else /* WOLFSSL_SP_LARGE_CODE */ + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "subs r5, r5, r6\n\t" +#else + "sub r5, r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" +#endif /* WOLFSSL_SP_LARGE_CODE */ + : [a] "+r" (a), [m] "+r" (m), [mp] "+r" (mp) : - : "memory", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12", "lr" + : "memory", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12", "lr" ); - sp_3072_cond_sub_48(a - 48, a, m, (sp_digit)0 - ca); } /* Multiply two Montogmery form numbers mod the modulus (prime). @@ -17872,7 +73936,7 @@ SP_NOINLINE static void sp_3072_mul_d_48(sp_digit* r, const sp_digit* a, { __asm__ __volatile__ ( "movs r6, #0xc0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r6, r6, %[a]\n\t" #else "add r6, r6, %[a]\n\t" @@ -17882,148 +73946,142 @@ SP_NOINLINE static void sp_3072_mul_d_48(sp_digit* r, const sp_digit* a, "movs r3, #0\n\t" "movs r4, #0\n\t" "\n" - "L_sp_3072_mul_d_48_%=: \n\t" + "L_sp_3072_mul_d_48_%=:\n\t" "movs %[r], #0\n\t" "movs r5, #0\n\t" "# A[] * B\n\t" - "ldr r6, [%[a]]\n\t" -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsls r7, %[b], #16\n\t" -#else - "lsl r7, %[b], #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ + "ldrh r6, [%[a]]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) "muls r7, r6\n\t" #else "mul r7, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r7\n\t" #else "add r3, r3, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) "adcs r4, %[r]\n\t" #else "adc r4, %[r]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, %[b], #16\n\t" #else "lsr r7, %[b], #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) "muls r6, r7\n\t" #else "mul r6, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r6, #16\n\t" #else "lsr r7, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #16\n\t" #else "lsl r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif "ldr r6, [%[a]]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, #16\n\t" #else "lsr r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, %[b], #16\n\t" #else "lsr r7, %[b], #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) "muls r7, r6\n\t" #else "mul r7, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, r7\n\t" #else "add r4, r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif -#ifdef __clang__ - "lsls r7, %[b], #16\n\t" -#else - "lsl r7, %[b], #16\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) "muls r6, r7\n\t" #else "mul r6, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r6, #16\n\t" #else "lsr r7, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #16\n\t" #else "lsl r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" @@ -18033,12 +74091,12 @@ SP_NOINLINE static void sp_3072_mul_d_48(sp_digit* r, const sp_digit* a, "str r3, [%[r]]\n\t" "movs r3, r4\n\t" "movs r4, r5\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[r], %[r], #4\n\t" #else "add %[r], %[r], #4\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[a], %[a], #4\n\t" #else "add %[a], %[a], #4\n\t" @@ -18067,12 +74125,12 @@ SP_NOINLINE static sp_digit div_3072_word_48(sp_digit d1, sp_digit d0, { __asm__ __volatile__ ( "movs r3, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, %[div], #1\n\t" #else "lsr r5, %[div], #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r5, r5, #1\n\t" #else "add r5, r5, #1\n\t" @@ -18081,326 +74139,307 @@ SP_NOINLINE static sp_digit div_3072_word_48(sp_digit d1, sp_digit d0, "mov r9, %[d1]\n\t" "# Do top 32\n\t" "movs r6, r5\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r6, r6, %[d1]\n\t" #else "sub r6, r6, %[d1]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r6\n\t" +#elif defined(__clang__) "sbcs r6, r6\n\t" #else "sbc r6, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r3\n\t" #else "add r3, r3, r3\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r3, r3, r6\n\t" #else "sub r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, r5\n\t" +#elif defined(__clang__) "ands r6, r5\n\t" #else "and r6, r5\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[d1], %[d1], r6\n\t" #else "sub %[d1], %[d1], r6\n\t" #endif - "\n\t" "movs r4, #29\n\t" "\n" - "L_div_3072_word_48_loop_%=: \n\t" -#ifdef __clang__ + "L_div_3072_word_48_loop_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls %[d0], %[d0], #1\n\t" #else "lsl %[d0], %[d0], #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs %[d1], %[d1], %[d1]\n\t" +#elif defined(__clang__) "adcs %[d1], %[d1]\n\t" #else "adc %[d1], %[d1]\n\t" #endif "movs r6, r5\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r6, r6, %[d1]\n\t" #else "sub r6, r6, %[d1]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r6\n\t" +#elif defined(__clang__) "sbcs r6, r6\n\t" #else "sbc r6, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r3\n\t" #else "add r3, r3, r3\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r3, r3, r6\n\t" #else "sub r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, r5\n\t" +#elif defined(__clang__) "ands r6, r5\n\t" #else "and r6, r5\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[d1], %[d1], r6\n\t" #else "sub %[d1], %[d1], r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r4, r4, #1\n\t" #else "sub r4, r4, #1\n\t" #endif "bpl L_div_3072_word_48_loop_%=\n\t" "movs r7, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r3\n\t" #else "add r3, r3, r3\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, #1\n\t" #else "add r3, r3, #1\n\t" #endif "# r * div - Start\n\t" -#ifdef __clang__ - "lsls %[d1], r3, #16\n\t" -#else - "lsl %[d1], r3, #16\n\t" -#endif -#ifdef __clang__ - "lsls r4, %[div], #16\n\t" -#else - "lsl r4, %[div], #16\n\t" -#endif -#ifdef __clang__ - "lsrs %[d1], %[d1], #16\n\t" -#else - "lsr %[d1], %[d1], #16\n\t" -#endif -#ifdef __clang__ - "lsrs r4, r4, #16\n\t" -#else - "lsr r4, r4, #16\n\t" -#endif -#ifdef __clang__ + "uxth %[d1], r3\n\t" + "uxth r4, %[div]\n\t" +#ifdef WOLFSSL_KEIL + "muls r4, %[d1], r4\n\t" +#elif defined(__clang__) "muls r4, %[d1]\n\t" #else "mul r4, %[d1]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, %[div], #16\n\t" #else "lsr r6, %[div], #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls %[d1], r6, %[d1]\n\t" +#elif defined(__clang__) "muls %[d1], r6\n\t" #else "mul %[d1], r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, %[d1], #16\n\t" #else "lsr r5, %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls %[d1], %[d1], #16\n\t" #else "lsl %[d1], %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, %[d1]\n\t" #else "add r4, r4, %[d1]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs %[d1], r3, #16\n\t" #else "lsr %[d1], r3, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r6, %[d1], r6\n\t" +#elif defined(__clang__) "muls r6, %[d1]\n\t" #else "mul r6, %[d1]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r5, r5, r6\n\t" #else "add r5, r5, r6\n\t" #endif -#ifdef __clang__ - "lsls r6, %[div], #16\n\t" -#else - "lsl r6, %[div], #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ + "uxth r6, %[div]\n\t" +#ifdef WOLFSSL_KEIL + "muls %[d1], r6, %[d1]\n\t" +#elif defined(__clang__) "muls %[d1], r6\n\t" #else "mul %[d1], r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, %[d1], #16\n\t" #else "lsr r6, %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls %[d1], %[d1], #16\n\t" #else "lsl %[d1], %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, %[d1]\n\t" #else "add r4, r4, %[d1]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r6\n\t" +#elif defined(__clang__) "adcs r5, r6\n\t" #else "adc r5, r6\n\t" #endif "# r * div - Done\n\t" "mov %[d1], r8\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[d1], %[d1], r4\n\t" #else "sub %[d1], %[d1], r4\n\t" #endif "movs r4, %[d1]\n\t" "mov %[d1], r9\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs %[d1], %[d1], r5\n\t" +#elif defined(__clang__) "sbcs %[d1], r5\n\t" #else "sbc %[d1], r5\n\t" #endif "movs r5, %[d1]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r5\n\t" #else "add r3, r3, r5\n\t" #endif "# r * div - Start\n\t" -#ifdef __clang__ - "lsls %[d1], r3, #16\n\t" -#else - "lsl %[d1], r3, #16\n\t" -#endif -#ifdef __clang__ - "lsls r4, %[div], #16\n\t" -#else - "lsl r4, %[div], #16\n\t" -#endif -#ifdef __clang__ - "lsrs %[d1], %[d1], #16\n\t" -#else - "lsr %[d1], %[d1], #16\n\t" -#endif -#ifdef __clang__ - "lsrs r4, r4, #16\n\t" -#else - "lsr r4, r4, #16\n\t" -#endif -#ifdef __clang__ + "uxth %[d1], r3\n\t" + "uxth r4, %[div]\n\t" +#ifdef WOLFSSL_KEIL + "muls r4, %[d1], r4\n\t" +#elif defined(__clang__) "muls r4, %[d1]\n\t" #else "mul r4, %[d1]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, %[div], #16\n\t" #else "lsr r6, %[div], #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls %[d1], r6, %[d1]\n\t" +#elif defined(__clang__) "muls %[d1], r6\n\t" #else "mul %[d1], r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, %[d1], #16\n\t" #else "lsr r5, %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls %[d1], %[d1], #16\n\t" #else "lsl %[d1], %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, %[d1]\n\t" #else "add r4, r4, %[d1]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs %[d1], r3, #16\n\t" #else "lsr %[d1], r3, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r6, %[d1], r6\n\t" +#elif defined(__clang__) "muls r6, %[d1]\n\t" #else "mul r6, %[d1]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r5, r5, r6\n\t" #else "add r5, r5, r6\n\t" #endif -#ifdef __clang__ - "lsls r6, %[div], #16\n\t" -#else - "lsl r6, %[div], #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ + "uxth r6, %[div]\n\t" +#ifdef WOLFSSL_KEIL + "muls %[d1], r6, %[d1]\n\t" +#elif defined(__clang__) "muls %[d1], r6\n\t" #else "mul %[d1], r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, %[d1], #16\n\t" #else "lsr r6, %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls %[d1], %[d1], #16\n\t" #else "lsl %[d1], %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, %[d1]\n\t" #else "add r4, r4, %[d1]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r6\n\t" +#elif defined(__clang__) "adcs r5, r6\n\t" #else "adc r5, r6\n\t" @@ -18408,124 +74447,115 @@ SP_NOINLINE static sp_digit div_3072_word_48(sp_digit d1, sp_digit d0, "# r * div - Done\n\t" "mov %[d1], r8\n\t" "mov r6, r9\n\t" +#ifdef WOLFSSL_KEIL + "subs r4, %[d1], r4\n\t" +#else #ifdef __clang__ "subs r4, %[d1], r4\n\t" #else "sub r4, %[d1], r4\n\t" #endif -#ifdef __clang__ +#endif +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r5\n\t" +#elif defined(__clang__) "sbcs r6, r5\n\t" #else "sbc r6, r5\n\t" #endif "movs r5, r6\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r5\n\t" #else "add r3, r3, r5\n\t" #endif "# r * div - Start\n\t" -#ifdef __clang__ - "lsls %[d1], r3, #16\n\t" -#else - "lsl %[d1], r3, #16\n\t" -#endif -#ifdef __clang__ - "lsls r4, %[div], #16\n\t" -#else - "lsl r4, %[div], #16\n\t" -#endif -#ifdef __clang__ - "lsrs %[d1], %[d1], #16\n\t" -#else - "lsr %[d1], %[d1], #16\n\t" -#endif -#ifdef __clang__ - "lsrs r4, r4, #16\n\t" -#else - "lsr r4, r4, #16\n\t" -#endif -#ifdef __clang__ + "uxth %[d1], r3\n\t" + "uxth r4, %[div]\n\t" +#ifdef WOLFSSL_KEIL + "muls r4, %[d1], r4\n\t" +#elif defined(__clang__) "muls r4, %[d1]\n\t" #else "mul r4, %[d1]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, %[div], #16\n\t" #else "lsr r6, %[div], #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls %[d1], r6, %[d1]\n\t" +#elif defined(__clang__) "muls %[d1], r6\n\t" #else "mul %[d1], r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, %[d1], #16\n\t" #else "lsr r5, %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls %[d1], %[d1], #16\n\t" #else "lsl %[d1], %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, %[d1]\n\t" #else "add r4, r4, %[d1]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs %[d1], r3, #16\n\t" #else "lsr %[d1], r3, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r6, %[d1], r6\n\t" +#elif defined(__clang__) "muls r6, %[d1]\n\t" #else "mul r6, %[d1]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r5, r5, r6\n\t" #else "add r5, r5, r6\n\t" #endif -#ifdef __clang__ - "lsls r6, %[div], #16\n\t" -#else - "lsl r6, %[div], #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ + "uxth r6, %[div]\n\t" +#ifdef WOLFSSL_KEIL + "muls %[d1], r6, %[d1]\n\t" +#elif defined(__clang__) "muls %[d1], r6\n\t" #else "mul %[d1], r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, %[d1], #16\n\t" #else "lsr r6, %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls %[d1], %[d1], #16\n\t" #else "lsl %[d1], %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, %[d1]\n\t" #else "add r4, r4, %[d1]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r6\n\t" +#elif defined(__clang__) "adcs r5, r6\n\t" #else "adc r5, r6\n\t" @@ -18533,34 +74563,42 @@ SP_NOINLINE static sp_digit div_3072_word_48(sp_digit d1, sp_digit d0, "# r * div - Done\n\t" "mov %[d1], r8\n\t" "mov r6, r9\n\t" +#ifdef WOLFSSL_KEIL + "subs r4, %[d1], r4\n\t" +#else #ifdef __clang__ "subs r4, %[d1], r4\n\t" #else "sub r4, %[d1], r4\n\t" #endif -#ifdef __clang__ +#endif +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r5\n\t" +#elif defined(__clang__) "sbcs r6, r5\n\t" #else "sbc r6, r5\n\t" #endif "movs r5, r6\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r5\n\t" #else "add r3, r3, r5\n\t" #endif "movs r6, %[div]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r6, r6, r4\n\t" #else "sub r6, r6, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r6\n\t" +#elif defined(__clang__) "sbcs r6, r6\n\t" #else "sbc r6, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r3, r3, r6\n\t" #else "sub r3, r3, r6\n\t" @@ -18585,78 +74623,90 @@ SP_NOINLINE static sp_int32 sp_3072_cmp_48(const sp_digit* a, const sp_digit* b) __asm__ __volatile__ ( "movs r2, #0\n\t" "movs r3, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "mvns r3, r3\n\t" #else "mvn r3, r3\n\t" #endif "movs r6, #0xbc\n\t" "\n" - "L_sp_3072_cmp_48_words_%=: \n\t" + "L_sp_3072_cmp_48_words_%=:\n\t" "ldr r7, [%[a], r6]\n\t" "ldr r5, [%[b], r6]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, r3\n\t" +#elif defined(__clang__) "ands r7, r3\n\t" #else "and r7, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r3\n\t" +#elif defined(__clang__) "ands r5, r3\n\t" #else "and r5, r3\n\t" #endif "movs r4, r7\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r7, r7, r5\n\t" #else "sub r7, r7, r5\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r7, r7, r7\n\t" +#elif defined(__clang__) "sbcs r7, r7\n\t" #else "sbc r7, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r7\n\t" #else "add r2, r2, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "mvns r7, r7\n\t" #else "mvn r7, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r3, r3, r7\n\t" +#elif defined(__clang__) "ands r3, r7\n\t" #else "and r3, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r5, r5, r4\n\t" #else "sub r5, r5, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r7, r7, r7\n\t" +#elif defined(__clang__) "sbcs r7, r7\n\t" #else "sbc r7, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r2, r2, r7\n\t" #else "sub r2, r2, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "mvns r7, r7\n\t" #else "mvn r7, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r3, r3, r7\n\t" +#elif defined(__clang__) "ands r3, r7\n\t" #else "and r3, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r6, r6, #4\n\t" #else "sub r6, r6, #4\n\t" @@ -19053,7 +75103,7 @@ SP_NOINLINE static sp_digit sp_3072_cond_sub_96(sp_digit* r, const sp_digit* a, __asm__ __volatile__ ( "movs r4, #0\n\t" "movs r5, #0xff\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r5, r5, #0x81\n\t" #else "add r5, r5, #0x81\n\t" @@ -19061,32 +75111,38 @@ SP_NOINLINE static sp_digit sp_3072_cond_sub_96(sp_digit* r, const sp_digit* a, "mov r8, r5\n\t" "movs r7, #0\n\t" "\n" - "L_sp_3072_cond_sub_96_words_%=: \n\t" + "L_sp_3072_cond_sub_96_words_%=:\n\t" "ldr r6, [%[b], r7]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, %[m]\n\t" +#elif defined(__clang__) "ands r6, %[m]\n\t" #else "and r6, %[m]\n\t" #endif "movs r5, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r5, r5, r4\n\t" #else "sub r5, r5, r4\n\t" #endif "ldr r5, [%[a], r7]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) "sbcs r5, r6\n\t" #else "sbc r5, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r4\n\t" +#elif defined(__clang__) "sbcs r4, r4\n\t" #else "sbc r4, r4\n\t" #endif "str r5, [%[r], r7]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r7, r7, #4\n\t" #else "add r7, r7, #4\n\t" @@ -19110,384 +75166,2169 @@ SP_NOINLINE static sp_digit sp_3072_cond_sub_96(sp_digit* r, const sp_digit* a, SP_NOINLINE static void sp_3072_mont_reduce_96(sp_digit* a, const sp_digit* m, sp_digit mp) { - sp_digit ca = 0; __asm__ __volatile__ ( + "movs r7, #0\n\t" "mov r8, %[mp]\n\t" - "mov r12, %[ca]\n\t" + "mov r12, r7\n\t" "mov lr, %[m]\n\t" "mov r9, %[a]\n\t" + "mov r11, %[a]\n\t" + "movs r5, #0xff\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, #0x7d\n\t" +#else + "add r5, r5, #0x7d\n\t" +#endif + "movs r6, #0xff\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r6, r6, #0x81\n\t" +#else + "add r6, r6, #0x81\n\t" +#endif + "add r9, r9, r5\n\t" + "add r11, r11, r6\n\t" + "\n" + "L_sp_3072_mont_reduce_96_mod_%=:\n\t" + "movs r7, #0\n\t" "movs r4, #0\n\t" - "# i = 0\n\t" - "mov r11, r4\n\t" - "\n" - "L_sp_3072_mont_reduce_96_mod_%=: \n\t" - "movs r5, #0\n\t" - "movs %[ca], #0\n\t" + "# a[i] += m[0] * mu\n\t" + "ldm %[m]!, {%[mp]}\n\t" + "ldm %[a]!, {r3}\n\t" "# mu = a[i] * mp\n\t" - "mov %[mp], r8\n\t" - "ldr %[a], [%[a]]\n\t" -#ifdef __clang__ - "muls %[mp], %[a]\n\t" + "mov r5, r8\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r3, r5\n\t" +#elif defined(__clang__) + "muls r5, r3\n\t" #else - "mul %[mp], %[a]\n\t" + "mul r5, r3\n\t" #endif - "mov %[m], lr\n\t" - "mov r10, r9\n\t" - "\n" - "L_sp_3072_mont_reduce_96_word_%=: \n\t" - "# a[i+j] += m[j] * mu\n\t" - "mov %[a], r10\n\t" - "ldr %[a], [%[a]]\n\t" - "movs %[ca], #0\n\t" - "movs r4, r5\n\t" - "movs r5, #0\n\t" - "# Multiply m[j] and mu - Start\n\t" - "ldr r7, [%[m]]\n\t" -#ifdef __clang__ - "lsls r6, %[mp], #16\n\t" + "mov r10, r5\n\t" + "# Multiply m[0] and mu - Start\n\t" + "mov r5, r10\n\t" + "uxth r6, %[mp]\n\t" + "uxth r5, r5\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" #else - "lsl r6, %[mp], #16\n\t" + "mul r6, r5\n\t" #endif -#ifdef __clang__ - "lsls r7, r7, #16\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" #else - "lsl r7, r7, #16\n\t" + "add r3, r3, r6\n\t" #endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" #else - "lsr r6, r6, #16\n\t" + "adc r4, r7\n\t" #endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "muls r7, r6\n\t" -#else - "mul r7, r6\n\t" -#endif -#ifdef __clang__ - "adds %[a], %[a], r7\n\t" -#else - "add %[a], %[a], r7\n\t" -#endif -#ifdef __clang__ - "adcs r5, %[ca]\n\t" -#else - "adc r5, %[ca]\n\t" -#endif - "ldr r7, [%[m]]\n\t" -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "muls r6, r7\n\t" -#else - "mul r6, r7\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r6, #16\n\t" -#else - "lsr r7, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "adds %[a], %[a], r6\n\t" -#else - "add %[a], %[a], r6\n\t" -#endif -#ifdef __clang__ - "adcs r5, r7\n\t" -#else - "adc r5, r7\n\t" -#endif - "ldr r7, [%[m]]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, %[mp], #16\n\t" #else "lsr r6, %[mp], #16\n\t" #endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" #else - "lsr r7, r7, #16\n\t" + "mul r5, r6\n\t" #endif -#ifdef __clang__ - "muls r7, r6\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" #else - "mul r7, r6\n\t" + "lsr r6, r5, #16\n\t" #endif -#ifdef __clang__ - "adds r5, r5, r7\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" #else - "add r5, r5, r7\n\t" + "lsl r5, r5, #16\n\t" #endif - "ldr r7, [%[m]]\n\t" -#ifdef __clang__ - "lsls r7, r7, #16\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" #else - "lsl r7, r7, #16\n\t" + "add r3, r3, r5\n\t" #endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "lsr r7, r7, #16\n\t" + "adc r4, r6\n\t" #endif -#ifdef __clang__ - "muls r6, r7\n\t" + "mov r5, r10\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[mp], #16\n\t" #else - "mul r6, r7\n\t" + "lsr r6, %[mp], #16\n\t" #endif -#ifdef __clang__ - "lsrs r7, r6, #16\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, r5, #16\n\t" #else - "lsr r7, r6, #16\n\t" + "lsr r5, r5, #16\n\t" #endif -#ifdef __clang__ - "lsls r6, r6, #16\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" #else - "lsl r6, r6, #16\n\t" + "mul r6, r5\n\t" #endif -#ifdef __clang__ - "adds %[a], %[a], r6\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" #else - "add %[a], %[a], r6\n\t" + "add r4, r4, r6\n\t" #endif -#ifdef __clang__ - "adcs r5, r7\n\t" + "uxth r6, %[mp]\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" #else - "adc r5, r7\n\t" + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "# Multiply m[0] and mu - Done\n\t" + "\n" + "L_sp_3072_mont_reduce_96_word_%=:\n\t" + "# a[i+j] += m[j] * mu\n\t" + "ldr r3, [%[a]]\n\t" + "ldm %[m]!, {%[mp]}\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r4\n\t" +#else + "add r3, r3, r4\n\t" +#endif + "movs r4, #0\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif + "# Multiply m[j] and mu - Start\n\t" + "mov r5, r10\n\t" + "uxth r6, %[mp]\n\t" + "uxth r5, r5\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[mp], #16\n\t" +#else + "lsr r6, %[mp], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "mov r5, r10\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[mp], #16\n\t" +#else + "lsr r6, %[mp], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, r5, #16\n\t" +#else + "lsr r5, r5, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif + "uxth r6, %[mp]\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" #endif "# Multiply m[j] and mu - Done\n\t" -#ifdef __clang__ - "adds r4, r4, %[a]\n\t" -#else - "add r4, r4, %[a]\n\t" -#endif -#ifdef __clang__ - "adcs r5, %[ca]\n\t" -#else - "adc r5, %[ca]\n\t" -#endif - "mov %[a], r10\n\t" - "str r4, [%[a]]\n\t" - "movs r6, #4\n\t" -#ifdef __clang__ - "adds %[m], %[m], #4\n\t" -#else - "add %[m], %[m], #4\n\t" -#endif - "add r10, r10, r6\n\t" - "movs r4, #0xff\n\t" -#ifdef __clang__ - "adds r4, r4, #0x7d\n\t" -#else - "add r4, r4, #0x7d\n\t" -#endif - "add r4, r4, r9\n\t" - "cmp r10, r4\n\t" + "stm %[a]!, {r3}\n\t" + "cmp %[a], r9\n\t" "blt L_sp_3072_mont_reduce_96_word_%=\n\t" "# a[i+95] += m[95] * mu\n\t" - "movs %[ca], #0\n\t" - "mov r4, r12\n\t" - "movs %[a], #0\n\t" + "ldr %[mp], [%[m]]\n\t" + "mov r3, r12\n\t" "# Multiply m[95] and mu - Start\n\t" - "ldr r7, [%[m]]\n\t" -#ifdef __clang__ - "lsls r6, %[mp], #16\n\t" + "mov r5, r10\n\t" + "uxth r6, %[mp]\n\t" + "uxth r5, r5\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" #else - "lsl r6, %[mp], #16\n\t" + "mul r6, r5\n\t" #endif -#ifdef __clang__ - "lsls r7, r7, #16\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" #else - "lsl r7, r7, #16\n\t" + "add r4, r4, r6\n\t" #endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" #else - "lsr r6, r6, #16\n\t" + "adc r3, r7\n\t" #endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r7\n\t" +#elif defined(__clang__) + "adcs r7, r7\n\t" #else - "lsr r7, r7, #16\n\t" + "adc r7, r7\n\t" #endif -#ifdef __clang__ - "muls r7, r6\n\t" -#else - "mul r7, r6\n\t" -#endif -#ifdef __clang__ - "adds r5, r5, r7\n\t" -#else - "add r5, r5, r7\n\t" -#endif -#ifdef __clang__ - "adcs r4, %[ca]\n\t" -#else - "adc r4, %[ca]\n\t" -#endif -#ifdef __clang__ - "adcs %[a], %[ca]\n\t" -#else - "adc %[a], %[ca]\n\t" -#endif - "ldr r7, [%[m]]\n\t" -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "muls r6, r7\n\t" -#else - "mul r6, r7\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r6, #16\n\t" -#else - "lsr r7, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "adds r5, r5, r6\n\t" -#else - "add r5, r5, r6\n\t" -#endif -#ifdef __clang__ - "adcs r4, r7\n\t" -#else - "adc r4, r7\n\t" -#endif -#ifdef __clang__ - "adcs %[a], %[ca]\n\t" -#else - "adc %[a], %[ca]\n\t" -#endif - "ldr r7, [%[m]]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, %[mp], #16\n\t" #else "lsr r6, %[mp], #16\n\t" #endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" #else - "lsr r7, r7, #16\n\t" + "mul r5, r6\n\t" #endif -#ifdef __clang__ - "muls r7, r6\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" #else - "mul r7, r6\n\t" + "lsr r6, r5, #16\n\t" #endif -#ifdef __clang__ - "adds r4, r4, r7\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" #else - "add r4, r4, r7\n\t" + "lsl r5, r5, #16\n\t" #endif -#ifdef __clang__ - "adcs %[a], %[ca]\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" #else - "adc %[a], %[ca]\n\t" + "add r4, r4, r5\n\t" #endif - "ldr r7, [%[m]]\n\t" -#ifdef __clang__ - "lsls r7, r7, #16\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" #else - "lsl r7, r7, #16\n\t" + "adc r3, r6\n\t" #endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r7\n\t" +#elif defined(__clang__) + "adcs r7, r7\n\t" #else - "lsr r7, r7, #16\n\t" + "adc r7, r7\n\t" #endif -#ifdef __clang__ - "muls r6, r7\n\t" + "mov r5, r10\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[mp], #16\n\t" #else - "mul r6, r7\n\t" + "lsr r6, %[mp], #16\n\t" #endif -#ifdef __clang__ - "lsrs r7, r6, #16\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, r5, #16\n\t" #else - "lsr r7, r6, #16\n\t" + "lsr r5, r5, #16\n\t" #endif -#ifdef __clang__ - "lsls r6, r6, #16\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" #else - "lsl r6, r6, #16\n\t" + "mul r6, r5\n\t" #endif -#ifdef __clang__ - "adds r5, r5, r6\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" #else - "add r5, r5, r6\n\t" + "add r3, r3, r6\n\t" #endif -#ifdef __clang__ - "adcs r4, r7\n\t" +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r7\n\t" +#elif defined(__clang__) + "adcs r7, r7\n\t" #else - "adc r4, r7\n\t" + "adc r7, r7\n\t" #endif -#ifdef __clang__ - "adcs %[a], %[ca]\n\t" + "uxth r6, %[mp]\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" #else - "adc %[a], %[ca]\n\t" + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r7\n\t" +#elif defined(__clang__) + "adcs r7, r7\n\t" +#else + "adc r7, r7\n\t" #endif "# Multiply m[95] and mu - Done\n\t" - "movs %[ca], %[a]\n\t" - "mov %[a], r10\n\t" - "ldr r7, [%[a], #4]\n\t" - "ldr %[a], [%[a]]\n\t" - "movs r6, #0\n\t" -#ifdef __clang__ - "adds r5, r5, %[a]\n\t" + "ldr r5, [%[a]]\n\t" + "ldr r6, [%[a], #4]\n\t" + "movs %[mp], #0\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r4\n\t" #else - "add r5, r5, %[a]\n\t" + "add r5, r5, r4\n\t" #endif -#ifdef __clang__ - "adcs r7, r4\n\t" +#ifdef WOLFSSL_KEIL + "adcs r6, r6, r3\n\t" +#elif defined(__clang__) + "adcs r6, r3\n\t" #else - "adc r7, r4\n\t" + "adc r6, r3\n\t" #endif -#ifdef __clang__ - "adcs %[ca], r6\n\t" +#ifdef WOLFSSL_KEIL + "adcs r7, r7, %[mp]\n\t" +#elif defined(__clang__) + "adcs r7, %[mp]\n\t" #else - "adc %[ca], r6\n\t" + "adc r7, %[mp]\n\t" #endif - "mov %[a], r10\n\t" - "str r5, [%[a]]\n\t" - "str r7, [%[a], #4]\n\t" + "stm %[a]!, {r5, r6}\n\t" "# i += 1\n\t" - "movs r6, #4\n\t" - "add r9, r9, r6\n\t" - "add r11, r11, r6\n\t" - "mov r12, %[ca]\n\t" - "mov %[a], r9\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "subs %[a], %[a], #4\n\t" +#else + "sub %[a], %[a], #4\n\t" +#endif + "movs r3, #0xff\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, #0x7d\n\t" +#else + "add r3, r3, #0x7d\n\t" +#endif + "mov r9, %[a]\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "subs %[a], %[a], r3\n\t" +#else + "sub %[a], %[a], r3\n\t" +#endif + "mov r12, r7\n\t" + "mov %[m], lr\n\t" + "cmp r11, %[a]\n\t" + "bgt L_sp_3072_mont_reduce_96_mod_%=\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "negs r7, r7\n\t" +#else + "neg r7, r7\n\t" +#endif + "# Subtract masked modulus\n\t" "movs r4, #0xff\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, #0x81\n\t" #else "add r4, r4, #0x81\n\t" #endif - "cmp r11, r4\n\t" - "blt L_sp_3072_mont_reduce_96_mod_%=\n\t" - "mov %[m], lr\n\t" - : [a] "+r" (a), [m] "+r" (m), [mp] "+r" (mp), [ca] "+r" (ca) + "movs %[mp], #0\n\t" + "movs r3, #0\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "subs %[a], %[a], r4\n\t" +#else + "sub %[a], %[a], r4\n\t" +#endif +#ifndef WOLFSSL_SP_LARGE_CODE + "\n" + "L_sp_3072_mont_reduce_96_sub_mask_%=:\n\t" + "ldm %[m]!, {r6}\n\t" + "movs r5, #0\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "subs r5, r5, %[mp]\n\t" +#else + "sub r5, r5, %[mp]\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "sbcs %[mp], %[mp], %[mp]\n\t" +#elif defined(__clang__) + "sbcs %[mp], %[mp]\n\t" +#else + "sbc %[mp], %[mp]\n\t" +#endif + "stm %[a]!, {r5}\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, #4\n\t" +#else + "add r3, r3, #4\n\t" +#endif + "cmp r3, r4\n\t" + "blt L_sp_3072_mont_reduce_96_sub_mask_%=\n\t" +#else /* WOLFSSL_SP_LARGE_CODE */ + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "subs r5, r5, r6\n\t" +#else + "sub r5, r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" +#endif /* WOLFSSL_SP_LARGE_CODE */ + : [a] "+r" (a), [m] "+r" (m), [mp] "+r" (mp) : - : "memory", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12", "lr" + : "memory", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12", "lr" ); - sp_3072_cond_sub_96(a - 96, a, m, (sp_digit)0 - ca); } /* Multiply two Montogmery form numbers mod the modulus (prime). @@ -19534,48 +77375,52 @@ SP_NOINLINE static sp_digit sp_3072_sub_96(sp_digit* r, const sp_digit* a, "movs r6, %[a]\n\t" "movs r3, #0\n\t" "movs r5, #0xff\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r5, r5, #0x81\n\t" #else "add r5, r5, #0x81\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r6, r6, r5\n\t" #else "add r6, r6, r5\n\t" #endif "\n" - "L_sp_3072_sub_96_word_%=: \n\t" + "L_sp_3072_sub_96_word_%=:\n\t" "movs r5, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r5, r5, r3\n\t" #else "sub r5, r5, r3\n\t" #endif "ldr r4, [%[a]]\n\t" "ldr r5, [%[b]]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r5\n\t" +#elif defined(__clang__) "sbcs r4, r5\n\t" #else "sbc r4, r5\n\t" #endif "str r4, [%[r]]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r3\n\t" +#elif defined(__clang__) "sbcs r3, r3\n\t" #else "sbc r3, r3\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[a], %[a], #4\n\t" #else "add %[a], %[a], #4\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[b], %[b], #4\n\t" #else "add %[b], %[b], #4\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[r], %[r], #4\n\t" #else "add %[r], %[r], #4\n\t" @@ -19601,836 +77446,830 @@ SP_NOINLINE static sp_digit sp_3072_sub_96(sp_digit* r, const sp_digit* a, const sp_digit* b) { __asm__ __volatile__ ( - "movs r3, #0\n\t" - "ldr r4, [%[a]]\n\t" - "ldr r5, [%[a], #4]\n\t" - "ldr r6, [%[b]]\n\t" - "ldr r7, [%[b], #4]\n\t" -#ifdef __clang__ - "subs r4, r4, r6\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "subs r3, r3, r5\n\t" #else - "sub r4, r4, r6\n\t" + "sub r3, r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" -#else - "sbc r5, r7\n\t" -#endif - "str r4, [%[r]]\n\t" - "str r5, [%[r], #4]\n\t" - "ldr r4, [%[a], #8]\n\t" - "ldr r5, [%[a], #12]\n\t" - "ldr r6, [%[b], #8]\n\t" - "ldr r7, [%[b], #12]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #8]\n\t" - "str r5, [%[r], #12]\n\t" - "ldr r4, [%[a], #16]\n\t" - "ldr r5, [%[a], #20]\n\t" - "ldr r6, [%[b], #16]\n\t" - "ldr r7, [%[b], #20]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #16]\n\t" - "str r5, [%[r], #20]\n\t" - "ldr r4, [%[a], #24]\n\t" - "ldr r5, [%[a], #28]\n\t" - "ldr r6, [%[b], #24]\n\t" - "ldr r7, [%[b], #28]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #24]\n\t" - "str r5, [%[r], #28]\n\t" - "ldr r4, [%[a], #32]\n\t" - "ldr r5, [%[a], #36]\n\t" - "ldr r6, [%[b], #32]\n\t" - "ldr r7, [%[b], #36]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #32]\n\t" - "str r5, [%[r], #36]\n\t" - "ldr r4, [%[a], #40]\n\t" - "ldr r5, [%[a], #44]\n\t" - "ldr r6, [%[b], #40]\n\t" - "ldr r7, [%[b], #44]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #40]\n\t" - "str r5, [%[r], #44]\n\t" - "ldr r4, [%[a], #48]\n\t" - "ldr r5, [%[a], #52]\n\t" - "ldr r6, [%[b], #48]\n\t" - "ldr r7, [%[b], #52]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #48]\n\t" - "str r5, [%[r], #52]\n\t" - "ldr r4, [%[a], #56]\n\t" - "ldr r5, [%[a], #60]\n\t" - "ldr r6, [%[b], #56]\n\t" - "ldr r7, [%[b], #60]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #56]\n\t" - "str r5, [%[r], #60]\n\t" - "ldr r4, [%[a], #64]\n\t" - "ldr r5, [%[a], #68]\n\t" - "ldr r6, [%[b], #64]\n\t" - "ldr r7, [%[b], #68]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #64]\n\t" - "str r5, [%[r], #68]\n\t" - "ldr r4, [%[a], #72]\n\t" - "ldr r5, [%[a], #76]\n\t" - "ldr r6, [%[b], #72]\n\t" - "ldr r7, [%[b], #76]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #72]\n\t" - "str r5, [%[r], #76]\n\t" - "ldr r4, [%[a], #80]\n\t" - "ldr r5, [%[a], #84]\n\t" - "ldr r6, [%[b], #80]\n\t" - "ldr r7, [%[b], #84]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #80]\n\t" - "str r5, [%[r], #84]\n\t" - "ldr r4, [%[a], #88]\n\t" - "ldr r5, [%[a], #92]\n\t" - "ldr r6, [%[b], #88]\n\t" - "ldr r7, [%[b], #92]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #88]\n\t" - "str r5, [%[r], #92]\n\t" - "ldr r4, [%[a], #96]\n\t" - "ldr r5, [%[a], #100]\n\t" - "ldr r6, [%[b], #96]\n\t" - "ldr r7, [%[b], #100]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #96]\n\t" - "str r5, [%[r], #100]\n\t" - "ldr r4, [%[a], #104]\n\t" - "ldr r5, [%[a], #108]\n\t" - "ldr r6, [%[b], #104]\n\t" - "ldr r7, [%[b], #108]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #104]\n\t" - "str r5, [%[r], #108]\n\t" - "ldr r4, [%[a], #112]\n\t" - "ldr r5, [%[a], #116]\n\t" - "ldr r6, [%[b], #112]\n\t" - "ldr r7, [%[b], #116]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #112]\n\t" - "str r5, [%[r], #116]\n\t" - "ldr r4, [%[a], #120]\n\t" - "ldr r5, [%[a], #124]\n\t" - "ldr r6, [%[b], #120]\n\t" - "ldr r7, [%[b], #124]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #120]\n\t" - "str r5, [%[r], #124]\n\t" -#ifdef __clang__ - "sbcs r3, r3\n\t" -#else - "sbc r3, r3\n\t" -#endif -#ifdef __clang__ - "adds %[a], %[a], #0x80\n\t" -#else - "add %[a], %[a], #0x80\n\t" -#endif -#ifdef __clang__ - "adds %[b], %[b], #0x80\n\t" -#else - "add %[b], %[b], #0x80\n\t" -#endif -#ifdef __clang__ - "adds %[r], %[r], #0x80\n\t" -#else - "add %[r], %[r], #0x80\n\t" -#endif - "movs r6, #0\n\t" -#ifdef __clang__ - "subs r6, r6, r3\n\t" -#else - "sub r6, r6, r3\n\t" -#endif - "ldr r4, [%[a]]\n\t" - "ldr r5, [%[a], #4]\n\t" - "ldr r6, [%[b]]\n\t" - "ldr r7, [%[b], #4]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r]]\n\t" - "str r5, [%[r], #4]\n\t" - "ldr r4, [%[a], #8]\n\t" - "ldr r5, [%[a], #12]\n\t" - "ldr r6, [%[b], #8]\n\t" - "ldr r7, [%[b], #12]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #8]\n\t" - "str r5, [%[r], #12]\n\t" - "ldr r4, [%[a], #16]\n\t" - "ldr r5, [%[a], #20]\n\t" - "ldr r6, [%[b], #16]\n\t" - "ldr r7, [%[b], #20]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #16]\n\t" - "str r5, [%[r], #20]\n\t" - "ldr r4, [%[a], #24]\n\t" - "ldr r5, [%[a], #28]\n\t" - "ldr r6, [%[b], #24]\n\t" - "ldr r7, [%[b], #28]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #24]\n\t" - "str r5, [%[r], #28]\n\t" - "ldr r4, [%[a], #32]\n\t" - "ldr r5, [%[a], #36]\n\t" - "ldr r6, [%[b], #32]\n\t" - "ldr r7, [%[b], #36]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #32]\n\t" - "str r5, [%[r], #36]\n\t" - "ldr r4, [%[a], #40]\n\t" - "ldr r5, [%[a], #44]\n\t" - "ldr r6, [%[b], #40]\n\t" - "ldr r7, [%[b], #44]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #40]\n\t" - "str r5, [%[r], #44]\n\t" - "ldr r4, [%[a], #48]\n\t" - "ldr r5, [%[a], #52]\n\t" - "ldr r6, [%[b], #48]\n\t" - "ldr r7, [%[b], #52]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #48]\n\t" - "str r5, [%[r], #52]\n\t" - "ldr r4, [%[a], #56]\n\t" - "ldr r5, [%[a], #60]\n\t" - "ldr r6, [%[b], #56]\n\t" - "ldr r7, [%[b], #60]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #56]\n\t" - "str r5, [%[r], #60]\n\t" - "ldr r4, [%[a], #64]\n\t" - "ldr r5, [%[a], #68]\n\t" - "ldr r6, [%[b], #64]\n\t" - "ldr r7, [%[b], #68]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #64]\n\t" - "str r5, [%[r], #68]\n\t" - "ldr r4, [%[a], #72]\n\t" - "ldr r5, [%[a], #76]\n\t" - "ldr r6, [%[b], #72]\n\t" - "ldr r7, [%[b], #76]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #72]\n\t" - "str r5, [%[r], #76]\n\t" - "ldr r4, [%[a], #80]\n\t" - "ldr r5, [%[a], #84]\n\t" - "ldr r6, [%[b], #80]\n\t" - "ldr r7, [%[b], #84]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #80]\n\t" - "str r5, [%[r], #84]\n\t" - "ldr r4, [%[a], #88]\n\t" - "ldr r5, [%[a], #92]\n\t" - "ldr r6, [%[b], #88]\n\t" - "ldr r7, [%[b], #92]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #88]\n\t" - "str r5, [%[r], #92]\n\t" - "ldr r4, [%[a], #96]\n\t" - "ldr r5, [%[a], #100]\n\t" - "ldr r6, [%[b], #96]\n\t" - "ldr r7, [%[b], #100]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #96]\n\t" - "str r5, [%[r], #100]\n\t" - "ldr r4, [%[a], #104]\n\t" - "ldr r5, [%[a], #108]\n\t" - "ldr r6, [%[b], #104]\n\t" - "ldr r7, [%[b], #108]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #104]\n\t" - "str r5, [%[r], #108]\n\t" - "ldr r4, [%[a], #112]\n\t" - "ldr r5, [%[a], #116]\n\t" - "ldr r6, [%[b], #112]\n\t" - "ldr r7, [%[b], #116]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #112]\n\t" - "str r5, [%[r], #116]\n\t" - "ldr r4, [%[a], #120]\n\t" - "ldr r5, [%[a], #124]\n\t" - "ldr r6, [%[b], #120]\n\t" - "ldr r7, [%[b], #124]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #120]\n\t" - "str r5, [%[r], #124]\n\t" -#ifdef __clang__ - "sbcs r3, r3\n\t" -#else - "sbc r3, r3\n\t" -#endif -#ifdef __clang__ - "adds %[a], %[a], #0x80\n\t" -#else - "add %[a], %[a], #0x80\n\t" -#endif -#ifdef __clang__ - "adds %[b], %[b], #0x80\n\t" -#else - "add %[b], %[b], #0x80\n\t" -#endif -#ifdef __clang__ - "adds %[r], %[r], #0x80\n\t" -#else - "add %[r], %[r], #0x80\n\t" -#endif - "movs r6, #0\n\t" -#ifdef __clang__ - "subs r6, r6, r3\n\t" -#else - "sub r6, r6, r3\n\t" -#endif - "ldr r4, [%[a]]\n\t" - "ldr r5, [%[a], #4]\n\t" - "ldr r6, [%[b]]\n\t" - "ldr r7, [%[b], #4]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r]]\n\t" - "str r5, [%[r], #4]\n\t" - "ldr r4, [%[a], #8]\n\t" - "ldr r5, [%[a], #12]\n\t" - "ldr r6, [%[b], #8]\n\t" - "ldr r7, [%[b], #12]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #8]\n\t" - "str r5, [%[r], #12]\n\t" - "ldr r4, [%[a], #16]\n\t" - "ldr r5, [%[a], #20]\n\t" - "ldr r6, [%[b], #16]\n\t" - "ldr r7, [%[b], #20]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #16]\n\t" - "str r5, [%[r], #20]\n\t" - "ldr r4, [%[a], #24]\n\t" - "ldr r5, [%[a], #28]\n\t" - "ldr r6, [%[b], #24]\n\t" - "ldr r7, [%[b], #28]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #24]\n\t" - "str r5, [%[r], #28]\n\t" - "ldr r4, [%[a], #32]\n\t" - "ldr r5, [%[a], #36]\n\t" - "ldr r6, [%[b], #32]\n\t" - "ldr r7, [%[b], #36]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #32]\n\t" - "str r5, [%[r], #36]\n\t" - "ldr r4, [%[a], #40]\n\t" - "ldr r5, [%[a], #44]\n\t" - "ldr r6, [%[b], #40]\n\t" - "ldr r7, [%[b], #44]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #40]\n\t" - "str r5, [%[r], #44]\n\t" - "ldr r4, [%[a], #48]\n\t" - "ldr r5, [%[a], #52]\n\t" - "ldr r6, [%[b], #48]\n\t" - "ldr r7, [%[b], #52]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #48]\n\t" - "str r5, [%[r], #52]\n\t" - "ldr r4, [%[a], #56]\n\t" - "ldr r5, [%[a], #60]\n\t" - "ldr r6, [%[b], #56]\n\t" - "ldr r7, [%[b], #60]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #56]\n\t" - "str r5, [%[r], #60]\n\t" - "ldr r4, [%[a], #64]\n\t" - "ldr r5, [%[a], #68]\n\t" - "ldr r6, [%[b], #64]\n\t" - "ldr r7, [%[b], #68]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #64]\n\t" - "str r5, [%[r], #68]\n\t" - "ldr r4, [%[a], #72]\n\t" - "ldr r5, [%[a], #76]\n\t" - "ldr r6, [%[b], #72]\n\t" - "ldr r7, [%[b], #76]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #72]\n\t" - "str r5, [%[r], #76]\n\t" - "ldr r4, [%[a], #80]\n\t" - "ldr r5, [%[a], #84]\n\t" - "ldr r6, [%[b], #80]\n\t" - "ldr r7, [%[b], #84]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #80]\n\t" - "str r5, [%[r], #84]\n\t" - "ldr r4, [%[a], #88]\n\t" - "ldr r5, [%[a], #92]\n\t" - "ldr r6, [%[b], #88]\n\t" - "ldr r7, [%[b], #92]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #88]\n\t" - "str r5, [%[r], #92]\n\t" - "ldr r4, [%[a], #96]\n\t" - "ldr r5, [%[a], #100]\n\t" - "ldr r6, [%[b], #96]\n\t" - "ldr r7, [%[b], #100]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #96]\n\t" - "str r5, [%[r], #100]\n\t" - "ldr r4, [%[a], #104]\n\t" - "ldr r5, [%[a], #108]\n\t" - "ldr r6, [%[b], #104]\n\t" - "ldr r7, [%[b], #108]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #104]\n\t" - "str r5, [%[r], #108]\n\t" - "ldr r4, [%[a], #112]\n\t" - "ldr r5, [%[a], #116]\n\t" - "ldr r6, [%[b], #112]\n\t" - "ldr r7, [%[b], #116]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #112]\n\t" - "str r5, [%[r], #116]\n\t" - "ldr r4, [%[a], #120]\n\t" - "ldr r5, [%[a], #124]\n\t" - "ldr r6, [%[b], #120]\n\t" - "ldr r7, [%[b], #124]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #120]\n\t" - "str r5, [%[r], #124]\n\t" -#ifdef __clang__ - "sbcs r3, r3\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) + "sbcs r4, r6\n\t" #else - "sbc r3, r3\n\t" + "sbc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs %[r], %[r], %[r]\n\t" +#elif defined(__clang__) + "sbcs %[r], %[r]\n\t" +#else + "sbc %[r], %[r]\n\t" #endif - "movs %[r], r3\n\t" : [r] "+r" (r), [a] "+r" (a), [b] "+r" (b) : - : "memory", "r3", "r4", "r5", "r6", "r7" + : "memory", "r3", "r4", "r5", "r6" ); return (uint32_t)(size_t)r; } @@ -20450,12 +78289,12 @@ SP_NOINLINE static sp_digit div_3072_word_96(sp_digit d1, sp_digit d0, { __asm__ __volatile__ ( "movs r3, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, %[div], #1\n\t" #else "lsr r5, %[div], #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r5, r5, #1\n\t" #else "add r5, r5, #1\n\t" @@ -20464,326 +78303,307 @@ SP_NOINLINE static sp_digit div_3072_word_96(sp_digit d1, sp_digit d0, "mov r9, %[d1]\n\t" "# Do top 32\n\t" "movs r6, r5\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r6, r6, %[d1]\n\t" #else "sub r6, r6, %[d1]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r6\n\t" +#elif defined(__clang__) "sbcs r6, r6\n\t" #else "sbc r6, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r3\n\t" #else "add r3, r3, r3\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r3, r3, r6\n\t" #else "sub r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, r5\n\t" +#elif defined(__clang__) "ands r6, r5\n\t" #else "and r6, r5\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[d1], %[d1], r6\n\t" #else "sub %[d1], %[d1], r6\n\t" #endif - "\n\t" "movs r4, #29\n\t" "\n" - "L_div_3072_word_96_loop_%=: \n\t" -#ifdef __clang__ + "L_div_3072_word_96_loop_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls %[d0], %[d0], #1\n\t" #else "lsl %[d0], %[d0], #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs %[d1], %[d1], %[d1]\n\t" +#elif defined(__clang__) "adcs %[d1], %[d1]\n\t" #else "adc %[d1], %[d1]\n\t" #endif "movs r6, r5\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r6, r6, %[d1]\n\t" #else "sub r6, r6, %[d1]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r6\n\t" +#elif defined(__clang__) "sbcs r6, r6\n\t" #else "sbc r6, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r3\n\t" #else "add r3, r3, r3\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r3, r3, r6\n\t" #else "sub r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, r5\n\t" +#elif defined(__clang__) "ands r6, r5\n\t" #else "and r6, r5\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[d1], %[d1], r6\n\t" #else "sub %[d1], %[d1], r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r4, r4, #1\n\t" #else "sub r4, r4, #1\n\t" #endif "bpl L_div_3072_word_96_loop_%=\n\t" "movs r7, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r3\n\t" #else "add r3, r3, r3\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, #1\n\t" #else "add r3, r3, #1\n\t" #endif "# r * div - Start\n\t" -#ifdef __clang__ - "lsls %[d1], r3, #16\n\t" -#else - "lsl %[d1], r3, #16\n\t" -#endif -#ifdef __clang__ - "lsls r4, %[div], #16\n\t" -#else - "lsl r4, %[div], #16\n\t" -#endif -#ifdef __clang__ - "lsrs %[d1], %[d1], #16\n\t" -#else - "lsr %[d1], %[d1], #16\n\t" -#endif -#ifdef __clang__ - "lsrs r4, r4, #16\n\t" -#else - "lsr r4, r4, #16\n\t" -#endif -#ifdef __clang__ + "uxth %[d1], r3\n\t" + "uxth r4, %[div]\n\t" +#ifdef WOLFSSL_KEIL + "muls r4, %[d1], r4\n\t" +#elif defined(__clang__) "muls r4, %[d1]\n\t" #else "mul r4, %[d1]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, %[div], #16\n\t" #else "lsr r6, %[div], #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls %[d1], r6, %[d1]\n\t" +#elif defined(__clang__) "muls %[d1], r6\n\t" #else "mul %[d1], r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, %[d1], #16\n\t" #else "lsr r5, %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls %[d1], %[d1], #16\n\t" #else "lsl %[d1], %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, %[d1]\n\t" #else "add r4, r4, %[d1]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs %[d1], r3, #16\n\t" #else "lsr %[d1], r3, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r6, %[d1], r6\n\t" +#elif defined(__clang__) "muls r6, %[d1]\n\t" #else "mul r6, %[d1]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r5, r5, r6\n\t" #else "add r5, r5, r6\n\t" #endif -#ifdef __clang__ - "lsls r6, %[div], #16\n\t" -#else - "lsl r6, %[div], #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ + "uxth r6, %[div]\n\t" +#ifdef WOLFSSL_KEIL + "muls %[d1], r6, %[d1]\n\t" +#elif defined(__clang__) "muls %[d1], r6\n\t" #else "mul %[d1], r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, %[d1], #16\n\t" #else "lsr r6, %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls %[d1], %[d1], #16\n\t" #else "lsl %[d1], %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, %[d1]\n\t" #else "add r4, r4, %[d1]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r6\n\t" +#elif defined(__clang__) "adcs r5, r6\n\t" #else "adc r5, r6\n\t" #endif "# r * div - Done\n\t" "mov %[d1], r8\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[d1], %[d1], r4\n\t" #else "sub %[d1], %[d1], r4\n\t" #endif "movs r4, %[d1]\n\t" "mov %[d1], r9\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs %[d1], %[d1], r5\n\t" +#elif defined(__clang__) "sbcs %[d1], r5\n\t" #else "sbc %[d1], r5\n\t" #endif "movs r5, %[d1]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r5\n\t" #else "add r3, r3, r5\n\t" #endif "# r * div - Start\n\t" -#ifdef __clang__ - "lsls %[d1], r3, #16\n\t" -#else - "lsl %[d1], r3, #16\n\t" -#endif -#ifdef __clang__ - "lsls r4, %[div], #16\n\t" -#else - "lsl r4, %[div], #16\n\t" -#endif -#ifdef __clang__ - "lsrs %[d1], %[d1], #16\n\t" -#else - "lsr %[d1], %[d1], #16\n\t" -#endif -#ifdef __clang__ - "lsrs r4, r4, #16\n\t" -#else - "lsr r4, r4, #16\n\t" -#endif -#ifdef __clang__ + "uxth %[d1], r3\n\t" + "uxth r4, %[div]\n\t" +#ifdef WOLFSSL_KEIL + "muls r4, %[d1], r4\n\t" +#elif defined(__clang__) "muls r4, %[d1]\n\t" #else "mul r4, %[d1]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, %[div], #16\n\t" #else "lsr r6, %[div], #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls %[d1], r6, %[d1]\n\t" +#elif defined(__clang__) "muls %[d1], r6\n\t" #else "mul %[d1], r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, %[d1], #16\n\t" #else "lsr r5, %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls %[d1], %[d1], #16\n\t" #else "lsl %[d1], %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, %[d1]\n\t" #else "add r4, r4, %[d1]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs %[d1], r3, #16\n\t" #else "lsr %[d1], r3, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r6, %[d1], r6\n\t" +#elif defined(__clang__) "muls r6, %[d1]\n\t" #else "mul r6, %[d1]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r5, r5, r6\n\t" #else "add r5, r5, r6\n\t" #endif -#ifdef __clang__ - "lsls r6, %[div], #16\n\t" -#else - "lsl r6, %[div], #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ + "uxth r6, %[div]\n\t" +#ifdef WOLFSSL_KEIL + "muls %[d1], r6, %[d1]\n\t" +#elif defined(__clang__) "muls %[d1], r6\n\t" #else "mul %[d1], r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, %[d1], #16\n\t" #else "lsr r6, %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls %[d1], %[d1], #16\n\t" #else "lsl %[d1], %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, %[d1]\n\t" #else "add r4, r4, %[d1]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r6\n\t" +#elif defined(__clang__) "adcs r5, r6\n\t" #else "adc r5, r6\n\t" @@ -20791,124 +78611,115 @@ SP_NOINLINE static sp_digit div_3072_word_96(sp_digit d1, sp_digit d0, "# r * div - Done\n\t" "mov %[d1], r8\n\t" "mov r6, r9\n\t" +#ifdef WOLFSSL_KEIL + "subs r4, %[d1], r4\n\t" +#else #ifdef __clang__ "subs r4, %[d1], r4\n\t" #else "sub r4, %[d1], r4\n\t" #endif -#ifdef __clang__ +#endif +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r5\n\t" +#elif defined(__clang__) "sbcs r6, r5\n\t" #else "sbc r6, r5\n\t" #endif "movs r5, r6\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r5\n\t" #else "add r3, r3, r5\n\t" #endif "# r * div - Start\n\t" -#ifdef __clang__ - "lsls %[d1], r3, #16\n\t" -#else - "lsl %[d1], r3, #16\n\t" -#endif -#ifdef __clang__ - "lsls r4, %[div], #16\n\t" -#else - "lsl r4, %[div], #16\n\t" -#endif -#ifdef __clang__ - "lsrs %[d1], %[d1], #16\n\t" -#else - "lsr %[d1], %[d1], #16\n\t" -#endif -#ifdef __clang__ - "lsrs r4, r4, #16\n\t" -#else - "lsr r4, r4, #16\n\t" -#endif -#ifdef __clang__ + "uxth %[d1], r3\n\t" + "uxth r4, %[div]\n\t" +#ifdef WOLFSSL_KEIL + "muls r4, %[d1], r4\n\t" +#elif defined(__clang__) "muls r4, %[d1]\n\t" #else "mul r4, %[d1]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, %[div], #16\n\t" #else "lsr r6, %[div], #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls %[d1], r6, %[d1]\n\t" +#elif defined(__clang__) "muls %[d1], r6\n\t" #else "mul %[d1], r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, %[d1], #16\n\t" #else "lsr r5, %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls %[d1], %[d1], #16\n\t" #else "lsl %[d1], %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, %[d1]\n\t" #else "add r4, r4, %[d1]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs %[d1], r3, #16\n\t" #else "lsr %[d1], r3, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r6, %[d1], r6\n\t" +#elif defined(__clang__) "muls r6, %[d1]\n\t" #else "mul r6, %[d1]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r5, r5, r6\n\t" #else "add r5, r5, r6\n\t" #endif -#ifdef __clang__ - "lsls r6, %[div], #16\n\t" -#else - "lsl r6, %[div], #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ + "uxth r6, %[div]\n\t" +#ifdef WOLFSSL_KEIL + "muls %[d1], r6, %[d1]\n\t" +#elif defined(__clang__) "muls %[d1], r6\n\t" #else "mul %[d1], r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, %[d1], #16\n\t" #else "lsr r6, %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls %[d1], %[d1], #16\n\t" #else "lsl %[d1], %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, %[d1]\n\t" #else "add r4, r4, %[d1]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r6\n\t" +#elif defined(__clang__) "adcs r5, r6\n\t" #else "adc r5, r6\n\t" @@ -20916,34 +78727,42 @@ SP_NOINLINE static sp_digit div_3072_word_96(sp_digit d1, sp_digit d0, "# r * div - Done\n\t" "mov %[d1], r8\n\t" "mov r6, r9\n\t" +#ifdef WOLFSSL_KEIL + "subs r4, %[d1], r4\n\t" +#else #ifdef __clang__ "subs r4, %[d1], r4\n\t" #else "sub r4, %[d1], r4\n\t" #endif -#ifdef __clang__ +#endif +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r5\n\t" +#elif defined(__clang__) "sbcs r6, r5\n\t" #else "sbc r6, r5\n\t" #endif "movs r5, r6\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r5\n\t" #else "add r3, r3, r5\n\t" #endif "movs r6, %[div]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r6, r6, r4\n\t" #else "sub r6, r6, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r6\n\t" +#elif defined(__clang__) "sbcs r6, r6\n\t" #else "sbc r6, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r3, r3, r6\n\t" #else "sub r3, r3, r6\n\t" @@ -21059,83 +78878,95 @@ SP_NOINLINE static sp_int32 sp_3072_cmp_96(const sp_digit* a, const sp_digit* b) __asm__ __volatile__ ( "movs r2, #0\n\t" "movs r3, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "mvns r3, r3\n\t" #else "mvn r3, r3\n\t" #endif "movs r6, #0xff\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r6, r6, #0x7d\n\t" #else "add r6, r6, #0x7d\n\t" #endif "\n" - "L_sp_3072_cmp_96_words_%=: \n\t" + "L_sp_3072_cmp_96_words_%=:\n\t" "ldr r7, [%[a], r6]\n\t" "ldr r5, [%[b], r6]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, r3\n\t" +#elif defined(__clang__) "ands r7, r3\n\t" #else "and r7, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r3\n\t" +#elif defined(__clang__) "ands r5, r3\n\t" #else "and r5, r3\n\t" #endif "movs r4, r7\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r7, r7, r5\n\t" #else "sub r7, r7, r5\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r7, r7, r7\n\t" +#elif defined(__clang__) "sbcs r7, r7\n\t" #else "sbc r7, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r7\n\t" #else "add r2, r2, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "mvns r7, r7\n\t" #else "mvn r7, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r3, r3, r7\n\t" +#elif defined(__clang__) "ands r3, r7\n\t" #else "and r3, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r5, r5, r4\n\t" #else "sub r5, r5, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r7, r7, r7\n\t" +#elif defined(__clang__) "sbcs r7, r7\n\t" #else "sbc r7, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r2, r2, r7\n\t" #else "sub r2, r2, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "mvns r7, r7\n\t" #else "mvn r7, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r3, r3, r7\n\t" +#elif defined(__clang__) "ands r3, r7\n\t" #else "and r3, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r6, r6, #4\n\t" #else "sub r6, r6, #4\n\t" @@ -21626,38 +79457,44 @@ SP_NOINLINE static sp_digit sp_3072_cond_add_48(sp_digit* r, const sp_digit* a, "mov r8, r5\n\t" "movs r7, #0\n\t" "\n" - "L_sp_3072_cond_add_48_words_%=: \n\t" + "L_sp_3072_cond_add_48_words_%=:\n\t" "ldr r6, [%[b], r7]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, %[m]\n\t" +#elif defined(__clang__) "ands r6, %[m]\n\t" #else "and r6, %[m]\n\t" #endif "movs r5, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r5, r5, #1\n\t" #else "sub r5, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r5, r5, r4\n\t" #else "add r5, r5, r4\n\t" #endif "ldr r5, [%[a], r7]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r6\n\t" +#elif defined(__clang__) "adcs r5, r6\n\t" #else "adc r5, r6\n\t" #endif "movs r4, #0\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r4\n\t" +#elif defined(__clang__) "adcs r4, r4\n\t" #else "adc r4, r4\n\t" #endif "str r5, [%[r], r7]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r7, r7, #4\n\t" #else "add r7, r7, #4\n\t" @@ -21990,2183 +79827,2373 @@ static void sp_3072_lshift_96(sp_digit* r, const sp_digit* a, byte n) { __asm__ __volatile__ ( "movs r7, #31\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r7, r7, %[n]\n\t" #else "sub r7, r7, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[a], %[a], #0xff\n\t" #else "add %[a], %[a], #0xff\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[r], %[r], #0xff\n\t" #else "add %[r], %[r], #0xff\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[a], %[a], #0x41\n\t" #else "add %[a], %[a], #0x41\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[r], %[r], #0x41\n\t" #else "add %[r], %[r], #0x41\n\t" #endif "ldr r4, [%[a], #60]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r4, #1\n\t" #else "lsr r5, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r5, r7\n\t" #else "lsr r5, r5, r7\n\t" #endif "ldr r3, [%[a], #56]\n\t" "str r5, [%[r], #64]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #52]\n\t" "str r4, [%[r], #60]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #48]\n\t" "str r3, [%[r], #56]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #44]\n\t" "str r5, [%[r], #52]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #40]\n\t" "str r4, [%[r], #48]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #36]\n\t" "str r3, [%[r], #44]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #32]\n\t" "str r5, [%[r], #40]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #28]\n\t" "str r4, [%[r], #36]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #24]\n\t" "str r3, [%[r], #32]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #20]\n\t" "str r5, [%[r], #28]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #16]\n\t" "str r4, [%[r], #24]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #12]\n\t" "str r3, [%[r], #20]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #8]\n\t" "str r5, [%[r], #16]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #4]\n\t" "str r4, [%[r], #12]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a]]\n\t" "str r3, [%[r], #8]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[a], %[a], #0x40\n\t" #else "sub %[a], %[a], #0x40\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[r], %[r], #0x40\n\t" #else "sub %[r], %[r], #0x40\n\t" #endif "ldr r3, [%[a], #60]\n\t" "str r5, [%[r], #68]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #56]\n\t" "str r4, [%[r], #64]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #52]\n\t" "str r3, [%[r], #60]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #48]\n\t" "str r5, [%[r], #56]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #44]\n\t" "str r4, [%[r], #52]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #40]\n\t" "str r3, [%[r], #48]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #36]\n\t" "str r5, [%[r], #44]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #32]\n\t" "str r4, [%[r], #40]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #28]\n\t" "str r3, [%[r], #36]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #24]\n\t" "str r5, [%[r], #32]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #20]\n\t" "str r4, [%[r], #28]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #16]\n\t" "str r3, [%[r], #24]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #12]\n\t" "str r5, [%[r], #20]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #8]\n\t" "str r4, [%[r], #16]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #4]\n\t" "str r3, [%[r], #12]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a]]\n\t" "str r5, [%[r], #8]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[a], %[a], #0x40\n\t" #else "sub %[a], %[a], #0x40\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[r], %[r], #0x40\n\t" #else "sub %[r], %[r], #0x40\n\t" #endif "ldr r5, [%[a], #60]\n\t" "str r4, [%[r], #68]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #56]\n\t" "str r3, [%[r], #64]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #52]\n\t" "str r5, [%[r], #60]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #48]\n\t" "str r4, [%[r], #56]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #44]\n\t" "str r3, [%[r], #52]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #40]\n\t" "str r5, [%[r], #48]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #36]\n\t" "str r4, [%[r], #44]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #32]\n\t" "str r3, [%[r], #40]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #28]\n\t" "str r5, [%[r], #36]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #24]\n\t" "str r4, [%[r], #32]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #20]\n\t" "str r3, [%[r], #28]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #16]\n\t" "str r5, [%[r], #24]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #12]\n\t" "str r4, [%[r], #20]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #8]\n\t" "str r3, [%[r], #16]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #4]\n\t" "str r5, [%[r], #12]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a]]\n\t" "str r4, [%[r], #8]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[a], %[a], #0x40\n\t" #else "sub %[a], %[a], #0x40\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[r], %[r], #0x40\n\t" #else "sub %[r], %[r], #0x40\n\t" #endif "ldr r4, [%[a], #60]\n\t" "str r3, [%[r], #68]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #56]\n\t" "str r5, [%[r], #64]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #52]\n\t" "str r4, [%[r], #60]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #48]\n\t" "str r3, [%[r], #56]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #44]\n\t" "str r5, [%[r], #52]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #40]\n\t" "str r4, [%[r], #48]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #36]\n\t" "str r3, [%[r], #44]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #32]\n\t" "str r5, [%[r], #40]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #28]\n\t" "str r4, [%[r], #36]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #24]\n\t" "str r3, [%[r], #32]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #20]\n\t" "str r5, [%[r], #28]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #16]\n\t" "str r4, [%[r], #24]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #12]\n\t" "str r3, [%[r], #20]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #8]\n\t" "str r5, [%[r], #16]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #4]\n\t" "str r4, [%[r], #12]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a]]\n\t" "str r3, [%[r], #8]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[a], %[a], #0x40\n\t" #else "sub %[a], %[a], #0x40\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[r], %[r], #0x40\n\t" #else "sub %[r], %[r], #0x40\n\t" #endif "ldr r3, [%[a], #60]\n\t" "str r5, [%[r], #68]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #56]\n\t" "str r4, [%[r], #64]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #52]\n\t" "str r3, [%[r], #60]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #48]\n\t" "str r5, [%[r], #56]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #44]\n\t" "str r4, [%[r], #52]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #40]\n\t" "str r3, [%[r], #48]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #36]\n\t" "str r5, [%[r], #44]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #32]\n\t" "str r4, [%[r], #40]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #28]\n\t" "str r3, [%[r], #36]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #24]\n\t" "str r5, [%[r], #32]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #20]\n\t" "str r4, [%[r], #28]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #16]\n\t" "str r3, [%[r], #24]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #12]\n\t" "str r5, [%[r], #20]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #8]\n\t" "str r4, [%[r], #16]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #4]\n\t" "str r3, [%[r], #12]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a]]\n\t" "str r5, [%[r], #8]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[a], %[a], #0x40\n\t" #else "sub %[a], %[a], #0x40\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[r], %[r], #0x40\n\t" #else "sub %[r], %[r], #0x40\n\t" #endif "ldr r5, [%[a], #60]\n\t" "str r4, [%[r], #68]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #56]\n\t" "str r3, [%[r], #64]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #52]\n\t" "str r5, [%[r], #60]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #48]\n\t" "str r4, [%[r], #56]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #44]\n\t" "str r3, [%[r], #52]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #40]\n\t" "str r5, [%[r], #48]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #36]\n\t" "str r4, [%[r], #44]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #32]\n\t" "str r3, [%[r], #40]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #28]\n\t" "str r5, [%[r], #36]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #24]\n\t" "str r4, [%[r], #32]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #20]\n\t" "str r3, [%[r], #28]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #16]\n\t" "str r5, [%[r], #24]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #12]\n\t" "str r4, [%[r], #20]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #8]\n\t" "str r3, [%[r], #16]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #4]\n\t" "str r5, [%[r], #12]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a]]\n\t" "str r4, [%[r], #8]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" @@ -24592,6 +82619,542 @@ static void sp_4096_to_bin_128(sp_digit* r, byte* a) #define sp_4096_norm_128(a) #ifndef WOLFSSL_SP_SMALL +/* Add b to a into r. (r = a + b) + * + * r A single precision integer. + * a A single precision integer. + * b A single precision integer. + */ +SP_NOINLINE static sp_digit sp_4096_add_to_word_64(sp_digit* r, sp_digit a, + const sp_digit* b) +{ + __asm__ __volatile__ ( + "movs r5, #0\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, %[a]\n\t" +#else + "add r3, r3, %[a]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) + "adcs r4, r5\n\t" +#else + "adc r4, r5\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "movs %[r], #0\n\t" +#ifdef WOLFSSL_KEIL + "adcs %[r], %[r], %[r]\n\t" +#elif defined(__clang__) + "adcs %[r], %[r]\n\t" +#else + "adc %[r], %[r]\n\t" +#endif + : [r] "+r" (r), [a] "+r" (a), [b] "+r" (b) + : + : "memory", "r3", "r4", "r5" + ); + return (uint32_t)(size_t)r; +} + /* Sub b from a into a. (a -= b) * * a A single precision integer. @@ -24601,1103 +83164,1166 @@ SP_NOINLINE static sp_digit sp_4096_sub_in_place_128(sp_digit* a, const sp_digit* b) { __asm__ __volatile__ ( - "movs r2, #0\n\t" - "ldr r3, [%[a]]\n\t" - "ldr r4, [%[a], #4]\n\t" - "ldr r5, [%[b]]\n\t" - "ldr r6, [%[b], #4]\n\t" -#ifdef __clang__ - "subs r3, r3, r5\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "subs r2, r2, r4\n\t" #else - "sub r3, r3, r5\n\t" + "sub r2, r2, r4\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" -#else - "sbc r4, r6\n\t" -#endif - "str r3, [%[a]]\n\t" - "str r4, [%[a], #4]\n\t" - "ldr r3, [%[a], #8]\n\t" - "ldr r4, [%[a], #12]\n\t" - "ldr r5, [%[b], #8]\n\t" - "ldr r6, [%[b], #12]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #8]\n\t" - "str r4, [%[a], #12]\n\t" - "ldr r3, [%[a], #16]\n\t" - "ldr r4, [%[a], #20]\n\t" - "ldr r5, [%[b], #16]\n\t" - "ldr r6, [%[b], #20]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #16]\n\t" - "str r4, [%[a], #20]\n\t" - "ldr r3, [%[a], #24]\n\t" - "ldr r4, [%[a], #28]\n\t" - "ldr r5, [%[b], #24]\n\t" - "ldr r6, [%[b], #28]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #24]\n\t" - "str r4, [%[a], #28]\n\t" - "ldr r3, [%[a], #32]\n\t" - "ldr r4, [%[a], #36]\n\t" - "ldr r5, [%[b], #32]\n\t" - "ldr r6, [%[b], #36]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #32]\n\t" - "str r4, [%[a], #36]\n\t" - "ldr r3, [%[a], #40]\n\t" - "ldr r4, [%[a], #44]\n\t" - "ldr r5, [%[b], #40]\n\t" - "ldr r6, [%[b], #44]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #40]\n\t" - "str r4, [%[a], #44]\n\t" - "ldr r3, [%[a], #48]\n\t" - "ldr r4, [%[a], #52]\n\t" - "ldr r5, [%[b], #48]\n\t" - "ldr r6, [%[b], #52]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #48]\n\t" - "str r4, [%[a], #52]\n\t" - "ldr r3, [%[a], #56]\n\t" - "ldr r4, [%[a], #60]\n\t" - "ldr r5, [%[b], #56]\n\t" - "ldr r6, [%[b], #60]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #56]\n\t" - "str r4, [%[a], #60]\n\t" - "ldr r3, [%[a], #64]\n\t" - "ldr r4, [%[a], #68]\n\t" - "ldr r5, [%[b], #64]\n\t" - "ldr r6, [%[b], #68]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #64]\n\t" - "str r4, [%[a], #68]\n\t" - "ldr r3, [%[a], #72]\n\t" - "ldr r4, [%[a], #76]\n\t" - "ldr r5, [%[b], #72]\n\t" - "ldr r6, [%[b], #76]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #72]\n\t" - "str r4, [%[a], #76]\n\t" - "ldr r3, [%[a], #80]\n\t" - "ldr r4, [%[a], #84]\n\t" - "ldr r5, [%[b], #80]\n\t" - "ldr r6, [%[b], #84]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #80]\n\t" - "str r4, [%[a], #84]\n\t" - "ldr r3, [%[a], #88]\n\t" - "ldr r4, [%[a], #92]\n\t" - "ldr r5, [%[b], #88]\n\t" - "ldr r6, [%[b], #92]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #88]\n\t" - "str r4, [%[a], #92]\n\t" - "ldr r3, [%[a], #96]\n\t" - "ldr r4, [%[a], #100]\n\t" - "ldr r5, [%[b], #96]\n\t" - "ldr r6, [%[b], #100]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #96]\n\t" - "str r4, [%[a], #100]\n\t" - "ldr r3, [%[a], #104]\n\t" - "ldr r4, [%[a], #108]\n\t" - "ldr r5, [%[b], #104]\n\t" - "ldr r6, [%[b], #108]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #104]\n\t" - "str r4, [%[a], #108]\n\t" - "ldr r3, [%[a], #112]\n\t" - "ldr r4, [%[a], #116]\n\t" - "ldr r5, [%[b], #112]\n\t" - "ldr r6, [%[b], #116]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #112]\n\t" - "str r4, [%[a], #116]\n\t" - "ldr r3, [%[a], #120]\n\t" - "ldr r4, [%[a], #124]\n\t" - "ldr r5, [%[b], #120]\n\t" - "ldr r6, [%[b], #124]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #120]\n\t" - "str r4, [%[a], #124]\n\t" -#ifdef __clang__ - "sbcs r2, r2\n\t" -#else - "sbc r2, r2\n\t" -#endif -#ifdef __clang__ - "adds %[a], %[a], #0x80\n\t" -#else - "add %[a], %[a], #0x80\n\t" -#endif -#ifdef __clang__ - "adds %[b], %[b], #0x80\n\t" -#else - "add %[b], %[b], #0x80\n\t" -#endif - "movs r5, #0\n\t" -#ifdef __clang__ - "subs r5, r5, r2\n\t" -#else - "sub r5, r5, r2\n\t" -#endif - "ldr r3, [%[a]]\n\t" - "ldr r4, [%[a], #4]\n\t" - "ldr r5, [%[b]]\n\t" - "ldr r6, [%[b], #4]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a]]\n\t" - "str r4, [%[a], #4]\n\t" - "ldr r3, [%[a], #8]\n\t" - "ldr r4, [%[a], #12]\n\t" - "ldr r5, [%[b], #8]\n\t" - "ldr r6, [%[b], #12]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #8]\n\t" - "str r4, [%[a], #12]\n\t" - "ldr r3, [%[a], #16]\n\t" - "ldr r4, [%[a], #20]\n\t" - "ldr r5, [%[b], #16]\n\t" - "ldr r6, [%[b], #20]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #16]\n\t" - "str r4, [%[a], #20]\n\t" - "ldr r3, [%[a], #24]\n\t" - "ldr r4, [%[a], #28]\n\t" - "ldr r5, [%[b], #24]\n\t" - "ldr r6, [%[b], #28]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #24]\n\t" - "str r4, [%[a], #28]\n\t" - "ldr r3, [%[a], #32]\n\t" - "ldr r4, [%[a], #36]\n\t" - "ldr r5, [%[b], #32]\n\t" - "ldr r6, [%[b], #36]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #32]\n\t" - "str r4, [%[a], #36]\n\t" - "ldr r3, [%[a], #40]\n\t" - "ldr r4, [%[a], #44]\n\t" - "ldr r5, [%[b], #40]\n\t" - "ldr r6, [%[b], #44]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #40]\n\t" - "str r4, [%[a], #44]\n\t" - "ldr r3, [%[a], #48]\n\t" - "ldr r4, [%[a], #52]\n\t" - "ldr r5, [%[b], #48]\n\t" - "ldr r6, [%[b], #52]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #48]\n\t" - "str r4, [%[a], #52]\n\t" - "ldr r3, [%[a], #56]\n\t" - "ldr r4, [%[a], #60]\n\t" - "ldr r5, [%[b], #56]\n\t" - "ldr r6, [%[b], #60]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #56]\n\t" - "str r4, [%[a], #60]\n\t" - "ldr r3, [%[a], #64]\n\t" - "ldr r4, [%[a], #68]\n\t" - "ldr r5, [%[b], #64]\n\t" - "ldr r6, [%[b], #68]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #64]\n\t" - "str r4, [%[a], #68]\n\t" - "ldr r3, [%[a], #72]\n\t" - "ldr r4, [%[a], #76]\n\t" - "ldr r5, [%[b], #72]\n\t" - "ldr r6, [%[b], #76]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #72]\n\t" - "str r4, [%[a], #76]\n\t" - "ldr r3, [%[a], #80]\n\t" - "ldr r4, [%[a], #84]\n\t" - "ldr r5, [%[b], #80]\n\t" - "ldr r6, [%[b], #84]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #80]\n\t" - "str r4, [%[a], #84]\n\t" - "ldr r3, [%[a], #88]\n\t" - "ldr r4, [%[a], #92]\n\t" - "ldr r5, [%[b], #88]\n\t" - "ldr r6, [%[b], #92]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #88]\n\t" - "str r4, [%[a], #92]\n\t" - "ldr r3, [%[a], #96]\n\t" - "ldr r4, [%[a], #100]\n\t" - "ldr r5, [%[b], #96]\n\t" - "ldr r6, [%[b], #100]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #96]\n\t" - "str r4, [%[a], #100]\n\t" - "ldr r3, [%[a], #104]\n\t" - "ldr r4, [%[a], #108]\n\t" - "ldr r5, [%[b], #104]\n\t" - "ldr r6, [%[b], #108]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #104]\n\t" - "str r4, [%[a], #108]\n\t" - "ldr r3, [%[a], #112]\n\t" - "ldr r4, [%[a], #116]\n\t" - "ldr r5, [%[b], #112]\n\t" - "ldr r6, [%[b], #116]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #112]\n\t" - "str r4, [%[a], #116]\n\t" - "ldr r3, [%[a], #120]\n\t" - "ldr r4, [%[a], #124]\n\t" - "ldr r5, [%[b], #120]\n\t" - "ldr r6, [%[b], #124]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #120]\n\t" - "str r4, [%[a], #124]\n\t" -#ifdef __clang__ - "sbcs r2, r2\n\t" -#else - "sbc r2, r2\n\t" -#endif -#ifdef __clang__ - "adds %[a], %[a], #0x80\n\t" -#else - "add %[a], %[a], #0x80\n\t" -#endif -#ifdef __clang__ - "adds %[b], %[b], #0x80\n\t" -#else - "add %[b], %[b], #0x80\n\t" -#endif - "movs r5, #0\n\t" -#ifdef __clang__ - "subs r5, r5, r2\n\t" -#else - "sub r5, r5, r2\n\t" -#endif - "ldr r3, [%[a]]\n\t" - "ldr r4, [%[a], #4]\n\t" - "ldr r5, [%[b]]\n\t" - "ldr r6, [%[b], #4]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a]]\n\t" - "str r4, [%[a], #4]\n\t" - "ldr r3, [%[a], #8]\n\t" - "ldr r4, [%[a], #12]\n\t" - "ldr r5, [%[b], #8]\n\t" - "ldr r6, [%[b], #12]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #8]\n\t" - "str r4, [%[a], #12]\n\t" - "ldr r3, [%[a], #16]\n\t" - "ldr r4, [%[a], #20]\n\t" - "ldr r5, [%[b], #16]\n\t" - "ldr r6, [%[b], #20]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #16]\n\t" - "str r4, [%[a], #20]\n\t" - "ldr r3, [%[a], #24]\n\t" - "ldr r4, [%[a], #28]\n\t" - "ldr r5, [%[b], #24]\n\t" - "ldr r6, [%[b], #28]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #24]\n\t" - "str r4, [%[a], #28]\n\t" - "ldr r3, [%[a], #32]\n\t" - "ldr r4, [%[a], #36]\n\t" - "ldr r5, [%[b], #32]\n\t" - "ldr r6, [%[b], #36]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #32]\n\t" - "str r4, [%[a], #36]\n\t" - "ldr r3, [%[a], #40]\n\t" - "ldr r4, [%[a], #44]\n\t" - "ldr r5, [%[b], #40]\n\t" - "ldr r6, [%[b], #44]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #40]\n\t" - "str r4, [%[a], #44]\n\t" - "ldr r3, [%[a], #48]\n\t" - "ldr r4, [%[a], #52]\n\t" - "ldr r5, [%[b], #48]\n\t" - "ldr r6, [%[b], #52]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #48]\n\t" - "str r4, [%[a], #52]\n\t" - "ldr r3, [%[a], #56]\n\t" - "ldr r4, [%[a], #60]\n\t" - "ldr r5, [%[b], #56]\n\t" - "ldr r6, [%[b], #60]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #56]\n\t" - "str r4, [%[a], #60]\n\t" - "ldr r3, [%[a], #64]\n\t" - "ldr r4, [%[a], #68]\n\t" - "ldr r5, [%[b], #64]\n\t" - "ldr r6, [%[b], #68]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #64]\n\t" - "str r4, [%[a], #68]\n\t" - "ldr r3, [%[a], #72]\n\t" - "ldr r4, [%[a], #76]\n\t" - "ldr r5, [%[b], #72]\n\t" - "ldr r6, [%[b], #76]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #72]\n\t" - "str r4, [%[a], #76]\n\t" - "ldr r3, [%[a], #80]\n\t" - "ldr r4, [%[a], #84]\n\t" - "ldr r5, [%[b], #80]\n\t" - "ldr r6, [%[b], #84]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #80]\n\t" - "str r4, [%[a], #84]\n\t" - "ldr r3, [%[a], #88]\n\t" - "ldr r4, [%[a], #92]\n\t" - "ldr r5, [%[b], #88]\n\t" - "ldr r6, [%[b], #92]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #88]\n\t" - "str r4, [%[a], #92]\n\t" - "ldr r3, [%[a], #96]\n\t" - "ldr r4, [%[a], #100]\n\t" - "ldr r5, [%[b], #96]\n\t" - "ldr r6, [%[b], #100]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #96]\n\t" - "str r4, [%[a], #100]\n\t" - "ldr r3, [%[a], #104]\n\t" - "ldr r4, [%[a], #108]\n\t" - "ldr r5, [%[b], #104]\n\t" - "ldr r6, [%[b], #108]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #104]\n\t" - "str r4, [%[a], #108]\n\t" - "ldr r3, [%[a], #112]\n\t" - "ldr r4, [%[a], #116]\n\t" - "ldr r5, [%[b], #112]\n\t" - "ldr r6, [%[b], #116]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #112]\n\t" - "str r4, [%[a], #116]\n\t" - "ldr r3, [%[a], #120]\n\t" - "ldr r4, [%[a], #124]\n\t" - "ldr r5, [%[b], #120]\n\t" - "ldr r6, [%[b], #124]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #120]\n\t" - "str r4, [%[a], #124]\n\t" -#ifdef __clang__ - "sbcs r2, r2\n\t" -#else - "sbc r2, r2\n\t" -#endif -#ifdef __clang__ - "adds %[a], %[a], #0x80\n\t" -#else - "add %[a], %[a], #0x80\n\t" -#endif -#ifdef __clang__ - "adds %[b], %[b], #0x80\n\t" -#else - "add %[b], %[b], #0x80\n\t" -#endif - "movs r5, #0\n\t" -#ifdef __clang__ - "subs r5, r5, r2\n\t" -#else - "sub r5, r5, r2\n\t" -#endif - "ldr r3, [%[a]]\n\t" - "ldr r4, [%[a], #4]\n\t" - "ldr r5, [%[b]]\n\t" - "ldr r6, [%[b], #4]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a]]\n\t" - "str r4, [%[a], #4]\n\t" - "ldr r3, [%[a], #8]\n\t" - "ldr r4, [%[a], #12]\n\t" - "ldr r5, [%[b], #8]\n\t" - "ldr r6, [%[b], #12]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #8]\n\t" - "str r4, [%[a], #12]\n\t" - "ldr r3, [%[a], #16]\n\t" - "ldr r4, [%[a], #20]\n\t" - "ldr r5, [%[b], #16]\n\t" - "ldr r6, [%[b], #20]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #16]\n\t" - "str r4, [%[a], #20]\n\t" - "ldr r3, [%[a], #24]\n\t" - "ldr r4, [%[a], #28]\n\t" - "ldr r5, [%[b], #24]\n\t" - "ldr r6, [%[b], #28]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #24]\n\t" - "str r4, [%[a], #28]\n\t" - "ldr r3, [%[a], #32]\n\t" - "ldr r4, [%[a], #36]\n\t" - "ldr r5, [%[b], #32]\n\t" - "ldr r6, [%[b], #36]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #32]\n\t" - "str r4, [%[a], #36]\n\t" - "ldr r3, [%[a], #40]\n\t" - "ldr r4, [%[a], #44]\n\t" - "ldr r5, [%[b], #40]\n\t" - "ldr r6, [%[b], #44]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #40]\n\t" - "str r4, [%[a], #44]\n\t" - "ldr r3, [%[a], #48]\n\t" - "ldr r4, [%[a], #52]\n\t" - "ldr r5, [%[b], #48]\n\t" - "ldr r6, [%[b], #52]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #48]\n\t" - "str r4, [%[a], #52]\n\t" - "ldr r3, [%[a], #56]\n\t" - "ldr r4, [%[a], #60]\n\t" - "ldr r5, [%[b], #56]\n\t" - "ldr r6, [%[b], #60]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #56]\n\t" - "str r4, [%[a], #60]\n\t" - "ldr r3, [%[a], #64]\n\t" - "ldr r4, [%[a], #68]\n\t" - "ldr r5, [%[b], #64]\n\t" - "ldr r6, [%[b], #68]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #64]\n\t" - "str r4, [%[a], #68]\n\t" - "ldr r3, [%[a], #72]\n\t" - "ldr r4, [%[a], #76]\n\t" - "ldr r5, [%[b], #72]\n\t" - "ldr r6, [%[b], #76]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #72]\n\t" - "str r4, [%[a], #76]\n\t" - "ldr r3, [%[a], #80]\n\t" - "ldr r4, [%[a], #84]\n\t" - "ldr r5, [%[b], #80]\n\t" - "ldr r6, [%[b], #84]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #80]\n\t" - "str r4, [%[a], #84]\n\t" - "ldr r3, [%[a], #88]\n\t" - "ldr r4, [%[a], #92]\n\t" - "ldr r5, [%[b], #88]\n\t" - "ldr r6, [%[b], #92]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #88]\n\t" - "str r4, [%[a], #92]\n\t" - "ldr r3, [%[a], #96]\n\t" - "ldr r4, [%[a], #100]\n\t" - "ldr r5, [%[b], #96]\n\t" - "ldr r6, [%[b], #100]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #96]\n\t" - "str r4, [%[a], #100]\n\t" - "ldr r3, [%[a], #104]\n\t" - "ldr r4, [%[a], #108]\n\t" - "ldr r5, [%[b], #104]\n\t" - "ldr r6, [%[b], #108]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #104]\n\t" - "str r4, [%[a], #108]\n\t" - "ldr r3, [%[a], #112]\n\t" - "ldr r4, [%[a], #116]\n\t" - "ldr r5, [%[b], #112]\n\t" - "ldr r6, [%[b], #116]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #112]\n\t" - "str r4, [%[a], #116]\n\t" - "ldr r3, [%[a], #120]\n\t" - "ldr r4, [%[a], #124]\n\t" - "ldr r5, [%[b], #120]\n\t" - "ldr r6, [%[b], #124]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #120]\n\t" - "str r4, [%[a], #124]\n\t" -#ifdef __clang__ - "sbcs r2, r2\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r2, r2\n\t" + "sbc r3, r5\n\t" +#endif + "stm %[a]!, {r2, r3}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs %[a], %[a], %[a]\n\t" +#elif defined(__clang__) + "sbcs %[a], %[a]\n\t" +#else + "sbc %[a], %[a]\n\t" #endif - "movs %[a], r2\n\t" : [a] "+r" (a), [b] "+r" (b) : - : "memory", "r2", "r3", "r4", "r5", "r6" + : "memory", "r2", "r3", "r4", "r5" ); return (uint32_t)(size_t)a; } @@ -25712,1121 +84338,1100 @@ SP_NOINLINE static sp_digit sp_4096_add_128(sp_digit* r, const sp_digit* a, const sp_digit* b) { __asm__ __volatile__ ( - "movs r6, #0\n\t" -#ifdef __clang__ - "mvns r6, r6\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" +#else + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "mvn r6, r6\n\t" -#endif - "ldr r4, [%[a]]\n\t" - "ldr r5, [%[b]]\n\t" -#ifdef __clang__ - "adds r4, r4, r5\n\t" -#else - "add r4, r4, r5\n\t" -#endif - "str r4, [%[r]]\n\t" - "ldr r4, [%[a], #4]\n\t" - "ldr r5, [%[b], #4]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #4]\n\t" - "ldr r4, [%[a], #8]\n\t" - "ldr r5, [%[b], #8]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #8]\n\t" - "ldr r4, [%[a], #12]\n\t" - "ldr r5, [%[b], #12]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #12]\n\t" - "ldr r4, [%[a], #16]\n\t" - "ldr r5, [%[b], #16]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #16]\n\t" - "ldr r4, [%[a], #20]\n\t" - "ldr r5, [%[b], #20]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #20]\n\t" - "ldr r4, [%[a], #24]\n\t" - "ldr r5, [%[b], #24]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #24]\n\t" - "ldr r4, [%[a], #28]\n\t" - "ldr r5, [%[b], #28]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #28]\n\t" - "ldr r4, [%[a], #32]\n\t" - "ldr r5, [%[b], #32]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #32]\n\t" - "ldr r4, [%[a], #36]\n\t" - "ldr r5, [%[b], #36]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #36]\n\t" - "ldr r4, [%[a], #40]\n\t" - "ldr r5, [%[b], #40]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #40]\n\t" - "ldr r4, [%[a], #44]\n\t" - "ldr r5, [%[b], #44]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #44]\n\t" - "ldr r4, [%[a], #48]\n\t" - "ldr r5, [%[b], #48]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #48]\n\t" - "ldr r4, [%[a], #52]\n\t" - "ldr r5, [%[b], #52]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #52]\n\t" - "ldr r4, [%[a], #56]\n\t" - "ldr r5, [%[b], #56]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #56]\n\t" - "ldr r4, [%[a], #60]\n\t" - "ldr r5, [%[b], #60]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #60]\n\t" - "ldr r4, [%[a], #64]\n\t" - "ldr r5, [%[b], #64]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #64]\n\t" - "ldr r4, [%[a], #68]\n\t" - "ldr r5, [%[b], #68]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #68]\n\t" - "ldr r4, [%[a], #72]\n\t" - "ldr r5, [%[b], #72]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #72]\n\t" - "ldr r4, [%[a], #76]\n\t" - "ldr r5, [%[b], #76]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #76]\n\t" - "ldr r4, [%[a], #80]\n\t" - "ldr r5, [%[b], #80]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #80]\n\t" - "ldr r4, [%[a], #84]\n\t" - "ldr r5, [%[b], #84]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #84]\n\t" - "ldr r4, [%[a], #88]\n\t" - "ldr r5, [%[b], #88]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #88]\n\t" - "ldr r4, [%[a], #92]\n\t" - "ldr r5, [%[b], #92]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #92]\n\t" - "ldr r4, [%[a], #96]\n\t" - "ldr r5, [%[b], #96]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #96]\n\t" - "ldr r4, [%[a], #100]\n\t" - "ldr r5, [%[b], #100]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #100]\n\t" - "ldr r4, [%[a], #104]\n\t" - "ldr r5, [%[b], #104]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #104]\n\t" - "ldr r4, [%[a], #108]\n\t" - "ldr r5, [%[b], #108]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #108]\n\t" - "ldr r4, [%[a], #112]\n\t" - "ldr r5, [%[b], #112]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #112]\n\t" - "ldr r4, [%[a], #116]\n\t" - "ldr r5, [%[b], #116]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #116]\n\t" - "ldr r4, [%[a], #120]\n\t" - "ldr r5, [%[b], #120]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #120]\n\t" - "ldr r4, [%[a], #124]\n\t" - "ldr r5, [%[b], #124]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #124]\n\t" - "movs r3, #0\n\t" -#ifdef __clang__ - "adcs r3, r3\n\t" -#else - "adc r3, r3\n\t" -#endif -#ifdef __clang__ - "adds %[a], %[a], #0x80\n\t" -#else - "add %[a], %[a], #0x80\n\t" -#endif -#ifdef __clang__ - "adds %[b], %[b], #0x80\n\t" -#else - "add %[b], %[b], #0x80\n\t" -#endif -#ifdef __clang__ - "adds %[r], %[r], #0x80\n\t" -#else - "add %[r], %[r], #0x80\n\t" -#endif -#ifdef __clang__ - "adds r3, r3, r6\n\t" -#else - "add r3, r3, r6\n\t" -#endif - "ldr r4, [%[a]]\n\t" - "ldr r5, [%[b]]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r]]\n\t" - "ldr r4, [%[a], #4]\n\t" - "ldr r5, [%[b], #4]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #4]\n\t" - "ldr r4, [%[a], #8]\n\t" - "ldr r5, [%[b], #8]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #8]\n\t" - "ldr r4, [%[a], #12]\n\t" - "ldr r5, [%[b], #12]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #12]\n\t" - "ldr r4, [%[a], #16]\n\t" - "ldr r5, [%[b], #16]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #16]\n\t" - "ldr r4, [%[a], #20]\n\t" - "ldr r5, [%[b], #20]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #20]\n\t" - "ldr r4, [%[a], #24]\n\t" - "ldr r5, [%[b], #24]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #24]\n\t" - "ldr r4, [%[a], #28]\n\t" - "ldr r5, [%[b], #28]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #28]\n\t" - "ldr r4, [%[a], #32]\n\t" - "ldr r5, [%[b], #32]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #32]\n\t" - "ldr r4, [%[a], #36]\n\t" - "ldr r5, [%[b], #36]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #36]\n\t" - "ldr r4, [%[a], #40]\n\t" - "ldr r5, [%[b], #40]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #40]\n\t" - "ldr r4, [%[a], #44]\n\t" - "ldr r5, [%[b], #44]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #44]\n\t" - "ldr r4, [%[a], #48]\n\t" - "ldr r5, [%[b], #48]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #48]\n\t" - "ldr r4, [%[a], #52]\n\t" - "ldr r5, [%[b], #52]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #52]\n\t" - "ldr r4, [%[a], #56]\n\t" - "ldr r5, [%[b], #56]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #56]\n\t" - "ldr r4, [%[a], #60]\n\t" - "ldr r5, [%[b], #60]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #60]\n\t" - "ldr r4, [%[a], #64]\n\t" - "ldr r5, [%[b], #64]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #64]\n\t" - "ldr r4, [%[a], #68]\n\t" - "ldr r5, [%[b], #68]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #68]\n\t" - "ldr r4, [%[a], #72]\n\t" - "ldr r5, [%[b], #72]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #72]\n\t" - "ldr r4, [%[a], #76]\n\t" - "ldr r5, [%[b], #76]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #76]\n\t" - "ldr r4, [%[a], #80]\n\t" - "ldr r5, [%[b], #80]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #80]\n\t" - "ldr r4, [%[a], #84]\n\t" - "ldr r5, [%[b], #84]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #84]\n\t" - "ldr r4, [%[a], #88]\n\t" - "ldr r5, [%[b], #88]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #88]\n\t" - "ldr r4, [%[a], #92]\n\t" - "ldr r5, [%[b], #92]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #92]\n\t" - "ldr r4, [%[a], #96]\n\t" - "ldr r5, [%[b], #96]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #96]\n\t" - "ldr r4, [%[a], #100]\n\t" - "ldr r5, [%[b], #100]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #100]\n\t" - "ldr r4, [%[a], #104]\n\t" - "ldr r5, [%[b], #104]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #104]\n\t" - "ldr r4, [%[a], #108]\n\t" - "ldr r5, [%[b], #108]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #108]\n\t" - "ldr r4, [%[a], #112]\n\t" - "ldr r5, [%[b], #112]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #112]\n\t" - "ldr r4, [%[a], #116]\n\t" - "ldr r5, [%[b], #116]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #116]\n\t" - "ldr r4, [%[a], #120]\n\t" - "ldr r5, [%[b], #120]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #120]\n\t" - "ldr r4, [%[a], #124]\n\t" - "ldr r5, [%[b], #124]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #124]\n\t" - "movs r3, #0\n\t" -#ifdef __clang__ - "adcs r3, r3\n\t" -#else - "adc r3, r3\n\t" -#endif -#ifdef __clang__ - "adds %[a], %[a], #0x80\n\t" -#else - "add %[a], %[a], #0x80\n\t" -#endif -#ifdef __clang__ - "adds %[b], %[b], #0x80\n\t" -#else - "add %[b], %[b], #0x80\n\t" -#endif -#ifdef __clang__ - "adds %[r], %[r], #0x80\n\t" -#else - "add %[r], %[r], #0x80\n\t" -#endif -#ifdef __clang__ - "adds r3, r3, r6\n\t" -#else - "add r3, r3, r6\n\t" -#endif - "ldr r4, [%[a]]\n\t" - "ldr r5, [%[b]]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r]]\n\t" - "ldr r4, [%[a], #4]\n\t" - "ldr r5, [%[b], #4]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #4]\n\t" - "ldr r4, [%[a], #8]\n\t" - "ldr r5, [%[b], #8]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #8]\n\t" - "ldr r4, [%[a], #12]\n\t" - "ldr r5, [%[b], #12]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #12]\n\t" - "ldr r4, [%[a], #16]\n\t" - "ldr r5, [%[b], #16]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #16]\n\t" - "ldr r4, [%[a], #20]\n\t" - "ldr r5, [%[b], #20]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #20]\n\t" - "ldr r4, [%[a], #24]\n\t" - "ldr r5, [%[b], #24]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #24]\n\t" - "ldr r4, [%[a], #28]\n\t" - "ldr r5, [%[b], #28]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #28]\n\t" - "ldr r4, [%[a], #32]\n\t" - "ldr r5, [%[b], #32]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #32]\n\t" - "ldr r4, [%[a], #36]\n\t" - "ldr r5, [%[b], #36]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #36]\n\t" - "ldr r4, [%[a], #40]\n\t" - "ldr r5, [%[b], #40]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #40]\n\t" - "ldr r4, [%[a], #44]\n\t" - "ldr r5, [%[b], #44]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #44]\n\t" - "ldr r4, [%[a], #48]\n\t" - "ldr r5, [%[b], #48]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #48]\n\t" - "ldr r4, [%[a], #52]\n\t" - "ldr r5, [%[b], #52]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #52]\n\t" - "ldr r4, [%[a], #56]\n\t" - "ldr r5, [%[b], #56]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #56]\n\t" - "ldr r4, [%[a], #60]\n\t" - "ldr r5, [%[b], #60]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #60]\n\t" - "ldr r4, [%[a], #64]\n\t" - "ldr r5, [%[b], #64]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #64]\n\t" - "ldr r4, [%[a], #68]\n\t" - "ldr r5, [%[b], #68]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #68]\n\t" - "ldr r4, [%[a], #72]\n\t" - "ldr r5, [%[b], #72]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #72]\n\t" - "ldr r4, [%[a], #76]\n\t" - "ldr r5, [%[b], #76]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #76]\n\t" - "ldr r4, [%[a], #80]\n\t" - "ldr r5, [%[b], #80]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #80]\n\t" - "ldr r4, [%[a], #84]\n\t" - "ldr r5, [%[b], #84]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #84]\n\t" - "ldr r4, [%[a], #88]\n\t" - "ldr r5, [%[b], #88]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #88]\n\t" - "ldr r4, [%[a], #92]\n\t" - "ldr r5, [%[b], #92]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #92]\n\t" - "ldr r4, [%[a], #96]\n\t" - "ldr r5, [%[b], #96]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #96]\n\t" - "ldr r4, [%[a], #100]\n\t" - "ldr r5, [%[b], #100]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #100]\n\t" - "ldr r4, [%[a], #104]\n\t" - "ldr r5, [%[b], #104]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #104]\n\t" - "ldr r4, [%[a], #108]\n\t" - "ldr r5, [%[b], #108]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #108]\n\t" - "ldr r4, [%[a], #112]\n\t" - "ldr r5, [%[b], #112]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #112]\n\t" - "ldr r4, [%[a], #116]\n\t" - "ldr r5, [%[b], #116]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #116]\n\t" - "ldr r4, [%[a], #120]\n\t" - "ldr r5, [%[b], #120]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #120]\n\t" - "ldr r4, [%[a], #124]\n\t" - "ldr r5, [%[b], #124]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #124]\n\t" - "movs r3, #0\n\t" -#ifdef __clang__ - "adcs r3, r3\n\t" -#else - "adc r3, r3\n\t" -#endif -#ifdef __clang__ - "adds %[a], %[a], #0x80\n\t" -#else - "add %[a], %[a], #0x80\n\t" -#endif -#ifdef __clang__ - "adds %[b], %[b], #0x80\n\t" -#else - "add %[b], %[b], #0x80\n\t" -#endif -#ifdef __clang__ - "adds %[r], %[r], #0x80\n\t" -#else - "add %[r], %[r], #0x80\n\t" -#endif -#ifdef __clang__ - "adds r3, r3, r6\n\t" -#else - "add r3, r3, r6\n\t" -#endif - "ldr r4, [%[a]]\n\t" - "ldr r5, [%[b]]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r]]\n\t" - "ldr r4, [%[a], #4]\n\t" - "ldr r5, [%[b], #4]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #4]\n\t" - "ldr r4, [%[a], #8]\n\t" - "ldr r5, [%[b], #8]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #8]\n\t" - "ldr r4, [%[a], #12]\n\t" - "ldr r5, [%[b], #12]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #12]\n\t" - "ldr r4, [%[a], #16]\n\t" - "ldr r5, [%[b], #16]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #16]\n\t" - "ldr r4, [%[a], #20]\n\t" - "ldr r5, [%[b], #20]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #20]\n\t" - "ldr r4, [%[a], #24]\n\t" - "ldr r5, [%[b], #24]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #24]\n\t" - "ldr r4, [%[a], #28]\n\t" - "ldr r5, [%[b], #28]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #28]\n\t" - "ldr r4, [%[a], #32]\n\t" - "ldr r5, [%[b], #32]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #32]\n\t" - "ldr r4, [%[a], #36]\n\t" - "ldr r5, [%[b], #36]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #36]\n\t" - "ldr r4, [%[a], #40]\n\t" - "ldr r5, [%[b], #40]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #40]\n\t" - "ldr r4, [%[a], #44]\n\t" - "ldr r5, [%[b], #44]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #44]\n\t" - "ldr r4, [%[a], #48]\n\t" - "ldr r5, [%[b], #48]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #48]\n\t" - "ldr r4, [%[a], #52]\n\t" - "ldr r5, [%[b], #52]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #52]\n\t" - "ldr r4, [%[a], #56]\n\t" - "ldr r5, [%[b], #56]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #56]\n\t" - "ldr r4, [%[a], #60]\n\t" - "ldr r5, [%[b], #60]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #60]\n\t" - "ldr r4, [%[a], #64]\n\t" - "ldr r5, [%[b], #64]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #64]\n\t" - "ldr r4, [%[a], #68]\n\t" - "ldr r5, [%[b], #68]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #68]\n\t" - "ldr r4, [%[a], #72]\n\t" - "ldr r5, [%[b], #72]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #72]\n\t" - "ldr r4, [%[a], #76]\n\t" - "ldr r5, [%[b], #76]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #76]\n\t" - "ldr r4, [%[a], #80]\n\t" - "ldr r5, [%[b], #80]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #80]\n\t" - "ldr r4, [%[a], #84]\n\t" - "ldr r5, [%[b], #84]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #84]\n\t" - "ldr r4, [%[a], #88]\n\t" - "ldr r5, [%[b], #88]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #88]\n\t" - "ldr r4, [%[a], #92]\n\t" - "ldr r5, [%[b], #92]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #92]\n\t" - "ldr r4, [%[a], #96]\n\t" - "ldr r5, [%[b], #96]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #96]\n\t" - "ldr r4, [%[a], #100]\n\t" - "ldr r5, [%[b], #100]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #100]\n\t" - "ldr r4, [%[a], #104]\n\t" - "ldr r5, [%[b], #104]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #104]\n\t" - "ldr r4, [%[a], #108]\n\t" - "ldr r5, [%[b], #108]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #108]\n\t" - "ldr r4, [%[a], #112]\n\t" - "ldr r5, [%[b], #112]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #112]\n\t" - "ldr r4, [%[a], #116]\n\t" - "ldr r5, [%[b], #116]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #116]\n\t" - "ldr r4, [%[a], #120]\n\t" - "ldr r5, [%[b], #120]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #120]\n\t" - "ldr r4, [%[a], #124]\n\t" - "ldr r5, [%[b], #124]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" -#else - "adc r4, r5\n\t" -#endif - "str r4, [%[r], #124]\n\t" - "movs r3, #0\n\t" -#ifdef __clang__ - "adcs r3, r3\n\t" + "adc r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" + "movs %[r], #0\n\t" +#ifdef WOLFSSL_KEIL + "adcs %[r], %[r], %[r]\n\t" +#elif defined(__clang__) + "adcs %[r], %[r]\n\t" #else - "adc r3, r3\n\t" + "adc %[r], %[r]\n\t" #endif - "movs %[r], r3\n\t" : [r] "+r" (r), [a] "+r" (a), [b] "+r" (b) : : "memory", "r3", "r4", "r5", "r6" @@ -26864,9 +85469,8 @@ SP_NOINLINE static void sp_4096_mul_128(sp_digit* r, const sp_digit* a, u += sp_4096_sub_in_place_128(z1, z2); u += sp_4096_sub_in_place_128(z1, z0); u += sp_4096_add_128(r + 64, r + 64, z1); - r[192] = u; - XMEMSET(r + 192 + 1, 0, sizeof(sp_digit) * (64 - 1)); - (void)sp_4096_add_128(r + 128, r + 128, z2); + u += sp_4096_add_64(r + 128, r + 128, z2); + (void)sp_4096_add_to_word_64(r + 192, u, z2 + 64); } /* Square a and put result in r. (r = a * a) @@ -26887,13 +85491,12 @@ SP_NOINLINE static void sp_4096_sqr_128(sp_digit* r, const sp_digit* a) sp_2048_sqr_64(z2, &a[64]); sp_2048_sqr_64(z0, a); sp_2048_mask_64(r + 128, a1, 0 - u); - u += sp_2048_add_64(r + 128, r + 128, r + 128); + u += sp_2048_dbl_64(r + 128, r + 128); u += sp_4096_sub_in_place_128(z1, z2); u += sp_4096_sub_in_place_128(z1, z0); u += sp_4096_add_128(r + 64, r + 64, z1); - r[192] = u; - XMEMSET(r + 192 + 1, 0, sizeof(sp_digit) * (64 - 1)); - (void)sp_4096_add_128(r + 128, r + 128, z2); + u += sp_4096_add_64(r + 128, r + 128, z2); + (void)sp_4096_add_to_word_64(r + 192, u, z2 + 64); } #endif /* !WOLFSSL_SP_SMALL */ @@ -26912,53 +85515,57 @@ SP_NOINLINE static sp_digit sp_4096_add_128(sp_digit* r, const sp_digit* a, "movs r7, #0\n\t" "movs r3, #0\n\t" "movs r4, #2\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, #8\n\t" #else "lsl r4, r4, #8\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r7, r7, #1\n\t" #else "sub r7, r7, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r6, r6, r4\n\t" #else "add r6, r6, r4\n\t" #endif "\n" - "L_sp_4096_add_128_word_%=: \n\t" -#ifdef __clang__ + "L_sp_4096_add_128_word_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r7\n\t" #else "add r3, r3, r7\n\t" #endif "ldr r4, [%[a]]\n\t" "ldr r5, [%[b]]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) "adcs r4, r5\n\t" #else "adc r4, r5\n\t" #endif "str r4, [%[r]]\n\t" "movs r3, #0\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r3\n\t" +#elif defined(__clang__) "adcs r3, r3\n\t" #else "adc r3, r3\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[a], %[a], #4\n\t" #else "add %[a], %[a], #4\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[b], %[b], #4\n\t" #else "add %[b], %[b], #4\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[r], %[r], #4\n\t" #else "add %[r], %[r], #4\n\t" @@ -26987,20 +85594,20 @@ SP_NOINLINE static sp_digit sp_4096_sub_in_place_128(sp_digit* a, "movs r7, %[a]\n\t" "movs r2, #0\n\t" "movs r5, #2\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, #8\n\t" #else "lsl r5, r5, #8\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r7, r7, r5\n\t" #else "add r7, r7, r5\n\t" #endif "\n" - "L_sp_4096_sub_in_place_128_words_%=: \n\t" + "L_sp_4096_sub_in_place_128_words_%=:\n\t" "movs r5, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r5, r5, r2\n\t" #else "sub r5, r5, r2\n\t" @@ -27009,29 +85616,35 @@ SP_NOINLINE static sp_digit sp_4096_sub_in_place_128(sp_digit* a, "ldr r4, [%[a], #4]\n\t" "ldr r5, [%[b]]\n\t" "ldr r6, [%[b], #4]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif "str r3, [%[a]]\n\t" "str r4, [%[a], #4]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r2\n\t" +#elif defined(__clang__) "sbcs r2, r2\n\t" #else "sbc r2, r2\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[a], %[a], #8\n\t" #else "add %[a], %[a], #8\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[b], %[b], #8\n\t" #else "add %[b], %[b], #8\n\t" @@ -27067,7 +85680,7 @@ SP_NOINLINE static void sp_4096_mul_128(sp_digit* r, const sp_digit* a, "mov r9, %[a]\n\t" "mov r10, %[b]\n\t" "movs r6, #2\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #8\n\t" #else "lsl r6, r6, #8\n\t" @@ -27075,38 +85688,42 @@ SP_NOINLINE static void sp_4096_mul_128(sp_digit* r, const sp_digit* a, "add r6, r6, r9\n\t" "mov r12, r6\n\t" "\n" - "L_sp_4096_mul_128_words_%=: \n\t" + "L_sp_4096_mul_128_words_%=:\n\t" "movs %[tmp], #0\n\t" "movs r5, #0\n\t" "movs r6, #0xff\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r6, r6, #0xfd\n\t" #else "add r6, r6, #0xfd\n\t" #endif "mov %[a], r8\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[a], %[a], r6\n\t" #else "sub %[a], %[a], r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r6\n\t" +#elif defined(__clang__) "sbcs r6, r6\n\t" #else "sbc r6, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "mvns r6, r6\n\t" #else "mvn r6, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands %[a], %[a], r6\n\t" +#elif defined(__clang__) "ands %[a], r6\n\t" #else "and %[a], r6\n\t" #endif "mov %[b], r8\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[b], %[b], %[a]\n\t" #else "sub %[b], %[b], %[a]\n\t" @@ -27114,161 +85731,153 @@ SP_NOINLINE static void sp_4096_mul_128(sp_digit* r, const sp_digit* a, "add %[a], %[a], r9\n\t" "add %[b], %[b], r10\n\t" "\n" - "L_sp_4096_mul_128_mul_%=: \n\t" + "L_sp_4096_mul_128_mul_%=:\n\t" "# Multiply Start\n\t" - "ldr r6, [%[a]]\n\t" - "ldr r7, [%[b]]\n\t" -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsls r7, r7, #16\n\t" -#else - "lsl r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ + "ldrh r6, [%[a]]\n\t" + "ldrh r7, [%[b]]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) "muls r7, r6\n\t" #else "mul r7, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r7\n\t" #else "add r3, r3, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[tmp]\n\t" +#elif defined(__clang__) "adcs r4, %[tmp]\n\t" #else "adc r4, %[tmp]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[tmp]\n\t" +#elif defined(__clang__) "adcs r5, %[tmp]\n\t" #else "adc r5, %[tmp]\n\t" #endif "ldr r7, [%[b]]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r7, #16\n\t" #else "lsr r7, r7, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) "muls r6, r7\n\t" #else "mul r6, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r6, #16\n\t" #else "lsr r7, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #16\n\t" #else "lsl r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[tmp]\n\t" +#elif defined(__clang__) "adcs r5, %[tmp]\n\t" #else "adc r5, %[tmp]\n\t" #endif "ldr r6, [%[a]]\n\t" "ldr r7, [%[b]]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, #16\n\t" #else "lsr r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r7, #16\n\t" #else "lsr r7, r7, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) "muls r7, r6\n\t" #else "mul r7, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, r7\n\t" #else "add r4, r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[tmp]\n\t" +#elif defined(__clang__) "adcs r5, %[tmp]\n\t" #else "adc r5, %[tmp]\n\t" #endif - "ldr r7, [%[b]]\n\t" -#ifdef __clang__ - "lsls r7, r7, #16\n\t" -#else - "lsl r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ + "ldrh r7, [%[b]]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) "muls r6, r7\n\t" #else "mul r6, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r6, #16\n\t" #else "lsr r7, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #16\n\t" #else "lsl r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[tmp]\n\t" +#elif defined(__clang__) "adcs r5, %[tmp]\n\t" #else "adc r5, %[tmp]\n\t" #endif "# Multiply Done\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[a], %[a], #4\n\t" #else "add %[a], %[a], #4\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[b], %[b], #4\n\t" #else "sub %[b], %[b], #4\n\t" @@ -27280,25 +85889,25 @@ SP_NOINLINE static void sp_4096_mul_128(sp_digit* r, const sp_digit* a, "cmp %[a], r6\n\t" "ble L_sp_4096_mul_128_mul_%=\n\t" "\n" - "L_sp_4096_mul_128_done_mul_%=: \n\t" + "L_sp_4096_mul_128_done_mul_%=:\n\t" "mov %[tmp], r11\n\t" "mov r7, r8\n\t" "str r3, [%[tmp], r7]\n\t" "movs r3, r4\n\t" "movs r4, r5\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r7, r7, #4\n\t" #else "add r7, r7, #4\n\t" #endif "mov r8, r7\n\t" "movs r6, #3\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #8\n\t" #else "lsl r6, r6, #8\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r6, r6, #0xf8\n\t" #else "add r6, r6, #0xf8\n\t" @@ -27330,12 +85939,12 @@ SP_NOINLINE static void sp_4096_sqr_128(sp_digit* r, const sp_digit* a) "mov r8, r3\n\t" "mov r11, %[r]\n\t" "movs r6, #4\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #8\n\t" #else "lsl r6, r6, #8\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "negs r6, r6\n\t" #else "neg r6, r6\n\t" @@ -27344,37 +85953,41 @@ SP_NOINLINE static void sp_4096_sqr_128(sp_digit* r, const sp_digit* a) "mov r10, sp\n\t" "mov r9, %[a]\n\t" "\n" - "L_sp_4096_sqr_128_words_%=: \n\t" + "L_sp_4096_sqr_128_words_%=:\n\t" "movs %[r], #0\n\t" "movs r6, #0xff\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r6, r6, #0xfd\n\t" #else "add r6, r6, #0xfd\n\t" #endif "mov %[a], r8\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[a], %[a], r6\n\t" #else "sub %[a], %[a], r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r6\n\t" +#elif defined(__clang__) "sbcs r6, r6\n\t" #else "sbc r6, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "mvns r6, r6\n\t" #else "mvn r6, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands %[a], %[a], r6\n\t" +#elif defined(__clang__) "ands %[a], r6\n\t" #else "and %[a], r6\n\t" #endif "mov r2, r8\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r2, r2, %[a]\n\t" #else "sub r2, r2, %[a]\n\t" @@ -27382,207 +85995,213 @@ SP_NOINLINE static void sp_4096_sqr_128(sp_digit* r, const sp_digit* a) "add %[a], %[a], r9\n\t" "add r2, r2, r9\n\t" "\n" - "L_sp_4096_sqr_128_mul_%=: \n\t" + "L_sp_4096_sqr_128_mul_%=:\n\t" "cmp r2, %[a]\n\t" "beq L_sp_4096_sqr_128_sqr_%=\n\t" "# Multiply * 2: Start\n\t" - "ldr r6, [%[a]]\n\t" - "ldr r7, [r2]\n\t" -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsls r7, r7, #16\n\t" -#else - "lsl r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ + "ldrh r6, [%[a]]\n\t" + "ldrh r7, [r2]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) "muls r7, r6\n\t" #else "mul r7, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r7\n\t" #else "add r3, r3, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) "adcs r4, %[r]\n\t" #else "adc r4, %[r]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r7\n\t" #else "add r3, r3, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) "adcs r4, %[r]\n\t" #else "adc r4, %[r]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif "ldr r7, [r2]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r7, #16\n\t" #else "lsr r7, r7, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) "muls r6, r7\n\t" #else "mul r6, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r6, #16\n\t" #else "lsr r7, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #16\n\t" #else "lsl r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif "ldr r6, [%[a]]\n\t" "ldr r7, [r2]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, #16\n\t" #else "lsr r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r7, #16\n\t" #else "lsr r7, r7, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) "muls r7, r6\n\t" #else "mul r7, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, r7\n\t" #else "add r4, r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, r7\n\t" #else "add r4, r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif - "ldr r7, [r2]\n\t" -#ifdef __clang__ - "lsls r7, r7, #16\n\t" -#else - "lsl r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ + "ldrh r7, [r2]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) "muls r6, r7\n\t" #else "mul r6, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r6, #16\n\t" #else "lsr r7, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #16\n\t" #else "lsl r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" @@ -27590,120 +86209,107 @@ SP_NOINLINE static void sp_4096_sqr_128(sp_digit* r, const sp_digit* a) "# Multiply * 2: Done\n\t" "bal L_sp_4096_sqr_128_done_sqr_%=\n\t" "\n" - "L_sp_4096_sqr_128_sqr_%=: \n\t" + "L_sp_4096_sqr_128_sqr_%=:\n\t" + "mov r12, r2\n\t" + "ldr r2, [%[a]]\n\t" "# Square: Start\n\t" - "ldr r6, [%[a]]\n\t" -#ifdef __clang__ - "lsrs r7, r6, #16\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r2, #16\n\t" #else - "lsr r7, r6, #16\n\t" + "lsr r7, r2, #16\n\t" #endif -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ + "uxth r6, r2\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r6, r6\n\t" +#elif defined(__clang__) "muls r6, r6\n\t" #else "mul r6, r6\n\t" #endif -#ifdef __clang__ - "adds r3, r3, r6\n\t" -#else - "add r3, r3, r6\n\t" -#endif -#ifdef __clang__ - "adcs r4, %[r]\n\t" -#else - "adc r4, %[r]\n\t" -#endif -#ifdef __clang__ - "adcs r5, %[r]\n\t" -#else - "adc r5, %[r]\n\t" -#endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r7, r7, r7\n\t" +#elif defined(__clang__) "muls r7, r7\n\t" #else "mul r7, r7\n\t" #endif -#ifdef __clang__ - "adds r4, r4, r7\n\t" -#else - "add r4, r4, r7\n\t" -#endif -#ifdef __clang__ - "adcs r5, %[r]\n\t" -#else - "adc r5, %[r]\n\t" -#endif - "ldr r6, [%[a]]\n\t" -#ifdef __clang__ - "lsrs r7, r6, #16\n\t" -#else - "lsr r7, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "muls r6, r7\n\t" -#else - "mul r6, r7\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r6, #15\n\t" -#else - "lsr r7, r6, #15\n\t" -#endif -#ifdef __clang__ - "lsls r6, r6, #17\n\t" -#else - "lsl r6, r6, #17\n\t" -#endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r2, #16\n\t" +#else + "lsr r7, r2, #16\n\t" +#endif + "uxth r6, r2\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #15\n\t" +#else + "lsr r7, r6, #15\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #17\n\t" +#else + "lsl r6, r6, #17\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif "# Square: Done\n\t" + "mov r2, r12\n\t" "\n" - "L_sp_4096_sqr_128_done_sqr_%=: \n\t" -#ifdef __clang__ + "L_sp_4096_sqr_128_done_sqr_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[a], %[a], #4\n\t" #else "add %[a], %[a], #4\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r2, r2, #4\n\t" #else "sub r2, r2, #4\n\t" #endif "movs r6, #2\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #8\n\t" #else "lsl r6, r6, #8\n\t" @@ -27718,26 +86324,26 @@ SP_NOINLINE static void sp_4096_sqr_128(sp_digit* r, const sp_digit* a) "cmp %[a], r7\n\t" "ble L_sp_4096_sqr_128_mul_%=\n\t" "\n" - "L_sp_4096_sqr_128_done_mul_%=: \n\t" + "L_sp_4096_sqr_128_done_mul_%=:\n\t" "mov %[r], r10\n\t" "mov r7, r8\n\t" "str r3, [%[r], r7]\n\t" "movs r3, r4\n\t" "movs r4, r5\n\t" "movs r5, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r7, r7, #4\n\t" #else "add r7, r7, #4\n\t" #endif "mov r8, r7\n\t" "movs r6, #3\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #8\n\t" #else "lsl r6, r6, #8\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r6, r6, #0xf8\n\t" #else "add r6, r6, #0xf8\n\t" @@ -27749,28 +86355,28 @@ SP_NOINLINE static void sp_4096_sqr_128(sp_digit* r, const sp_digit* a) "mov %[r], r11\n\t" "mov %[a], r10\n\t" "movs r3, #3\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, #8\n\t" #else "lsl r3, r3, #8\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, #0xfc\n\t" #else "add r3, r3, #0xfc\n\t" #endif "\n" - "L_sp_4096_sqr_128_store_%=: \n\t" + "L_sp_4096_sqr_128_store_%=:\n\t" "ldr r6, [%[a], r3]\n\t" "str r6, [%[r], r3]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r3, r3, #4\n\t" #else "sub r3, r3, #4\n\t" #endif "bge L_sp_4096_sqr_128_store_%=\n\t" "movs r6, #4\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #8\n\t" #else "lsl r6, r6, #8\n\t" @@ -27778,7 +86384,7 @@ SP_NOINLINE static void sp_4096_sqr_128(sp_digit* r, const sp_digit* a) "add sp, sp, r6\n\t" : [r] "+r" (r), [a] "+r" (a) : - : "memory", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11" + : "memory", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12" ); } @@ -27814,12 +86420,12 @@ SP_NOINLINE static void sp_4096_mul_d_128(sp_digit* r, const sp_digit* a, { __asm__ __volatile__ ( "movs r6, #2\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #8\n\t" #else "lsl r6, r6, #8\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r6, r6, %[a]\n\t" #else "add r6, r6, %[a]\n\t" @@ -27829,148 +86435,142 @@ SP_NOINLINE static void sp_4096_mul_d_128(sp_digit* r, const sp_digit* a, "movs r3, #0\n\t" "movs r4, #0\n\t" "\n" - "L_sp_4096_mul_d_128_%=: \n\t" + "L_sp_4096_mul_d_128_%=:\n\t" "movs %[r], #0\n\t" "movs r5, #0\n\t" "# A[] * B\n\t" - "ldr r6, [%[a]]\n\t" -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsls r7, %[b], #16\n\t" -#else - "lsl r7, %[b], #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ + "ldrh r6, [%[a]]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) "muls r7, r6\n\t" #else "mul r7, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r7\n\t" #else "add r3, r3, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) "adcs r4, %[r]\n\t" #else "adc r4, %[r]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, %[b], #16\n\t" #else "lsr r7, %[b], #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) "muls r6, r7\n\t" #else "mul r6, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r6, #16\n\t" #else "lsr r7, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #16\n\t" #else "lsl r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif "ldr r6, [%[a]]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, #16\n\t" #else "lsr r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, %[b], #16\n\t" #else "lsr r7, %[b], #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) "muls r7, r6\n\t" #else "mul r7, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, r7\n\t" #else "add r4, r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif -#ifdef __clang__ - "lsls r7, %[b], #16\n\t" -#else - "lsl r7, %[b], #16\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) "muls r6, r7\n\t" #else "mul r6, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r6, #16\n\t" #else "lsr r7, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #16\n\t" #else "lsl r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" @@ -27980,12 +86580,12 @@ SP_NOINLINE static void sp_4096_mul_d_128(sp_digit* r, const sp_digit* a, "str r3, [%[r]]\n\t" "movs r3, r4\n\t" "movs r4, r5\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[r], %[r], #4\n\t" #else "add %[r], %[r], #4\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[a], %[a], #4\n\t" #else "add %[a], %[a], #4\n\t" @@ -28030,7 +86630,7 @@ SP_NOINLINE static sp_digit sp_4096_cond_sub_128(sp_digit* r, const sp_digit* a, __asm__ __volatile__ ( "movs r4, #0\n\t" "movs r5, #2\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, #8\n\t" #else "lsl r5, r5, #8\n\t" @@ -28038,32 +86638,38 @@ SP_NOINLINE static sp_digit sp_4096_cond_sub_128(sp_digit* r, const sp_digit* a, "mov r8, r5\n\t" "movs r7, #0\n\t" "\n" - "L_sp_4096_cond_sub_128_words_%=: \n\t" + "L_sp_4096_cond_sub_128_words_%=:\n\t" "ldr r6, [%[b], r7]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, %[m]\n\t" +#elif defined(__clang__) "ands r6, %[m]\n\t" #else "and r6, %[m]\n\t" #endif "movs r5, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r5, r5, r4\n\t" #else "sub r5, r5, r4\n\t" #endif "ldr r5, [%[a], r7]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) "sbcs r5, r6\n\t" #else "sbc r5, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r4\n\t" +#elif defined(__clang__) "sbcs r4, r4\n\t" #else "sbc r4, r4\n\t" #endif "str r5, [%[r], r7]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r7, r7, #4\n\t" #else "add r7, r7, #4\n\t" @@ -28087,384 +86693,2713 @@ SP_NOINLINE static sp_digit sp_4096_cond_sub_128(sp_digit* r, const sp_digit* a, SP_NOINLINE static void sp_4096_mont_reduce_128(sp_digit* a, const sp_digit* m, sp_digit mp) { - sp_digit ca = 0; __asm__ __volatile__ ( + "movs r7, #0\n\t" "mov r8, %[mp]\n\t" - "mov r12, %[ca]\n\t" + "mov r12, r7\n\t" "mov lr, %[m]\n\t" "mov r9, %[a]\n\t" + "mov r11, %[a]\n\t" + "movs r5, #0xff\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, #0xfd\n\t" +#else + "add r5, r5, #0xfd\n\t" +#endif + "movs r6, #2\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #8\n\t" +#else + "lsl r6, r6, #8\n\t" +#endif + "add r9, r9, r5\n\t" + "add r11, r11, r6\n\t" + "\n" + "L_sp_4096_mont_reduce_128_mod_%=:\n\t" + "movs r7, #0\n\t" "movs r4, #0\n\t" - "# i = 0\n\t" - "mov r11, r4\n\t" - "\n" - "L_sp_4096_mont_reduce_128_mod_%=: \n\t" - "movs r5, #0\n\t" - "movs %[ca], #0\n\t" + "# a[i] += m[0] * mu\n\t" + "ldm %[m]!, {%[mp]}\n\t" + "ldm %[a]!, {r3}\n\t" "# mu = a[i] * mp\n\t" - "mov %[mp], r8\n\t" - "ldr %[a], [%[a]]\n\t" -#ifdef __clang__ - "muls %[mp], %[a]\n\t" + "mov r5, r8\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r3, r5\n\t" +#elif defined(__clang__) + "muls r5, r3\n\t" #else - "mul %[mp], %[a]\n\t" + "mul r5, r3\n\t" #endif - "mov %[m], lr\n\t" - "mov r10, r9\n\t" - "\n" - "L_sp_4096_mont_reduce_128_word_%=: \n\t" - "# a[i+j] += m[j] * mu\n\t" - "mov %[a], r10\n\t" - "ldr %[a], [%[a]]\n\t" - "movs %[ca], #0\n\t" - "movs r4, r5\n\t" - "movs r5, #0\n\t" - "# Multiply m[j] and mu - Start\n\t" - "ldr r7, [%[m]]\n\t" -#ifdef __clang__ - "lsls r6, %[mp], #16\n\t" + "mov r10, r5\n\t" + "# Multiply m[0] and mu - Start\n\t" + "mov r5, r10\n\t" + "uxth r6, %[mp]\n\t" + "uxth r5, r5\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" #else - "lsl r6, %[mp], #16\n\t" + "mul r6, r5\n\t" #endif -#ifdef __clang__ - "lsls r7, r7, #16\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" #else - "lsl r7, r7, #16\n\t" + "add r3, r3, r6\n\t" #endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" #else - "lsr r6, r6, #16\n\t" + "adc r4, r7\n\t" #endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "muls r7, r6\n\t" -#else - "mul r7, r6\n\t" -#endif -#ifdef __clang__ - "adds %[a], %[a], r7\n\t" -#else - "add %[a], %[a], r7\n\t" -#endif -#ifdef __clang__ - "adcs r5, %[ca]\n\t" -#else - "adc r5, %[ca]\n\t" -#endif - "ldr r7, [%[m]]\n\t" -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "muls r6, r7\n\t" -#else - "mul r6, r7\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r6, #16\n\t" -#else - "lsr r7, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "adds %[a], %[a], r6\n\t" -#else - "add %[a], %[a], r6\n\t" -#endif -#ifdef __clang__ - "adcs r5, r7\n\t" -#else - "adc r5, r7\n\t" -#endif - "ldr r7, [%[m]]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, %[mp], #16\n\t" #else "lsr r6, %[mp], #16\n\t" #endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" #else - "lsr r7, r7, #16\n\t" + "mul r5, r6\n\t" #endif -#ifdef __clang__ - "muls r7, r6\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" #else - "mul r7, r6\n\t" + "lsr r6, r5, #16\n\t" #endif -#ifdef __clang__ - "adds r5, r5, r7\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" #else - "add r5, r5, r7\n\t" + "lsl r5, r5, #16\n\t" #endif - "ldr r7, [%[m]]\n\t" -#ifdef __clang__ - "lsls r7, r7, #16\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" #else - "lsl r7, r7, #16\n\t" + "add r3, r3, r5\n\t" #endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "lsr r7, r7, #16\n\t" + "adc r4, r6\n\t" #endif -#ifdef __clang__ - "muls r6, r7\n\t" + "mov r5, r10\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[mp], #16\n\t" #else - "mul r6, r7\n\t" + "lsr r6, %[mp], #16\n\t" #endif -#ifdef __clang__ - "lsrs r7, r6, #16\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, r5, #16\n\t" #else - "lsr r7, r6, #16\n\t" + "lsr r5, r5, #16\n\t" #endif -#ifdef __clang__ - "lsls r6, r6, #16\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" #else - "lsl r6, r6, #16\n\t" + "mul r6, r5\n\t" #endif -#ifdef __clang__ - "adds %[a], %[a], r6\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" #else - "add %[a], %[a], r6\n\t" + "add r4, r4, r6\n\t" #endif -#ifdef __clang__ - "adcs r5, r7\n\t" + "uxth r6, %[mp]\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" #else - "adc r5, r7\n\t" + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "# Multiply m[0] and mu - Done\n\t" + "\n" + "L_sp_4096_mont_reduce_128_word_%=:\n\t" + "# a[i+j] += m[j] * mu\n\t" + "ldr r3, [%[a]]\n\t" + "ldm %[m]!, {%[mp]}\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r4\n\t" +#else + "add r3, r3, r4\n\t" +#endif + "movs r4, #0\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif + "# Multiply m[j] and mu - Start\n\t" + "mov r5, r10\n\t" + "uxth r6, %[mp]\n\t" + "uxth r5, r5\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[mp], #16\n\t" +#else + "lsr r6, %[mp], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "mov r5, r10\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[mp], #16\n\t" +#else + "lsr r6, %[mp], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, r5, #16\n\t" +#else + "lsr r5, r5, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif + "uxth r6, %[mp]\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" #endif "# Multiply m[j] and mu - Done\n\t" -#ifdef __clang__ - "adds r4, r4, %[a]\n\t" -#else - "add r4, r4, %[a]\n\t" -#endif -#ifdef __clang__ - "adcs r5, %[ca]\n\t" -#else - "adc r5, %[ca]\n\t" -#endif - "mov %[a], r10\n\t" - "str r4, [%[a]]\n\t" - "movs r6, #4\n\t" -#ifdef __clang__ - "adds %[m], %[m], #4\n\t" -#else - "add %[m], %[m], #4\n\t" -#endif - "add r10, r10, r6\n\t" - "movs r4, #0xff\n\t" -#ifdef __clang__ - "adds r4, r4, #0xfd\n\t" -#else - "add r4, r4, #0xfd\n\t" -#endif - "add r4, r4, r9\n\t" - "cmp r10, r4\n\t" + "stm %[a]!, {r3}\n\t" + "cmp %[a], r9\n\t" "blt L_sp_4096_mont_reduce_128_word_%=\n\t" "# a[i+127] += m[127] * mu\n\t" - "movs %[ca], #0\n\t" - "mov r4, r12\n\t" - "movs %[a], #0\n\t" + "ldr %[mp], [%[m]]\n\t" + "mov r3, r12\n\t" "# Multiply m[127] and mu - Start\n\t" - "ldr r7, [%[m]]\n\t" -#ifdef __clang__ - "lsls r6, %[mp], #16\n\t" + "mov r5, r10\n\t" + "uxth r6, %[mp]\n\t" + "uxth r5, r5\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" #else - "lsl r6, %[mp], #16\n\t" + "mul r6, r5\n\t" #endif -#ifdef __clang__ - "lsls r7, r7, #16\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" #else - "lsl r7, r7, #16\n\t" + "add r4, r4, r6\n\t" #endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" #else - "lsr r6, r6, #16\n\t" + "adc r3, r7\n\t" #endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r7\n\t" +#elif defined(__clang__) + "adcs r7, r7\n\t" #else - "lsr r7, r7, #16\n\t" + "adc r7, r7\n\t" #endif -#ifdef __clang__ - "muls r7, r6\n\t" -#else - "mul r7, r6\n\t" -#endif -#ifdef __clang__ - "adds r5, r5, r7\n\t" -#else - "add r5, r5, r7\n\t" -#endif -#ifdef __clang__ - "adcs r4, %[ca]\n\t" -#else - "adc r4, %[ca]\n\t" -#endif -#ifdef __clang__ - "adcs %[a], %[ca]\n\t" -#else - "adc %[a], %[ca]\n\t" -#endif - "ldr r7, [%[m]]\n\t" -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "muls r6, r7\n\t" -#else - "mul r6, r7\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r6, #16\n\t" -#else - "lsr r7, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "adds r5, r5, r6\n\t" -#else - "add r5, r5, r6\n\t" -#endif -#ifdef __clang__ - "adcs r4, r7\n\t" -#else - "adc r4, r7\n\t" -#endif -#ifdef __clang__ - "adcs %[a], %[ca]\n\t" -#else - "adc %[a], %[ca]\n\t" -#endif - "ldr r7, [%[m]]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, %[mp], #16\n\t" #else "lsr r6, %[mp], #16\n\t" #endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" #else - "lsr r7, r7, #16\n\t" + "mul r5, r6\n\t" #endif -#ifdef __clang__ - "muls r7, r6\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" #else - "mul r7, r6\n\t" + "lsr r6, r5, #16\n\t" #endif -#ifdef __clang__ - "adds r4, r4, r7\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" #else - "add r4, r4, r7\n\t" + "lsl r5, r5, #16\n\t" #endif -#ifdef __clang__ - "adcs %[a], %[ca]\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" #else - "adc %[a], %[ca]\n\t" + "add r4, r4, r5\n\t" #endif - "ldr r7, [%[m]]\n\t" -#ifdef __clang__ - "lsls r7, r7, #16\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" #else - "lsl r7, r7, #16\n\t" + "adc r3, r6\n\t" #endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r7\n\t" +#elif defined(__clang__) + "adcs r7, r7\n\t" #else - "lsr r7, r7, #16\n\t" + "adc r7, r7\n\t" #endif -#ifdef __clang__ - "muls r6, r7\n\t" + "mov r5, r10\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[mp], #16\n\t" #else - "mul r6, r7\n\t" + "lsr r6, %[mp], #16\n\t" #endif -#ifdef __clang__ - "lsrs r7, r6, #16\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, r5, #16\n\t" #else - "lsr r7, r6, #16\n\t" + "lsr r5, r5, #16\n\t" #endif -#ifdef __clang__ - "lsls r6, r6, #16\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" #else - "lsl r6, r6, #16\n\t" + "mul r6, r5\n\t" #endif -#ifdef __clang__ - "adds r5, r5, r6\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" #else - "add r5, r5, r6\n\t" + "add r3, r3, r6\n\t" #endif -#ifdef __clang__ - "adcs r4, r7\n\t" +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r7\n\t" +#elif defined(__clang__) + "adcs r7, r7\n\t" #else - "adc r4, r7\n\t" + "adc r7, r7\n\t" #endif -#ifdef __clang__ - "adcs %[a], %[ca]\n\t" + "uxth r6, %[mp]\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" #else - "adc %[a], %[ca]\n\t" + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r7\n\t" +#elif defined(__clang__) + "adcs r7, r7\n\t" +#else + "adc r7, r7\n\t" #endif "# Multiply m[127] and mu - Done\n\t" - "movs %[ca], %[a]\n\t" - "mov %[a], r10\n\t" - "ldr r7, [%[a], #4]\n\t" - "ldr %[a], [%[a]]\n\t" - "movs r6, #0\n\t" -#ifdef __clang__ - "adds r5, r5, %[a]\n\t" + "ldr r5, [%[a]]\n\t" + "ldr r6, [%[a], #4]\n\t" + "movs %[mp], #0\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r4\n\t" #else - "add r5, r5, %[a]\n\t" + "add r5, r5, r4\n\t" #endif -#ifdef __clang__ - "adcs r7, r4\n\t" +#ifdef WOLFSSL_KEIL + "adcs r6, r6, r3\n\t" +#elif defined(__clang__) + "adcs r6, r3\n\t" #else - "adc r7, r4\n\t" + "adc r6, r3\n\t" #endif -#ifdef __clang__ - "adcs %[ca], r6\n\t" +#ifdef WOLFSSL_KEIL + "adcs r7, r7, %[mp]\n\t" +#elif defined(__clang__) + "adcs r7, %[mp]\n\t" #else - "adc %[ca], r6\n\t" + "adc r7, %[mp]\n\t" #endif - "mov %[a], r10\n\t" - "str r5, [%[a]]\n\t" - "str r7, [%[a], #4]\n\t" + "stm %[a]!, {r5, r6}\n\t" "# i += 1\n\t" - "movs r6, #4\n\t" - "add r9, r9, r6\n\t" - "add r11, r11, r6\n\t" - "mov r12, %[ca]\n\t" - "mov %[a], r9\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "subs %[a], %[a], #4\n\t" +#else + "sub %[a], %[a], #4\n\t" +#endif + "movs r3, #0xff\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, #0xfd\n\t" +#else + "add r3, r3, #0xfd\n\t" +#endif + "mov r9, %[a]\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "subs %[a], %[a], r3\n\t" +#else + "sub %[a], %[a], r3\n\t" +#endif + "mov r12, r7\n\t" + "mov %[m], lr\n\t" + "cmp r11, %[a]\n\t" + "bgt L_sp_4096_mont_reduce_128_mod_%=\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "negs r7, r7\n\t" +#else + "neg r7, r7\n\t" +#endif + "# Subtract masked modulus\n\t" "movs r4, #2\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, #8\n\t" #else "lsl r4, r4, #8\n\t" #endif - "cmp r11, r4\n\t" - "blt L_sp_4096_mont_reduce_128_mod_%=\n\t" - "mov %[m], lr\n\t" - : [a] "+r" (a), [m] "+r" (m), [mp] "+r" (mp), [ca] "+r" (ca) + "movs %[mp], #0\n\t" + "movs r3, #0\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "subs %[a], %[a], r4\n\t" +#else + "sub %[a], %[a], r4\n\t" +#endif +#ifndef WOLFSSL_SP_LARGE_CODE + "\n" + "L_sp_4096_mont_reduce_128_sub_mask_%=:\n\t" + "ldm %[m]!, {r6}\n\t" + "movs r5, #0\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "subs r5, r5, %[mp]\n\t" +#else + "sub r5, r5, %[mp]\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "sbcs %[mp], %[mp], %[mp]\n\t" +#elif defined(__clang__) + "sbcs %[mp], %[mp]\n\t" +#else + "sbc %[mp], %[mp]\n\t" +#endif + "stm %[a]!, {r5}\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, #4\n\t" +#else + "add r3, r3, #4\n\t" +#endif + "cmp r3, r4\n\t" + "blt L_sp_4096_mont_reduce_128_sub_mask_%=\n\t" +#else /* WOLFSSL_SP_LARGE_CODE */ + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "subs r5, r5, r6\n\t" +#else + "sub r5, r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" +#endif /* WOLFSSL_SP_LARGE_CODE */ + : [a] "+r" (a), [m] "+r" (m), [mp] "+r" (mp) : - : "memory", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12", "lr" + : "memory", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12", "lr" ); - sp_4096_cond_sub_128(a - 128, a, m, (sp_digit)0 - ca); } /* Multiply two Montogmery form numbers mod the modulus (prime). @@ -28511,48 +89446,52 @@ SP_NOINLINE static sp_digit sp_4096_sub_128(sp_digit* r, const sp_digit* a, "movs r6, %[a]\n\t" "movs r3, #0\n\t" "movs r5, #2\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, #8\n\t" #else "lsl r5, r5, #8\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r6, r6, r5\n\t" #else "add r6, r6, r5\n\t" #endif "\n" - "L_sp_4096_sub_128_word_%=: \n\t" + "L_sp_4096_sub_128_word_%=:\n\t" "movs r5, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r5, r5, r3\n\t" #else "sub r5, r5, r3\n\t" #endif "ldr r4, [%[a]]\n\t" "ldr r5, [%[b]]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r5\n\t" +#elif defined(__clang__) "sbcs r4, r5\n\t" #else "sbc r4, r5\n\t" #endif "str r4, [%[r]]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r3\n\t" +#elif defined(__clang__) "sbcs r3, r3\n\t" #else "sbc r3, r3\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[a], %[a], #4\n\t" #else "add %[a], %[a], #4\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[b], %[b], #4\n\t" #else "add %[b], %[b], #4\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[r], %[r], #4\n\t" #else "add %[r], %[r], #4\n\t" @@ -28578,1118 +89517,1102 @@ SP_NOINLINE static sp_digit sp_4096_sub_128(sp_digit* r, const sp_digit* a, const sp_digit* b) { __asm__ __volatile__ ( - "movs r3, #0\n\t" - "ldr r4, [%[a]]\n\t" - "ldr r5, [%[a], #4]\n\t" - "ldr r6, [%[b]]\n\t" - "ldr r7, [%[b], #4]\n\t" -#ifdef __clang__ - "subs r4, r4, r6\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "subs r3, r3, r5\n\t" #else - "sub r4, r4, r6\n\t" + "sub r3, r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" -#else - "sbc r5, r7\n\t" -#endif - "str r4, [%[r]]\n\t" - "str r5, [%[r], #4]\n\t" - "ldr r4, [%[a], #8]\n\t" - "ldr r5, [%[a], #12]\n\t" - "ldr r6, [%[b], #8]\n\t" - "ldr r7, [%[b], #12]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #8]\n\t" - "str r5, [%[r], #12]\n\t" - "ldr r4, [%[a], #16]\n\t" - "ldr r5, [%[a], #20]\n\t" - "ldr r6, [%[b], #16]\n\t" - "ldr r7, [%[b], #20]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #16]\n\t" - "str r5, [%[r], #20]\n\t" - "ldr r4, [%[a], #24]\n\t" - "ldr r5, [%[a], #28]\n\t" - "ldr r6, [%[b], #24]\n\t" - "ldr r7, [%[b], #28]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #24]\n\t" - "str r5, [%[r], #28]\n\t" - "ldr r4, [%[a], #32]\n\t" - "ldr r5, [%[a], #36]\n\t" - "ldr r6, [%[b], #32]\n\t" - "ldr r7, [%[b], #36]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #32]\n\t" - "str r5, [%[r], #36]\n\t" - "ldr r4, [%[a], #40]\n\t" - "ldr r5, [%[a], #44]\n\t" - "ldr r6, [%[b], #40]\n\t" - "ldr r7, [%[b], #44]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #40]\n\t" - "str r5, [%[r], #44]\n\t" - "ldr r4, [%[a], #48]\n\t" - "ldr r5, [%[a], #52]\n\t" - "ldr r6, [%[b], #48]\n\t" - "ldr r7, [%[b], #52]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #48]\n\t" - "str r5, [%[r], #52]\n\t" - "ldr r4, [%[a], #56]\n\t" - "ldr r5, [%[a], #60]\n\t" - "ldr r6, [%[b], #56]\n\t" - "ldr r7, [%[b], #60]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #56]\n\t" - "str r5, [%[r], #60]\n\t" - "ldr r4, [%[a], #64]\n\t" - "ldr r5, [%[a], #68]\n\t" - "ldr r6, [%[b], #64]\n\t" - "ldr r7, [%[b], #68]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #64]\n\t" - "str r5, [%[r], #68]\n\t" - "ldr r4, [%[a], #72]\n\t" - "ldr r5, [%[a], #76]\n\t" - "ldr r6, [%[b], #72]\n\t" - "ldr r7, [%[b], #76]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #72]\n\t" - "str r5, [%[r], #76]\n\t" - "ldr r4, [%[a], #80]\n\t" - "ldr r5, [%[a], #84]\n\t" - "ldr r6, [%[b], #80]\n\t" - "ldr r7, [%[b], #84]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #80]\n\t" - "str r5, [%[r], #84]\n\t" - "ldr r4, [%[a], #88]\n\t" - "ldr r5, [%[a], #92]\n\t" - "ldr r6, [%[b], #88]\n\t" - "ldr r7, [%[b], #92]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #88]\n\t" - "str r5, [%[r], #92]\n\t" - "ldr r4, [%[a], #96]\n\t" - "ldr r5, [%[a], #100]\n\t" - "ldr r6, [%[b], #96]\n\t" - "ldr r7, [%[b], #100]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #96]\n\t" - "str r5, [%[r], #100]\n\t" - "ldr r4, [%[a], #104]\n\t" - "ldr r5, [%[a], #108]\n\t" - "ldr r6, [%[b], #104]\n\t" - "ldr r7, [%[b], #108]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #104]\n\t" - "str r5, [%[r], #108]\n\t" - "ldr r4, [%[a], #112]\n\t" - "ldr r5, [%[a], #116]\n\t" - "ldr r6, [%[b], #112]\n\t" - "ldr r7, [%[b], #116]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #112]\n\t" - "str r5, [%[r], #116]\n\t" - "ldr r4, [%[a], #120]\n\t" - "ldr r5, [%[a], #124]\n\t" - "ldr r6, [%[b], #120]\n\t" - "ldr r7, [%[b], #124]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #120]\n\t" - "str r5, [%[r], #124]\n\t" -#ifdef __clang__ - "sbcs r3, r3\n\t" -#else - "sbc r3, r3\n\t" -#endif -#ifdef __clang__ - "adds %[a], %[a], #0x80\n\t" -#else - "add %[a], %[a], #0x80\n\t" -#endif -#ifdef __clang__ - "adds %[b], %[b], #0x80\n\t" -#else - "add %[b], %[b], #0x80\n\t" -#endif -#ifdef __clang__ - "adds %[r], %[r], #0x80\n\t" -#else - "add %[r], %[r], #0x80\n\t" -#endif - "movs r6, #0\n\t" -#ifdef __clang__ - "subs r6, r6, r3\n\t" -#else - "sub r6, r6, r3\n\t" -#endif - "ldr r4, [%[a]]\n\t" - "ldr r5, [%[a], #4]\n\t" - "ldr r6, [%[b]]\n\t" - "ldr r7, [%[b], #4]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r]]\n\t" - "str r5, [%[r], #4]\n\t" - "ldr r4, [%[a], #8]\n\t" - "ldr r5, [%[a], #12]\n\t" - "ldr r6, [%[b], #8]\n\t" - "ldr r7, [%[b], #12]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #8]\n\t" - "str r5, [%[r], #12]\n\t" - "ldr r4, [%[a], #16]\n\t" - "ldr r5, [%[a], #20]\n\t" - "ldr r6, [%[b], #16]\n\t" - "ldr r7, [%[b], #20]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #16]\n\t" - "str r5, [%[r], #20]\n\t" - "ldr r4, [%[a], #24]\n\t" - "ldr r5, [%[a], #28]\n\t" - "ldr r6, [%[b], #24]\n\t" - "ldr r7, [%[b], #28]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #24]\n\t" - "str r5, [%[r], #28]\n\t" - "ldr r4, [%[a], #32]\n\t" - "ldr r5, [%[a], #36]\n\t" - "ldr r6, [%[b], #32]\n\t" - "ldr r7, [%[b], #36]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #32]\n\t" - "str r5, [%[r], #36]\n\t" - "ldr r4, [%[a], #40]\n\t" - "ldr r5, [%[a], #44]\n\t" - "ldr r6, [%[b], #40]\n\t" - "ldr r7, [%[b], #44]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #40]\n\t" - "str r5, [%[r], #44]\n\t" - "ldr r4, [%[a], #48]\n\t" - "ldr r5, [%[a], #52]\n\t" - "ldr r6, [%[b], #48]\n\t" - "ldr r7, [%[b], #52]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #48]\n\t" - "str r5, [%[r], #52]\n\t" - "ldr r4, [%[a], #56]\n\t" - "ldr r5, [%[a], #60]\n\t" - "ldr r6, [%[b], #56]\n\t" - "ldr r7, [%[b], #60]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #56]\n\t" - "str r5, [%[r], #60]\n\t" - "ldr r4, [%[a], #64]\n\t" - "ldr r5, [%[a], #68]\n\t" - "ldr r6, [%[b], #64]\n\t" - "ldr r7, [%[b], #68]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #64]\n\t" - "str r5, [%[r], #68]\n\t" - "ldr r4, [%[a], #72]\n\t" - "ldr r5, [%[a], #76]\n\t" - "ldr r6, [%[b], #72]\n\t" - "ldr r7, [%[b], #76]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #72]\n\t" - "str r5, [%[r], #76]\n\t" - "ldr r4, [%[a], #80]\n\t" - "ldr r5, [%[a], #84]\n\t" - "ldr r6, [%[b], #80]\n\t" - "ldr r7, [%[b], #84]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #80]\n\t" - "str r5, [%[r], #84]\n\t" - "ldr r4, [%[a], #88]\n\t" - "ldr r5, [%[a], #92]\n\t" - "ldr r6, [%[b], #88]\n\t" - "ldr r7, [%[b], #92]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #88]\n\t" - "str r5, [%[r], #92]\n\t" - "ldr r4, [%[a], #96]\n\t" - "ldr r5, [%[a], #100]\n\t" - "ldr r6, [%[b], #96]\n\t" - "ldr r7, [%[b], #100]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #96]\n\t" - "str r5, [%[r], #100]\n\t" - "ldr r4, [%[a], #104]\n\t" - "ldr r5, [%[a], #108]\n\t" - "ldr r6, [%[b], #104]\n\t" - "ldr r7, [%[b], #108]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #104]\n\t" - "str r5, [%[r], #108]\n\t" - "ldr r4, [%[a], #112]\n\t" - "ldr r5, [%[a], #116]\n\t" - "ldr r6, [%[b], #112]\n\t" - "ldr r7, [%[b], #116]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #112]\n\t" - "str r5, [%[r], #116]\n\t" - "ldr r4, [%[a], #120]\n\t" - "ldr r5, [%[a], #124]\n\t" - "ldr r6, [%[b], #120]\n\t" - "ldr r7, [%[b], #124]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #120]\n\t" - "str r5, [%[r], #124]\n\t" -#ifdef __clang__ - "sbcs r3, r3\n\t" -#else - "sbc r3, r3\n\t" -#endif -#ifdef __clang__ - "adds %[a], %[a], #0x80\n\t" -#else - "add %[a], %[a], #0x80\n\t" -#endif -#ifdef __clang__ - "adds %[b], %[b], #0x80\n\t" -#else - "add %[b], %[b], #0x80\n\t" -#endif -#ifdef __clang__ - "adds %[r], %[r], #0x80\n\t" -#else - "add %[r], %[r], #0x80\n\t" -#endif - "movs r6, #0\n\t" -#ifdef __clang__ - "subs r6, r6, r3\n\t" -#else - "sub r6, r6, r3\n\t" -#endif - "ldr r4, [%[a]]\n\t" - "ldr r5, [%[a], #4]\n\t" - "ldr r6, [%[b]]\n\t" - "ldr r7, [%[b], #4]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r]]\n\t" - "str r5, [%[r], #4]\n\t" - "ldr r4, [%[a], #8]\n\t" - "ldr r5, [%[a], #12]\n\t" - "ldr r6, [%[b], #8]\n\t" - "ldr r7, [%[b], #12]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #8]\n\t" - "str r5, [%[r], #12]\n\t" - "ldr r4, [%[a], #16]\n\t" - "ldr r5, [%[a], #20]\n\t" - "ldr r6, [%[b], #16]\n\t" - "ldr r7, [%[b], #20]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #16]\n\t" - "str r5, [%[r], #20]\n\t" - "ldr r4, [%[a], #24]\n\t" - "ldr r5, [%[a], #28]\n\t" - "ldr r6, [%[b], #24]\n\t" - "ldr r7, [%[b], #28]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #24]\n\t" - "str r5, [%[r], #28]\n\t" - "ldr r4, [%[a], #32]\n\t" - "ldr r5, [%[a], #36]\n\t" - "ldr r6, [%[b], #32]\n\t" - "ldr r7, [%[b], #36]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #32]\n\t" - "str r5, [%[r], #36]\n\t" - "ldr r4, [%[a], #40]\n\t" - "ldr r5, [%[a], #44]\n\t" - "ldr r6, [%[b], #40]\n\t" - "ldr r7, [%[b], #44]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #40]\n\t" - "str r5, [%[r], #44]\n\t" - "ldr r4, [%[a], #48]\n\t" - "ldr r5, [%[a], #52]\n\t" - "ldr r6, [%[b], #48]\n\t" - "ldr r7, [%[b], #52]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #48]\n\t" - "str r5, [%[r], #52]\n\t" - "ldr r4, [%[a], #56]\n\t" - "ldr r5, [%[a], #60]\n\t" - "ldr r6, [%[b], #56]\n\t" - "ldr r7, [%[b], #60]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #56]\n\t" - "str r5, [%[r], #60]\n\t" - "ldr r4, [%[a], #64]\n\t" - "ldr r5, [%[a], #68]\n\t" - "ldr r6, [%[b], #64]\n\t" - "ldr r7, [%[b], #68]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #64]\n\t" - "str r5, [%[r], #68]\n\t" - "ldr r4, [%[a], #72]\n\t" - "ldr r5, [%[a], #76]\n\t" - "ldr r6, [%[b], #72]\n\t" - "ldr r7, [%[b], #76]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #72]\n\t" - "str r5, [%[r], #76]\n\t" - "ldr r4, [%[a], #80]\n\t" - "ldr r5, [%[a], #84]\n\t" - "ldr r6, [%[b], #80]\n\t" - "ldr r7, [%[b], #84]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #80]\n\t" - "str r5, [%[r], #84]\n\t" - "ldr r4, [%[a], #88]\n\t" - "ldr r5, [%[a], #92]\n\t" - "ldr r6, [%[b], #88]\n\t" - "ldr r7, [%[b], #92]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #88]\n\t" - "str r5, [%[r], #92]\n\t" - "ldr r4, [%[a], #96]\n\t" - "ldr r5, [%[a], #100]\n\t" - "ldr r6, [%[b], #96]\n\t" - "ldr r7, [%[b], #100]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #96]\n\t" - "str r5, [%[r], #100]\n\t" - "ldr r4, [%[a], #104]\n\t" - "ldr r5, [%[a], #108]\n\t" - "ldr r6, [%[b], #104]\n\t" - "ldr r7, [%[b], #108]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #104]\n\t" - "str r5, [%[r], #108]\n\t" - "ldr r4, [%[a], #112]\n\t" - "ldr r5, [%[a], #116]\n\t" - "ldr r6, [%[b], #112]\n\t" - "ldr r7, [%[b], #116]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #112]\n\t" - "str r5, [%[r], #116]\n\t" - "ldr r4, [%[a], #120]\n\t" - "ldr r5, [%[a], #124]\n\t" - "ldr r6, [%[b], #120]\n\t" - "ldr r7, [%[b], #124]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #120]\n\t" - "str r5, [%[r], #124]\n\t" -#ifdef __clang__ - "sbcs r3, r3\n\t" -#else - "sbc r3, r3\n\t" -#endif -#ifdef __clang__ - "adds %[a], %[a], #0x80\n\t" -#else - "add %[a], %[a], #0x80\n\t" -#endif -#ifdef __clang__ - "adds %[b], %[b], #0x80\n\t" -#else - "add %[b], %[b], #0x80\n\t" -#endif -#ifdef __clang__ - "adds %[r], %[r], #0x80\n\t" -#else - "add %[r], %[r], #0x80\n\t" -#endif - "movs r6, #0\n\t" -#ifdef __clang__ - "subs r6, r6, r3\n\t" -#else - "sub r6, r6, r3\n\t" -#endif - "ldr r4, [%[a]]\n\t" - "ldr r5, [%[a], #4]\n\t" - "ldr r6, [%[b]]\n\t" - "ldr r7, [%[b], #4]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r]]\n\t" - "str r5, [%[r], #4]\n\t" - "ldr r4, [%[a], #8]\n\t" - "ldr r5, [%[a], #12]\n\t" - "ldr r6, [%[b], #8]\n\t" - "ldr r7, [%[b], #12]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #8]\n\t" - "str r5, [%[r], #12]\n\t" - "ldr r4, [%[a], #16]\n\t" - "ldr r5, [%[a], #20]\n\t" - "ldr r6, [%[b], #16]\n\t" - "ldr r7, [%[b], #20]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #16]\n\t" - "str r5, [%[r], #20]\n\t" - "ldr r4, [%[a], #24]\n\t" - "ldr r5, [%[a], #28]\n\t" - "ldr r6, [%[b], #24]\n\t" - "ldr r7, [%[b], #28]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #24]\n\t" - "str r5, [%[r], #28]\n\t" - "ldr r4, [%[a], #32]\n\t" - "ldr r5, [%[a], #36]\n\t" - "ldr r6, [%[b], #32]\n\t" - "ldr r7, [%[b], #36]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #32]\n\t" - "str r5, [%[r], #36]\n\t" - "ldr r4, [%[a], #40]\n\t" - "ldr r5, [%[a], #44]\n\t" - "ldr r6, [%[b], #40]\n\t" - "ldr r7, [%[b], #44]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #40]\n\t" - "str r5, [%[r], #44]\n\t" - "ldr r4, [%[a], #48]\n\t" - "ldr r5, [%[a], #52]\n\t" - "ldr r6, [%[b], #48]\n\t" - "ldr r7, [%[b], #52]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #48]\n\t" - "str r5, [%[r], #52]\n\t" - "ldr r4, [%[a], #56]\n\t" - "ldr r5, [%[a], #60]\n\t" - "ldr r6, [%[b], #56]\n\t" - "ldr r7, [%[b], #60]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #56]\n\t" - "str r5, [%[r], #60]\n\t" - "ldr r4, [%[a], #64]\n\t" - "ldr r5, [%[a], #68]\n\t" - "ldr r6, [%[b], #64]\n\t" - "ldr r7, [%[b], #68]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #64]\n\t" - "str r5, [%[r], #68]\n\t" - "ldr r4, [%[a], #72]\n\t" - "ldr r5, [%[a], #76]\n\t" - "ldr r6, [%[b], #72]\n\t" - "ldr r7, [%[b], #76]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #72]\n\t" - "str r5, [%[r], #76]\n\t" - "ldr r4, [%[a], #80]\n\t" - "ldr r5, [%[a], #84]\n\t" - "ldr r6, [%[b], #80]\n\t" - "ldr r7, [%[b], #84]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #80]\n\t" - "str r5, [%[r], #84]\n\t" - "ldr r4, [%[a], #88]\n\t" - "ldr r5, [%[a], #92]\n\t" - "ldr r6, [%[b], #88]\n\t" - "ldr r7, [%[b], #92]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #88]\n\t" - "str r5, [%[r], #92]\n\t" - "ldr r4, [%[a], #96]\n\t" - "ldr r5, [%[a], #100]\n\t" - "ldr r6, [%[b], #96]\n\t" - "ldr r7, [%[b], #100]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #96]\n\t" - "str r5, [%[r], #100]\n\t" - "ldr r4, [%[a], #104]\n\t" - "ldr r5, [%[a], #108]\n\t" - "ldr r6, [%[b], #104]\n\t" - "ldr r7, [%[b], #108]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #104]\n\t" - "str r5, [%[r], #108]\n\t" - "ldr r4, [%[a], #112]\n\t" - "ldr r5, [%[a], #116]\n\t" - "ldr r6, [%[b], #112]\n\t" - "ldr r7, [%[b], #116]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #112]\n\t" - "str r5, [%[r], #116]\n\t" - "ldr r4, [%[a], #120]\n\t" - "ldr r5, [%[a], #124]\n\t" - "ldr r6, [%[b], #120]\n\t" - "ldr r7, [%[b], #124]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #120]\n\t" - "str r5, [%[r], #124]\n\t" -#ifdef __clang__ - "sbcs r3, r3\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) + "sbcs r4, r6\n\t" #else - "sbc r3, r3\n\t" + "sbc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs %[r], %[r], %[r]\n\t" +#elif defined(__clang__) + "sbcs %[r], %[r]\n\t" +#else + "sbc %[r], %[r]\n\t" #endif - "movs %[r], r3\n\t" : [r] "+r" (r), [a] "+r" (a), [b] "+r" (b) : - : "memory", "r3", "r4", "r5", "r6", "r7" + : "memory", "r3", "r4", "r5", "r6" ); return (uint32_t)(size_t)r; } @@ -29709,12 +90632,12 @@ SP_NOINLINE static sp_digit div_4096_word_128(sp_digit d1, sp_digit d0, { __asm__ __volatile__ ( "movs r3, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, %[div], #1\n\t" #else "lsr r5, %[div], #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r5, r5, #1\n\t" #else "add r5, r5, #1\n\t" @@ -29723,326 +90646,307 @@ SP_NOINLINE static sp_digit div_4096_word_128(sp_digit d1, sp_digit d0, "mov r9, %[d1]\n\t" "# Do top 32\n\t" "movs r6, r5\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r6, r6, %[d1]\n\t" #else "sub r6, r6, %[d1]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r6\n\t" +#elif defined(__clang__) "sbcs r6, r6\n\t" #else "sbc r6, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r3\n\t" #else "add r3, r3, r3\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r3, r3, r6\n\t" #else "sub r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, r5\n\t" +#elif defined(__clang__) "ands r6, r5\n\t" #else "and r6, r5\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[d1], %[d1], r6\n\t" #else "sub %[d1], %[d1], r6\n\t" #endif - "\n\t" "movs r4, #29\n\t" "\n" - "L_div_4096_word_128_loop_%=: \n\t" -#ifdef __clang__ + "L_div_4096_word_128_loop_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls %[d0], %[d0], #1\n\t" #else "lsl %[d0], %[d0], #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs %[d1], %[d1], %[d1]\n\t" +#elif defined(__clang__) "adcs %[d1], %[d1]\n\t" #else "adc %[d1], %[d1]\n\t" #endif "movs r6, r5\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r6, r6, %[d1]\n\t" #else "sub r6, r6, %[d1]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r6\n\t" +#elif defined(__clang__) "sbcs r6, r6\n\t" #else "sbc r6, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r3\n\t" #else "add r3, r3, r3\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r3, r3, r6\n\t" #else "sub r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, r5\n\t" +#elif defined(__clang__) "ands r6, r5\n\t" #else "and r6, r5\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[d1], %[d1], r6\n\t" #else "sub %[d1], %[d1], r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r4, r4, #1\n\t" #else "sub r4, r4, #1\n\t" #endif "bpl L_div_4096_word_128_loop_%=\n\t" "movs r7, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r3\n\t" #else "add r3, r3, r3\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, #1\n\t" #else "add r3, r3, #1\n\t" #endif "# r * div - Start\n\t" -#ifdef __clang__ - "lsls %[d1], r3, #16\n\t" -#else - "lsl %[d1], r3, #16\n\t" -#endif -#ifdef __clang__ - "lsls r4, %[div], #16\n\t" -#else - "lsl r4, %[div], #16\n\t" -#endif -#ifdef __clang__ - "lsrs %[d1], %[d1], #16\n\t" -#else - "lsr %[d1], %[d1], #16\n\t" -#endif -#ifdef __clang__ - "lsrs r4, r4, #16\n\t" -#else - "lsr r4, r4, #16\n\t" -#endif -#ifdef __clang__ + "uxth %[d1], r3\n\t" + "uxth r4, %[div]\n\t" +#ifdef WOLFSSL_KEIL + "muls r4, %[d1], r4\n\t" +#elif defined(__clang__) "muls r4, %[d1]\n\t" #else "mul r4, %[d1]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, %[div], #16\n\t" #else "lsr r6, %[div], #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls %[d1], r6, %[d1]\n\t" +#elif defined(__clang__) "muls %[d1], r6\n\t" #else "mul %[d1], r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, %[d1], #16\n\t" #else "lsr r5, %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls %[d1], %[d1], #16\n\t" #else "lsl %[d1], %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, %[d1]\n\t" #else "add r4, r4, %[d1]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs %[d1], r3, #16\n\t" #else "lsr %[d1], r3, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r6, %[d1], r6\n\t" +#elif defined(__clang__) "muls r6, %[d1]\n\t" #else "mul r6, %[d1]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r5, r5, r6\n\t" #else "add r5, r5, r6\n\t" #endif -#ifdef __clang__ - "lsls r6, %[div], #16\n\t" -#else - "lsl r6, %[div], #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ + "uxth r6, %[div]\n\t" +#ifdef WOLFSSL_KEIL + "muls %[d1], r6, %[d1]\n\t" +#elif defined(__clang__) "muls %[d1], r6\n\t" #else "mul %[d1], r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, %[d1], #16\n\t" #else "lsr r6, %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls %[d1], %[d1], #16\n\t" #else "lsl %[d1], %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, %[d1]\n\t" #else "add r4, r4, %[d1]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r6\n\t" +#elif defined(__clang__) "adcs r5, r6\n\t" #else "adc r5, r6\n\t" #endif "# r * div - Done\n\t" "mov %[d1], r8\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[d1], %[d1], r4\n\t" #else "sub %[d1], %[d1], r4\n\t" #endif "movs r4, %[d1]\n\t" "mov %[d1], r9\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs %[d1], %[d1], r5\n\t" +#elif defined(__clang__) "sbcs %[d1], r5\n\t" #else "sbc %[d1], r5\n\t" #endif "movs r5, %[d1]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r5\n\t" #else "add r3, r3, r5\n\t" #endif "# r * div - Start\n\t" -#ifdef __clang__ - "lsls %[d1], r3, #16\n\t" -#else - "lsl %[d1], r3, #16\n\t" -#endif -#ifdef __clang__ - "lsls r4, %[div], #16\n\t" -#else - "lsl r4, %[div], #16\n\t" -#endif -#ifdef __clang__ - "lsrs %[d1], %[d1], #16\n\t" -#else - "lsr %[d1], %[d1], #16\n\t" -#endif -#ifdef __clang__ - "lsrs r4, r4, #16\n\t" -#else - "lsr r4, r4, #16\n\t" -#endif -#ifdef __clang__ + "uxth %[d1], r3\n\t" + "uxth r4, %[div]\n\t" +#ifdef WOLFSSL_KEIL + "muls r4, %[d1], r4\n\t" +#elif defined(__clang__) "muls r4, %[d1]\n\t" #else "mul r4, %[d1]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, %[div], #16\n\t" #else "lsr r6, %[div], #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls %[d1], r6, %[d1]\n\t" +#elif defined(__clang__) "muls %[d1], r6\n\t" #else "mul %[d1], r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, %[d1], #16\n\t" #else "lsr r5, %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls %[d1], %[d1], #16\n\t" #else "lsl %[d1], %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, %[d1]\n\t" #else "add r4, r4, %[d1]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs %[d1], r3, #16\n\t" #else "lsr %[d1], r3, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r6, %[d1], r6\n\t" +#elif defined(__clang__) "muls r6, %[d1]\n\t" #else "mul r6, %[d1]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r5, r5, r6\n\t" #else "add r5, r5, r6\n\t" #endif -#ifdef __clang__ - "lsls r6, %[div], #16\n\t" -#else - "lsl r6, %[div], #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ + "uxth r6, %[div]\n\t" +#ifdef WOLFSSL_KEIL + "muls %[d1], r6, %[d1]\n\t" +#elif defined(__clang__) "muls %[d1], r6\n\t" #else "mul %[d1], r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, %[d1], #16\n\t" #else "lsr r6, %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls %[d1], %[d1], #16\n\t" #else "lsl %[d1], %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, %[d1]\n\t" #else "add r4, r4, %[d1]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r6\n\t" +#elif defined(__clang__) "adcs r5, r6\n\t" #else "adc r5, r6\n\t" @@ -30050,124 +90954,115 @@ SP_NOINLINE static sp_digit div_4096_word_128(sp_digit d1, sp_digit d0, "# r * div - Done\n\t" "mov %[d1], r8\n\t" "mov r6, r9\n\t" +#ifdef WOLFSSL_KEIL + "subs r4, %[d1], r4\n\t" +#else #ifdef __clang__ "subs r4, %[d1], r4\n\t" #else "sub r4, %[d1], r4\n\t" #endif -#ifdef __clang__ +#endif +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r5\n\t" +#elif defined(__clang__) "sbcs r6, r5\n\t" #else "sbc r6, r5\n\t" #endif "movs r5, r6\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r5\n\t" #else "add r3, r3, r5\n\t" #endif "# r * div - Start\n\t" -#ifdef __clang__ - "lsls %[d1], r3, #16\n\t" -#else - "lsl %[d1], r3, #16\n\t" -#endif -#ifdef __clang__ - "lsls r4, %[div], #16\n\t" -#else - "lsl r4, %[div], #16\n\t" -#endif -#ifdef __clang__ - "lsrs %[d1], %[d1], #16\n\t" -#else - "lsr %[d1], %[d1], #16\n\t" -#endif -#ifdef __clang__ - "lsrs r4, r4, #16\n\t" -#else - "lsr r4, r4, #16\n\t" -#endif -#ifdef __clang__ + "uxth %[d1], r3\n\t" + "uxth r4, %[div]\n\t" +#ifdef WOLFSSL_KEIL + "muls r4, %[d1], r4\n\t" +#elif defined(__clang__) "muls r4, %[d1]\n\t" #else "mul r4, %[d1]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, %[div], #16\n\t" #else "lsr r6, %[div], #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls %[d1], r6, %[d1]\n\t" +#elif defined(__clang__) "muls %[d1], r6\n\t" #else "mul %[d1], r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, %[d1], #16\n\t" #else "lsr r5, %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls %[d1], %[d1], #16\n\t" #else "lsl %[d1], %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, %[d1]\n\t" #else "add r4, r4, %[d1]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs %[d1], r3, #16\n\t" #else "lsr %[d1], r3, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r6, %[d1], r6\n\t" +#elif defined(__clang__) "muls r6, %[d1]\n\t" #else "mul r6, %[d1]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r5, r5, r6\n\t" #else "add r5, r5, r6\n\t" #endif -#ifdef __clang__ - "lsls r6, %[div], #16\n\t" -#else - "lsl r6, %[div], #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ + "uxth r6, %[div]\n\t" +#ifdef WOLFSSL_KEIL + "muls %[d1], r6, %[d1]\n\t" +#elif defined(__clang__) "muls %[d1], r6\n\t" #else "mul %[d1], r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, %[d1], #16\n\t" #else "lsr r6, %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls %[d1], %[d1], #16\n\t" #else "lsl %[d1], %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, %[d1]\n\t" #else "add r4, r4, %[d1]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r6\n\t" +#elif defined(__clang__) "adcs r5, r6\n\t" #else "adc r5, r6\n\t" @@ -30175,34 +91070,42 @@ SP_NOINLINE static sp_digit div_4096_word_128(sp_digit d1, sp_digit d0, "# r * div - Done\n\t" "mov %[d1], r8\n\t" "mov r6, r9\n\t" +#ifdef WOLFSSL_KEIL + "subs r4, %[d1], r4\n\t" +#else #ifdef __clang__ "subs r4, %[d1], r4\n\t" #else "sub r4, %[d1], r4\n\t" #endif -#ifdef __clang__ +#endif +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r5\n\t" +#elif defined(__clang__) "sbcs r6, r5\n\t" #else "sbc r6, r5\n\t" #endif "movs r5, r6\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r5\n\t" #else "add r3, r3, r5\n\t" #endif "movs r6, %[div]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r6, r6, r4\n\t" #else "sub r6, r6, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r6\n\t" +#elif defined(__clang__) "sbcs r6, r6\n\t" #else "sbc r6, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r3, r3, r6\n\t" #else "sub r3, r3, r6\n\t" @@ -30319,83 +91222,95 @@ SP_NOINLINE static sp_int32 sp_4096_cmp_128(const sp_digit* a, __asm__ __volatile__ ( "movs r2, #0\n\t" "movs r3, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "mvns r3, r3\n\t" #else "mvn r3, r3\n\t" #endif "movs r6, #0xff\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r6, r6, #0xfd\n\t" #else "add r6, r6, #0xfd\n\t" #endif "\n" - "L_sp_4096_cmp_128_words_%=: \n\t" + "L_sp_4096_cmp_128_words_%=:\n\t" "ldr r7, [%[a], r6]\n\t" "ldr r5, [%[b], r6]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, r3\n\t" +#elif defined(__clang__) "ands r7, r3\n\t" #else "and r7, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r3\n\t" +#elif defined(__clang__) "ands r5, r3\n\t" #else "and r5, r3\n\t" #endif "movs r4, r7\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r7, r7, r5\n\t" #else "sub r7, r7, r5\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r7, r7, r7\n\t" +#elif defined(__clang__) "sbcs r7, r7\n\t" #else "sbc r7, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r7\n\t" #else "add r2, r2, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "mvns r7, r7\n\t" #else "mvn r7, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r3, r3, r7\n\t" +#elif defined(__clang__) "ands r3, r7\n\t" #else "and r3, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r5, r5, r4\n\t" #else "sub r5, r5, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r7, r7, r7\n\t" +#elif defined(__clang__) "sbcs r7, r7\n\t" #else "sbc r7, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r2, r2, r7\n\t" #else "sub r2, r2, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "mvns r7, r7\n\t" #else "mvn r7, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r3, r3, r7\n\t" +#elif defined(__clang__) "ands r3, r7\n\t" #else "and r3, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r6, r6, #4\n\t" #else "sub r6, r6, #4\n\t" @@ -30883,7 +91798,7 @@ SP_NOINLINE static sp_digit sp_4096_cond_add_64(sp_digit* r, const sp_digit* a, __asm__ __volatile__ ( "movs r4, #0\n\t" "movs r5, #0xff\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r5, r5, #1\n\t" #else "add r5, r5, #1\n\t" @@ -30891,38 +91806,44 @@ SP_NOINLINE static sp_digit sp_4096_cond_add_64(sp_digit* r, const sp_digit* a, "mov r8, r5\n\t" "movs r7, #0\n\t" "\n" - "L_sp_4096_cond_add_64_words_%=: \n\t" + "L_sp_4096_cond_add_64_words_%=:\n\t" "ldr r6, [%[b], r7]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, %[m]\n\t" +#elif defined(__clang__) "ands r6, %[m]\n\t" #else "and r6, %[m]\n\t" #endif "movs r5, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r5, r5, #1\n\t" #else "sub r5, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r5, r5, r4\n\t" #else "add r5, r5, r4\n\t" #endif "ldr r5, [%[a], r7]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r6\n\t" +#elif defined(__clang__) "adcs r5, r6\n\t" #else "adc r5, r6\n\t" #endif "movs r4, #0\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r4\n\t" +#elif defined(__clang__) "adcs r4, r4\n\t" #else "adc r4, r4\n\t" #endif "str r5, [%[r], r7]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r7, r7, #4\n\t" #else "add r7, r7, #4\n\t" @@ -31255,2907 +92176,3161 @@ static void sp_4096_lshift_128(sp_digit* r, const sp_digit* a, byte n) { __asm__ __volatile__ ( "movs r7, #31\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r7, r7, %[n]\n\t" #else "sub r7, r7, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[a], %[a], #0xff\n\t" #else "add %[a], %[a], #0xff\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[r], %[r], #0xff\n\t" #else "add %[r], %[r], #0xff\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[a], %[a], #0xc1\n\t" #else "add %[a], %[a], #0xc1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[r], %[r], #0xc1\n\t" #else "add %[r], %[r], #0xc1\n\t" #endif "ldr r4, [%[a], #60]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r4, #1\n\t" #else "lsr r5, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r5, r7\n\t" #else "lsr r5, r5, r7\n\t" #endif "ldr r3, [%[a], #56]\n\t" "str r5, [%[r], #64]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #52]\n\t" "str r4, [%[r], #60]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #48]\n\t" "str r3, [%[r], #56]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #44]\n\t" "str r5, [%[r], #52]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #40]\n\t" "str r4, [%[r], #48]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #36]\n\t" "str r3, [%[r], #44]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #32]\n\t" "str r5, [%[r], #40]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #28]\n\t" "str r4, [%[r], #36]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #24]\n\t" "str r3, [%[r], #32]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #20]\n\t" "str r5, [%[r], #28]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #16]\n\t" "str r4, [%[r], #24]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #12]\n\t" "str r3, [%[r], #20]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #8]\n\t" "str r5, [%[r], #16]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #4]\n\t" "str r4, [%[r], #12]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a]]\n\t" "str r3, [%[r], #8]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[a], %[a], #0x40\n\t" #else "sub %[a], %[a], #0x40\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[r], %[r], #0x40\n\t" #else "sub %[r], %[r], #0x40\n\t" #endif "ldr r3, [%[a], #60]\n\t" "str r5, [%[r], #68]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #56]\n\t" "str r4, [%[r], #64]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #52]\n\t" "str r3, [%[r], #60]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #48]\n\t" "str r5, [%[r], #56]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #44]\n\t" "str r4, [%[r], #52]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #40]\n\t" "str r3, [%[r], #48]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #36]\n\t" "str r5, [%[r], #44]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #32]\n\t" "str r4, [%[r], #40]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #28]\n\t" "str r3, [%[r], #36]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #24]\n\t" "str r5, [%[r], #32]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #20]\n\t" "str r4, [%[r], #28]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #16]\n\t" "str r3, [%[r], #24]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #12]\n\t" "str r5, [%[r], #20]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #8]\n\t" "str r4, [%[r], #16]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #4]\n\t" "str r3, [%[r], #12]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a]]\n\t" "str r5, [%[r], #8]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[a], %[a], #0x40\n\t" #else "sub %[a], %[a], #0x40\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[r], %[r], #0x40\n\t" #else "sub %[r], %[r], #0x40\n\t" #endif "ldr r5, [%[a], #60]\n\t" "str r4, [%[r], #68]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #56]\n\t" "str r3, [%[r], #64]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #52]\n\t" "str r5, [%[r], #60]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #48]\n\t" "str r4, [%[r], #56]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #44]\n\t" "str r3, [%[r], #52]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #40]\n\t" "str r5, [%[r], #48]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #36]\n\t" "str r4, [%[r], #44]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #32]\n\t" "str r3, [%[r], #40]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #28]\n\t" "str r5, [%[r], #36]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #24]\n\t" "str r4, [%[r], #32]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #20]\n\t" "str r3, [%[r], #28]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #16]\n\t" "str r5, [%[r], #24]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #12]\n\t" "str r4, [%[r], #20]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #8]\n\t" "str r3, [%[r], #16]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #4]\n\t" "str r5, [%[r], #12]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a]]\n\t" "str r4, [%[r], #8]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[a], %[a], #0x40\n\t" #else "sub %[a], %[a], #0x40\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[r], %[r], #0x40\n\t" #else "sub %[r], %[r], #0x40\n\t" #endif "ldr r4, [%[a], #60]\n\t" "str r3, [%[r], #68]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #56]\n\t" "str r5, [%[r], #64]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #52]\n\t" "str r4, [%[r], #60]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #48]\n\t" "str r3, [%[r], #56]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #44]\n\t" "str r5, [%[r], #52]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #40]\n\t" "str r4, [%[r], #48]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #36]\n\t" "str r3, [%[r], #44]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #32]\n\t" "str r5, [%[r], #40]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #28]\n\t" "str r4, [%[r], #36]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #24]\n\t" "str r3, [%[r], #32]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #20]\n\t" "str r5, [%[r], #28]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #16]\n\t" "str r4, [%[r], #24]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #12]\n\t" "str r3, [%[r], #20]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #8]\n\t" "str r5, [%[r], #16]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #4]\n\t" "str r4, [%[r], #12]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a]]\n\t" "str r3, [%[r], #8]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[a], %[a], #0x40\n\t" #else "sub %[a], %[a], #0x40\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[r], %[r], #0x40\n\t" #else "sub %[r], %[r], #0x40\n\t" #endif "ldr r3, [%[a], #60]\n\t" "str r5, [%[r], #68]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #56]\n\t" "str r4, [%[r], #64]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #52]\n\t" "str r3, [%[r], #60]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #48]\n\t" "str r5, [%[r], #56]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #44]\n\t" "str r4, [%[r], #52]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #40]\n\t" "str r3, [%[r], #48]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #36]\n\t" "str r5, [%[r], #44]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #32]\n\t" "str r4, [%[r], #40]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #28]\n\t" "str r3, [%[r], #36]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #24]\n\t" "str r5, [%[r], #32]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #20]\n\t" "str r4, [%[r], #28]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #16]\n\t" "str r3, [%[r], #24]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #12]\n\t" "str r5, [%[r], #20]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #8]\n\t" "str r4, [%[r], #16]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #4]\n\t" "str r3, [%[r], #12]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a]]\n\t" "str r5, [%[r], #8]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[a], %[a], #0x40\n\t" #else "sub %[a], %[a], #0x40\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[r], %[r], #0x40\n\t" #else "sub %[r], %[r], #0x40\n\t" #endif "ldr r5, [%[a], #60]\n\t" "str r4, [%[r], #68]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #56]\n\t" "str r3, [%[r], #64]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #52]\n\t" "str r5, [%[r], #60]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #48]\n\t" "str r4, [%[r], #56]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #44]\n\t" "str r3, [%[r], #52]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #40]\n\t" "str r5, [%[r], #48]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #36]\n\t" "str r4, [%[r], #44]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #32]\n\t" "str r3, [%[r], #40]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #28]\n\t" "str r5, [%[r], #36]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #24]\n\t" "str r4, [%[r], #32]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #20]\n\t" "str r3, [%[r], #28]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #16]\n\t" "str r5, [%[r], #24]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #12]\n\t" "str r4, [%[r], #20]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #8]\n\t" "str r3, [%[r], #16]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #4]\n\t" "str r5, [%[r], #12]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a]]\n\t" "str r4, [%[r], #8]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[a], %[a], #0x40\n\t" #else "sub %[a], %[a], #0x40\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[r], %[r], #0x40\n\t" #else "sub %[r], %[r], #0x40\n\t" #endif "ldr r4, [%[a], #60]\n\t" "str r3, [%[r], #68]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #56]\n\t" "str r5, [%[r], #64]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #52]\n\t" "str r4, [%[r], #60]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #48]\n\t" "str r3, [%[r], #56]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #44]\n\t" "str r5, [%[r], #52]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #40]\n\t" "str r4, [%[r], #48]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #36]\n\t" "str r3, [%[r], #44]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #32]\n\t" "str r5, [%[r], #40]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #28]\n\t" "str r4, [%[r], #36]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #24]\n\t" "str r3, [%[r], #32]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #20]\n\t" "str r5, [%[r], #28]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #16]\n\t" "str r4, [%[r], #24]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #12]\n\t" "str r3, [%[r], #20]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #8]\n\t" "str r5, [%[r], #16]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #4]\n\t" "str r4, [%[r], #12]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a]]\n\t" "str r3, [%[r], #8]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[a], %[a], #0x40\n\t" #else "sub %[a], %[a], #0x40\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[r], %[r], #0x40\n\t" #else "sub %[r], %[r], #0x40\n\t" #endif "ldr r3, [%[a], #60]\n\t" "str r5, [%[r], #68]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #56]\n\t" "str r4, [%[r], #64]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #52]\n\t" "str r3, [%[r], #60]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #48]\n\t" "str r5, [%[r], #56]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #44]\n\t" "str r4, [%[r], #52]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #40]\n\t" "str r3, [%[r], #48]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #36]\n\t" "str r5, [%[r], #44]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #32]\n\t" "str r4, [%[r], #40]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #28]\n\t" "str r3, [%[r], #36]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #24]\n\t" "str r5, [%[r], #32]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #20]\n\t" "str r4, [%[r], #28]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #16]\n\t" "str r3, [%[r], #24]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a], #12]\n\t" "str r5, [%[r], #20]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r5, [%[a], #8]\n\t" "str r4, [%[r], #16]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r5, #1\n\t" #else "lsr r6, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r5, %[n]\n\t" #else "lsl r5, r5, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r6\n\t" +#elif defined(__clang__) "orrs r3, r6\n\t" #else "orr r3, r6\n\t" #endif "ldr r4, [%[a], #4]\n\t" "str r3, [%[r], #12]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, %[n]\n\t" #else "lsl r4, r4, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r3, [%[a]]\n\t" "str r5, [%[r], #8]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r3, #1\n\t" #else "lsr r6, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, %[n]\n\t" #else "lsl r3, r3, %[n]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, r7\n\t" #else "lsr r6, r6, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" @@ -34460,33 +95635,37 @@ SP_NOINLINE static void sp_256_mul_8(sp_digit* r, const sp_digit* a, "add r6, r6, r9\n\t" "mov r12, r6\n\t" "\n" - "L_sp_256_mul_8_words_%=: \n\t" + "L_sp_256_mul_8_words_%=:\n\t" "movs %[tmp], #0\n\t" "movs r5, #0\n\t" "movs r6, #28\n\t" "mov %[a], r8\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[a], %[a], r6\n\t" #else "sub %[a], %[a], r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r6\n\t" +#elif defined(__clang__) "sbcs r6, r6\n\t" #else "sbc r6, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "mvns r6, r6\n\t" #else "mvn r6, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands %[a], %[a], r6\n\t" +#elif defined(__clang__) "ands %[a], r6\n\t" #else "and %[a], r6\n\t" #endif "mov %[b], r8\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[b], %[b], %[a]\n\t" #else "sub %[b], %[b], %[a]\n\t" @@ -34494,161 +95673,153 @@ SP_NOINLINE static void sp_256_mul_8(sp_digit* r, const sp_digit* a, "add %[a], %[a], r9\n\t" "add %[b], %[b], r10\n\t" "\n" - "L_sp_256_mul_8_mul_%=: \n\t" + "L_sp_256_mul_8_mul_%=:\n\t" "# Multiply Start\n\t" - "ldr r6, [%[a]]\n\t" - "ldr r7, [%[b]]\n\t" -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsls r7, r7, #16\n\t" -#else - "lsl r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ + "ldrh r6, [%[a]]\n\t" + "ldrh r7, [%[b]]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) "muls r7, r6\n\t" #else "mul r7, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r7\n\t" #else "add r3, r3, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[tmp]\n\t" +#elif defined(__clang__) "adcs r4, %[tmp]\n\t" #else "adc r4, %[tmp]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[tmp]\n\t" +#elif defined(__clang__) "adcs r5, %[tmp]\n\t" #else "adc r5, %[tmp]\n\t" #endif "ldr r7, [%[b]]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r7, #16\n\t" #else "lsr r7, r7, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) "muls r6, r7\n\t" #else "mul r6, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r6, #16\n\t" #else "lsr r7, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #16\n\t" #else "lsl r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[tmp]\n\t" +#elif defined(__clang__) "adcs r5, %[tmp]\n\t" #else "adc r5, %[tmp]\n\t" #endif "ldr r6, [%[a]]\n\t" "ldr r7, [%[b]]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, #16\n\t" #else "lsr r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r7, #16\n\t" #else "lsr r7, r7, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) "muls r7, r6\n\t" #else "mul r7, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, r7\n\t" #else "add r4, r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[tmp]\n\t" +#elif defined(__clang__) "adcs r5, %[tmp]\n\t" #else "adc r5, %[tmp]\n\t" #endif - "ldr r7, [%[b]]\n\t" -#ifdef __clang__ - "lsls r7, r7, #16\n\t" -#else - "lsl r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ + "ldrh r7, [%[b]]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) "muls r6, r7\n\t" #else "mul r6, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r6, #16\n\t" #else "lsr r7, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #16\n\t" #else "lsl r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[tmp]\n\t" +#elif defined(__clang__) "adcs r5, %[tmp]\n\t" #else "adc r5, %[tmp]\n\t" #endif "# Multiply Done\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[a], %[a], #4\n\t" #else "add %[a], %[a], #4\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[b], %[b], #4\n\t" #else "sub %[b], %[b], #4\n\t" @@ -34660,13 +95831,13 @@ SP_NOINLINE static void sp_256_mul_8(sp_digit* r, const sp_digit* a, "cmp %[a], r6\n\t" "ble L_sp_256_mul_8_mul_%=\n\t" "\n" - "L_sp_256_mul_8_done_mul_%=: \n\t" + "L_sp_256_mul_8_done_mul_%=:\n\t" "mov %[tmp], r11\n\t" "mov r7, r8\n\t" "str r3, [%[tmp], r7]\n\t" "movs r3, r4\n\t" "movs r4, r5\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r7, r7, #4\n\t" #else "add r7, r7, #4\n\t" @@ -34700,7 +95871,7 @@ SP_NOINLINE static void sp_256_sqr_8(sp_digit* r, const sp_digit* a) "mov r8, r3\n\t" "mov r11, %[r]\n\t" "movs r6, #0x40\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "negs r6, r6\n\t" #else "neg r6, r6\n\t" @@ -34709,32 +95880,36 @@ SP_NOINLINE static void sp_256_sqr_8(sp_digit* r, const sp_digit* a) "mov r10, sp\n\t" "mov r9, %[a]\n\t" "\n" - "L_sp_256_sqr_8_words_%=: \n\t" + "L_sp_256_sqr_8_words_%=:\n\t" "movs %[r], #0\n\t" "movs r6, #28\n\t" "mov %[a], r8\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[a], %[a], r6\n\t" #else "sub %[a], %[a], r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r6\n\t" +#elif defined(__clang__) "sbcs r6, r6\n\t" #else "sbc r6, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "mvns r6, r6\n\t" #else "mvn r6, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands %[a], %[a], r6\n\t" +#elif defined(__clang__) "ands %[a], r6\n\t" #else "and %[a], r6\n\t" #endif "mov r2, r8\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r2, r2, %[a]\n\t" #else "sub r2, r2, %[a]\n\t" @@ -34742,207 +95917,213 @@ SP_NOINLINE static void sp_256_sqr_8(sp_digit* r, const sp_digit* a) "add %[a], %[a], r9\n\t" "add r2, r2, r9\n\t" "\n" - "L_sp_256_sqr_8_mul_%=: \n\t" + "L_sp_256_sqr_8_mul_%=:\n\t" "cmp r2, %[a]\n\t" "beq L_sp_256_sqr_8_sqr_%=\n\t" "# Multiply * 2: Start\n\t" - "ldr r6, [%[a]]\n\t" - "ldr r7, [r2]\n\t" -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsls r7, r7, #16\n\t" -#else - "lsl r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ + "ldrh r6, [%[a]]\n\t" + "ldrh r7, [r2]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) "muls r7, r6\n\t" #else "mul r7, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r7\n\t" #else "add r3, r3, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) "adcs r4, %[r]\n\t" #else "adc r4, %[r]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r7\n\t" #else "add r3, r3, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) "adcs r4, %[r]\n\t" #else "adc r4, %[r]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif "ldr r7, [r2]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r7, #16\n\t" #else "lsr r7, r7, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) "muls r6, r7\n\t" #else "mul r6, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r6, #16\n\t" #else "lsr r7, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #16\n\t" #else "lsl r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif "ldr r6, [%[a]]\n\t" "ldr r7, [r2]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, #16\n\t" #else "lsr r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r7, #16\n\t" #else "lsr r7, r7, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) "muls r7, r6\n\t" #else "mul r7, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, r7\n\t" #else "add r4, r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, r7\n\t" #else "add r4, r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif - "ldr r7, [r2]\n\t" -#ifdef __clang__ - "lsls r7, r7, #16\n\t" -#else - "lsl r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ + "ldrh r7, [r2]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) "muls r6, r7\n\t" #else "mul r6, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r6, #16\n\t" #else "lsr r7, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #16\n\t" #else "lsl r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" @@ -34950,114 +96131,101 @@ SP_NOINLINE static void sp_256_sqr_8(sp_digit* r, const sp_digit* a) "# Multiply * 2: Done\n\t" "bal L_sp_256_sqr_8_done_sqr_%=\n\t" "\n" - "L_sp_256_sqr_8_sqr_%=: \n\t" + "L_sp_256_sqr_8_sqr_%=:\n\t" + "mov r12, r2\n\t" + "ldr r2, [%[a]]\n\t" "# Square: Start\n\t" - "ldr r6, [%[a]]\n\t" -#ifdef __clang__ - "lsrs r7, r6, #16\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r2, #16\n\t" #else - "lsr r7, r6, #16\n\t" + "lsr r7, r2, #16\n\t" #endif -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ + "uxth r6, r2\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r6, r6\n\t" +#elif defined(__clang__) "muls r6, r6\n\t" #else "mul r6, r6\n\t" #endif -#ifdef __clang__ - "adds r3, r3, r6\n\t" -#else - "add r3, r3, r6\n\t" -#endif -#ifdef __clang__ - "adcs r4, %[r]\n\t" -#else - "adc r4, %[r]\n\t" -#endif -#ifdef __clang__ - "adcs r5, %[r]\n\t" -#else - "adc r5, %[r]\n\t" -#endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r7, r7, r7\n\t" +#elif defined(__clang__) "muls r7, r7\n\t" #else "mul r7, r7\n\t" #endif -#ifdef __clang__ - "adds r4, r4, r7\n\t" -#else - "add r4, r4, r7\n\t" -#endif -#ifdef __clang__ - "adcs r5, %[r]\n\t" -#else - "adc r5, %[r]\n\t" -#endif - "ldr r6, [%[a]]\n\t" -#ifdef __clang__ - "lsrs r7, r6, #16\n\t" -#else - "lsr r7, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "muls r6, r7\n\t" -#else - "mul r6, r7\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r6, #15\n\t" -#else - "lsr r7, r6, #15\n\t" -#endif -#ifdef __clang__ - "lsls r6, r6, #17\n\t" -#else - "lsl r6, r6, #17\n\t" -#endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r2, #16\n\t" +#else + "lsr r7, r2, #16\n\t" +#endif + "uxth r6, r2\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #15\n\t" +#else + "lsr r7, r6, #15\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #17\n\t" +#else + "lsl r6, r6, #17\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif "# Square: Done\n\t" + "mov r2, r12\n\t" "\n" - "L_sp_256_sqr_8_done_sqr_%=: \n\t" -#ifdef __clang__ + "L_sp_256_sqr_8_done_sqr_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[a], %[a], #4\n\t" #else "add %[a], %[a], #4\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r2, r2, #4\n\t" #else "sub r2, r2, #4\n\t" @@ -35073,14 +96241,14 @@ SP_NOINLINE static void sp_256_sqr_8(sp_digit* r, const sp_digit* a) "cmp %[a], r7\n\t" "ble L_sp_256_sqr_8_mul_%=\n\t" "\n" - "L_sp_256_sqr_8_done_mul_%=: \n\t" + "L_sp_256_sqr_8_done_mul_%=:\n\t" "mov %[r], r10\n\t" "mov r7, r8\n\t" "str r3, [%[r], r7]\n\t" "movs r3, r4\n\t" "movs r4, r5\n\t" "movs r5, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r7, r7, #4\n\t" #else "add r7, r7, #4\n\t" @@ -35095,10 +96263,10 @@ SP_NOINLINE static void sp_256_sqr_8(sp_digit* r, const sp_digit* a) "mov %[a], r10\n\t" "movs r3, #60\n\t" "\n" - "L_sp_256_sqr_8_store_%=: \n\t" + "L_sp_256_sqr_8_store_%=:\n\t" "ldr r6, [%[a], r3]\n\t" "str r6, [%[r], r3]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r3, r3, #4\n\t" #else "sub r3, r3, #4\n\t" @@ -35108,7 +96276,7 @@ SP_NOINLINE static void sp_256_sqr_8(sp_digit* r, const sp_digit* a) "add sp, sp, r6\n\t" : [r] "+r" (r), [a] "+r" (a) : - : "memory", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11" + : "memory", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12" ); } @@ -35126,48 +96294,52 @@ SP_NOINLINE static sp_digit sp_256_add_8(sp_digit* r, const sp_digit* a, "movs r6, %[a]\n\t" "movs r7, #0\n\t" "movs r3, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r6, r6, #32\n\t" #else "add r6, r6, #32\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r7, r7, #1\n\t" #else "sub r7, r7, #1\n\t" #endif "\n" - "L_sp_256_add_8_word_%=: \n\t" -#ifdef __clang__ + "L_sp_256_add_8_word_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r7\n\t" #else "add r3, r3, r7\n\t" #endif "ldr r4, [%[a]]\n\t" "ldr r5, [%[b]]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) "adcs r4, r5\n\t" #else "adc r4, r5\n\t" #endif "str r4, [%[r]]\n\t" "movs r3, #0\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r3\n\t" +#elif defined(__clang__) "adcs r3, r3\n\t" #else "adc r3, r3\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[a], %[a], #4\n\t" #else "add %[a], %[a], #4\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[b], %[b], #4\n\t" #else "add %[b], %[b], #4\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[r], %[r], #4\n\t" #else "add %[r], %[r], #4\n\t" @@ -35193,80 +96365,83 @@ SP_NOINLINE static sp_digit sp_256_add_8(sp_digit* r, const sp_digit* a, const sp_digit* b) { __asm__ __volatile__ ( - "ldr r4, [%[a]]\n\t" - "ldr r5, [%[b]]\n\t" -#ifdef __clang__ - "adds r4, r4, r5\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" #else - "add r4, r4, r5\n\t" + "add r3, r3, r5\n\t" #endif - "str r4, [%[r]]\n\t" - "ldr r4, [%[a], #4]\n\t" - "ldr r5, [%[b], #4]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #4]\n\t" - "ldr r4, [%[a], #8]\n\t" - "ldr r5, [%[b], #8]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #8]\n\t" - "ldr r4, [%[a], #12]\n\t" - "ldr r5, [%[b], #12]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #12]\n\t" - "ldr r4, [%[a], #16]\n\t" - "ldr r5, [%[b], #16]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #16]\n\t" - "ldr r4, [%[a], #20]\n\t" - "ldr r5, [%[b], #20]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #20]\n\t" - "ldr r4, [%[a], #24]\n\t" - "ldr r5, [%[b], #24]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #24]\n\t" - "ldr r4, [%[a], #28]\n\t" - "ldr r5, [%[b], #28]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #28]\n\t" - "movs r3, #0\n\t" -#ifdef __clang__ - "adcs r3, r3\n\t" + "stm %[r]!, {r3, r4}\n\t" + "movs %[r], #0\n\t" +#ifdef WOLFSSL_KEIL + "adcs %[r], %[r], %[r]\n\t" +#elif defined(__clang__) + "adcs %[r], %[r]\n\t" #else - "adc r3, r3\n\t" + "adc %[r], %[r]\n\t" #endif - "movs %[r], r3\n\t" : [r] "+r" (r), [a] "+r" (a), [b] "+r" (b) : - : "memory", "r3", "r4", "r5" + : "memory", "r3", "r4", "r5", "r6" ); return (uint32_t)(size_t)r; } @@ -35285,43 +96460,47 @@ SP_NOINLINE static sp_digit sp_256_sub_8(sp_digit* r, const sp_digit* a, __asm__ __volatile__ ( "movs r6, %[a]\n\t" "movs r3, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r6, r6, #32\n\t" #else "add r6, r6, #32\n\t" #endif "\n" - "L_sp_256_sub_8_word_%=: \n\t" + "L_sp_256_sub_8_word_%=:\n\t" "movs r5, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r5, r5, r3\n\t" #else "sub r5, r5, r3\n\t" #endif "ldr r4, [%[a]]\n\t" "ldr r5, [%[b]]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r5\n\t" +#elif defined(__clang__) "sbcs r4, r5\n\t" #else "sbc r4, r5\n\t" #endif "str r4, [%[r]]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r3\n\t" +#elif defined(__clang__) "sbcs r3, r3\n\t" #else "sbc r3, r3\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[a], %[a], #4\n\t" #else "add %[a], %[a], #4\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[b], %[b], #4\n\t" #else "add %[b], %[b], #4\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[r], %[r], #4\n\t" #else "add %[r], %[r], #4\n\t" @@ -35347,80 +96526,82 @@ SP_NOINLINE static sp_digit sp_256_sub_8(sp_digit* r, const sp_digit* a, const sp_digit* b) { __asm__ __volatile__ ( - "movs r3, #0\n\t" - "ldr r4, [%[a]]\n\t" - "ldr r5, [%[a], #4]\n\t" - "ldr r6, [%[b]]\n\t" - "ldr r7, [%[b], #4]\n\t" -#ifdef __clang__ - "subs r4, r4, r6\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "subs r3, r3, r5\n\t" #else - "sub r4, r4, r6\n\t" + "sub r3, r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" -#else - "sbc r5, r7\n\t" -#endif - "str r4, [%[r]]\n\t" - "str r5, [%[r], #4]\n\t" - "ldr r4, [%[a], #8]\n\t" - "ldr r5, [%[a], #12]\n\t" - "ldr r6, [%[b], #8]\n\t" - "ldr r7, [%[b], #12]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #8]\n\t" - "str r5, [%[r], #12]\n\t" - "ldr r4, [%[a], #16]\n\t" - "ldr r5, [%[a], #20]\n\t" - "ldr r6, [%[b], #16]\n\t" - "ldr r7, [%[b], #20]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #16]\n\t" - "str r5, [%[r], #20]\n\t" - "ldr r4, [%[a], #24]\n\t" - "ldr r5, [%[a], #28]\n\t" - "ldr r6, [%[b], #24]\n\t" - "ldr r7, [%[b], #28]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #24]\n\t" - "str r5, [%[r], #28]\n\t" -#ifdef __clang__ - "sbcs r3, r3\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) + "sbcs r4, r6\n\t" #else - "sbc r3, r3\n\t" + "sbc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs %[r], %[r], %[r]\n\t" +#elif defined(__clang__) + "sbcs %[r], %[r]\n\t" +#else + "sbc %[r], %[r]\n\t" #endif - "movs %[r], r3\n\t" : [r] "+r" (r), [a] "+r" (a), [b] "+r" (b) : - : "memory", "r3", "r4", "r5", "r6", "r7" + : "memory", "r3", "r4", "r5", "r6" ); return (uint32_t)(size_t)r; } @@ -35706,32 +96887,38 @@ SP_NOINLINE static sp_digit sp_256_cond_sub_8(sp_digit* r, const sp_digit* a, "mov r8, r5\n\t" "movs r7, #0\n\t" "\n" - "L_sp_256_cond_sub_8_words_%=: \n\t" + "L_sp_256_cond_sub_8_words_%=:\n\t" "ldr r6, [%[b], r7]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, %[m]\n\t" +#elif defined(__clang__) "ands r6, %[m]\n\t" #else "and r6, %[m]\n\t" #endif "movs r5, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r5, r5, r4\n\t" #else "sub r5, r5, r4\n\t" #endif "ldr r5, [%[a], r7]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) "sbcs r5, r6\n\t" #else "sbc r5, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r4\n\t" +#elif defined(__clang__) "sbcs r4, r4\n\t" #else "sbc r4, r4\n\t" #endif "str r5, [%[r], r7]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r7, r7, #4\n\t" #else "add r7, r7, #4\n\t" @@ -35764,7 +96951,7 @@ SP_NOINLINE static void sp_256_mont_reduce_8(sp_digit* a, const sp_digit* m, "# i = 0\n\t" "mov r8, r2\n\t" "\n" - "L_sp_256_mont_reduce_8_mod_%=: \n\t" + "L_sp_256_mont_reduce_8_mod_%=:\n\t" "movs r4, #0\n\t" "# mu = a[i] * 1 (mp) = a[i]\n\t" "ldr r3, [%[a]]\n\t" @@ -35774,22 +96961,26 @@ SP_NOINLINE static void sp_256_mont_reduce_8(sp_digit* a, const sp_digit* m, "# a[i+1] += -1 * mu\n\t" "ldr r6, [%[a], #4]\n\t" "movs r4, r3\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r5, r5, r3\n\t" #else "sub r5, r5, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r2\n\t" +#elif defined(__clang__) "sbcs r4, r2\n\t" #else "sbc r4, r2\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r5, r5, r6\n\t" #else "add r5, r5, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r2\n\t" +#elif defined(__clang__) "adcs r4, r2\n\t" #else "adc r4, r2\n\t" @@ -35798,22 +96989,26 @@ SP_NOINLINE static void sp_256_mont_reduce_8(sp_digit* a, const sp_digit* m, "# a[i+2] += -1 * mu\n\t" "ldr r6, [%[a], #8]\n\t" "movs r5, r3\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r4, r4, r3\n\t" #else "sub r4, r4, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r2\n\t" +#elif defined(__clang__) "sbcs r5, r2\n\t" #else "sbc r5, r2\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, r6\n\t" #else "add r4, r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r2\n\t" +#elif defined(__clang__) "adcs r5, r2\n\t" #else "adc r5, r2\n\t" @@ -35822,12 +97017,14 @@ SP_NOINLINE static void sp_256_mont_reduce_8(sp_digit* a, const sp_digit* m, "# a[i+3] += 0 * mu\n\t" "ldr r6, [%[a], #12]\n\t" "movs r4, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r5, r5, r6\n\t" #else "add r5, r5, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r2\n\t" +#elif defined(__clang__) "adcs r4, r2\n\t" #else "adc r4, r2\n\t" @@ -35836,12 +97033,14 @@ SP_NOINLINE static void sp_256_mont_reduce_8(sp_digit* a, const sp_digit* m, "# a[i+4] += 0 * mu\n\t" "ldr r6, [%[a], #16]\n\t" "movs r5, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, r6\n\t" #else "add r4, r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r2\n\t" +#elif defined(__clang__) "adcs r5, r2\n\t" #else "adc r5, r2\n\t" @@ -35850,12 +97049,14 @@ SP_NOINLINE static void sp_256_mont_reduce_8(sp_digit* a, const sp_digit* m, "# a[i+5] += 0 * mu\n\t" "ldr r6, [%[a], #20]\n\t" "movs r4, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r5, r5, r6\n\t" #else "add r5, r5, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r2\n\t" +#elif defined(__clang__) "adcs r4, r2\n\t" #else "adc r4, r2\n\t" @@ -35864,22 +97065,26 @@ SP_NOINLINE static void sp_256_mont_reduce_8(sp_digit* a, const sp_digit* m, "# a[i+6] += 1 * mu\n\t" "ldr r6, [%[a], #24]\n\t" "movs r5, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, r3\n\t" #else "add r4, r4, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r2\n\t" +#elif defined(__clang__) "adcs r5, r2\n\t" #else "adc r5, r2\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, r6\n\t" #else "add r4, r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r2\n\t" +#elif defined(__clang__) "adcs r5, r2\n\t" #else "adc r5, r2\n\t" @@ -35888,43 +97093,57 @@ SP_NOINLINE static void sp_256_mont_reduce_8(sp_digit* a, const sp_digit* m, "# a[i+7] += -1 * mu\n\t" "ldr r6, [%[a], #28]\n\t" "ldr r7, [%[a], #32]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL "adds r4, r1, r3\n\t" #else + #ifdef __clang__ + "adds r4, r1, r3\n\t" + #else "add r4, r1, r3\n\t" + #endif #endif "movs r1, #0\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r1, r1, r2\n\t" +#elif defined(__clang__) "adcs r1, r2\n\t" #else "adc r1, r2\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r5, r5, r3\n\t" #else "sub r5, r5, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r2\n\t" +#elif defined(__clang__) "sbcs r4, r2\n\t" #else "sbc r4, r2\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r1, r1, r2\n\t" +#elif defined(__clang__) "sbcs r1, r2\n\t" #else "sbc r1, r2\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r5, r5, r6\n\t" #else "add r5, r5, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r1, r1, r2\n\t" +#elif defined(__clang__) "adcs r1, r2\n\t" #else "adc r1, r2\n\t" @@ -35934,7 +97153,7 @@ SP_NOINLINE static void sp_256_mont_reduce_8(sp_digit* a, const sp_digit* m, "# i += 1\n\t" "movs r6, #4\n\t" "add r8, r8, r6\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[a], %[a], #4\n\t" #else "add %[a], %[a], #4\n\t" @@ -35942,18 +97161,18 @@ SP_NOINLINE static void sp_256_mont_reduce_8(sp_digit* a, const sp_digit* m, "movs r6, #32\n\t" "cmp r8, r6\n\t" "blt L_sp_256_mont_reduce_8_mod_%=\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[a], %[a], #32\n\t" #else "sub %[a], %[a], #32\n\t" #endif "movs r3, r1\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r1, r1, #1\n\t" #else "sub r1, r1, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "mvns r1, r1\n\t" #else "mvn r1, r1\n\t" @@ -35962,22 +97181,28 @@ SP_NOINLINE static void sp_256_mont_reduce_8(sp_digit* a, const sp_digit* m, "ldr r4, [%[a], #36]\n\t" "ldr r6, [%[a], #40]\n\t" "ldr r7, [%[a], #44]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r5, r5, r1\n\t" #else "sub r5, r5, r1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r1\n\t" +#elif defined(__clang__) "sbcs r4, r1\n\t" #else "sbc r4, r1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r1\n\t" +#elif defined(__clang__) "sbcs r6, r1\n\t" #else "sbc r6, r1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r7, r7, r2\n\t" +#elif defined(__clang__) "sbcs r7, r2\n\t" #else "sbc r7, r2\n\t" @@ -35990,22 +97215,30 @@ SP_NOINLINE static void sp_256_mont_reduce_8(sp_digit* a, const sp_digit* m, "ldr r4, [%[a], #52]\n\t" "ldr r6, [%[a], #56]\n\t" "ldr r7, [%[a], #60]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r2\n\t" +#elif defined(__clang__) "sbcs r5, r2\n\t" #else "sbc r5, r2\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r2\n\t" +#elif defined(__clang__) "sbcs r4, r2\n\t" #else "sbc r4, r2\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r3\n\t" +#elif defined(__clang__) "sbcs r6, r3\n\t" #else "sbc r6, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r7, r7, r1\n\t" +#elif defined(__clang__) "sbcs r7, r1\n\t" #else "sbc r7, r1\n\t" @@ -36029,374 +97262,653 @@ SP_NOINLINE static void sp_256_mont_reduce_8(sp_digit* a, const sp_digit* m, SP_NOINLINE static void sp_256_mont_reduce_order_8(sp_digit* a, const sp_digit* m, sp_digit mp) { - sp_digit ca = 0; __asm__ __volatile__ ( + "movs r7, #0\n\t" "mov r8, %[mp]\n\t" - "mov r12, %[ca]\n\t" + "mov r12, r7\n\t" "mov lr, %[m]\n\t" "mov r9, %[a]\n\t" + "mov r11, %[a]\n\t" + "movs r5, #28\n\t" + "movs r6, #32\n\t" + "add r9, r9, r5\n\t" + "add r11, r11, r6\n\t" + "\n" + "L_sp_256_mont_reduce_order_8_mod_%=:\n\t" + "movs r7, #0\n\t" "movs r4, #0\n\t" - "# i = 0\n\t" - "mov r11, r4\n\t" - "\n" - "L_sp_256_mont_reduce_order_8_mod_%=: \n\t" - "movs r5, #0\n\t" - "movs %[ca], #0\n\t" + "# a[i] += m[0] * mu\n\t" + "ldm %[m]!, {%[mp]}\n\t" + "ldm %[a]!, {r3}\n\t" "# mu = a[i] * mp\n\t" - "mov %[mp], r8\n\t" - "ldr %[a], [%[a]]\n\t" -#ifdef __clang__ - "muls %[mp], %[a]\n\t" + "mov r5, r8\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r3, r5\n\t" +#elif defined(__clang__) + "muls r5, r3\n\t" #else - "mul %[mp], %[a]\n\t" + "mul r5, r3\n\t" #endif - "mov %[m], lr\n\t" - "mov r10, r9\n\t" - "\n" - "L_sp_256_mont_reduce_order_8_word_%=: \n\t" - "# a[i+j] += m[j] * mu\n\t" - "mov %[a], r10\n\t" - "ldr %[a], [%[a]]\n\t" - "movs %[ca], #0\n\t" - "movs r4, r5\n\t" - "movs r5, #0\n\t" - "# Multiply m[j] and mu - Start\n\t" - "ldr r7, [%[m]]\n\t" -#ifdef __clang__ - "lsls r6, %[mp], #16\n\t" + "mov r10, r5\n\t" + "# Multiply m[0] and mu - Start\n\t" + "mov r5, r10\n\t" + "uxth r6, %[mp]\n\t" + "uxth r5, r5\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" #else - "lsl r6, %[mp], #16\n\t" + "mul r6, r5\n\t" #endif -#ifdef __clang__ - "lsls r7, r7, #16\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" #else - "lsl r7, r7, #16\n\t" + "add r3, r3, r6\n\t" #endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" #else - "lsr r6, r6, #16\n\t" + "adc r4, r7\n\t" #endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "muls r7, r6\n\t" -#else - "mul r7, r6\n\t" -#endif -#ifdef __clang__ - "adds %[a], %[a], r7\n\t" -#else - "add %[a], %[a], r7\n\t" -#endif -#ifdef __clang__ - "adcs r5, %[ca]\n\t" -#else - "adc r5, %[ca]\n\t" -#endif - "ldr r7, [%[m]]\n\t" -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "muls r6, r7\n\t" -#else - "mul r6, r7\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r6, #16\n\t" -#else - "lsr r7, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "adds %[a], %[a], r6\n\t" -#else - "add %[a], %[a], r6\n\t" -#endif -#ifdef __clang__ - "adcs r5, r7\n\t" -#else - "adc r5, r7\n\t" -#endif - "ldr r7, [%[m]]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, %[mp], #16\n\t" #else "lsr r6, %[mp], #16\n\t" #endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" #else - "lsr r7, r7, #16\n\t" + "mul r5, r6\n\t" #endif -#ifdef __clang__ - "muls r7, r6\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" #else - "mul r7, r6\n\t" + "lsr r6, r5, #16\n\t" #endif -#ifdef __clang__ - "adds r5, r5, r7\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" #else - "add r5, r5, r7\n\t" + "lsl r5, r5, #16\n\t" #endif - "ldr r7, [%[m]]\n\t" -#ifdef __clang__ - "lsls r7, r7, #16\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" #else - "lsl r7, r7, #16\n\t" + "add r3, r3, r5\n\t" #endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "lsr r7, r7, #16\n\t" + "adc r4, r6\n\t" #endif -#ifdef __clang__ - "muls r6, r7\n\t" + "mov r5, r10\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[mp], #16\n\t" #else - "mul r6, r7\n\t" + "lsr r6, %[mp], #16\n\t" #endif -#ifdef __clang__ - "lsrs r7, r6, #16\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, r5, #16\n\t" #else - "lsr r7, r6, #16\n\t" + "lsr r5, r5, #16\n\t" #endif -#ifdef __clang__ - "lsls r6, r6, #16\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" #else - "lsl r6, r6, #16\n\t" + "mul r6, r5\n\t" #endif -#ifdef __clang__ - "adds %[a], %[a], r6\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" #else - "add %[a], %[a], r6\n\t" + "add r4, r4, r6\n\t" #endif -#ifdef __clang__ - "adcs r5, r7\n\t" + "uxth r6, %[mp]\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" #else - "adc r5, r7\n\t" + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "# Multiply m[0] and mu - Done\n\t" + "\n" + "L_sp_256_mont_reduce_order_8_word_%=:\n\t" + "# a[i+j] += m[j] * mu\n\t" + "ldr r3, [%[a]]\n\t" + "ldm %[m]!, {%[mp]}\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r4\n\t" +#else + "add r3, r3, r4\n\t" +#endif + "movs r4, #0\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif + "# Multiply m[j] and mu - Start\n\t" + "mov r5, r10\n\t" + "uxth r6, %[mp]\n\t" + "uxth r5, r5\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[mp], #16\n\t" +#else + "lsr r6, %[mp], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "mov r5, r10\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[mp], #16\n\t" +#else + "lsr r6, %[mp], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, r5, #16\n\t" +#else + "lsr r5, r5, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif + "uxth r6, %[mp]\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" #endif "# Multiply m[j] and mu - Done\n\t" -#ifdef __clang__ - "adds r4, r4, %[a]\n\t" -#else - "add r4, r4, %[a]\n\t" -#endif -#ifdef __clang__ - "adcs r5, %[ca]\n\t" -#else - "adc r5, %[ca]\n\t" -#endif - "mov %[a], r10\n\t" - "str r4, [%[a]]\n\t" - "movs r6, #4\n\t" -#ifdef __clang__ - "adds %[m], %[m], #4\n\t" -#else - "add %[m], %[m], #4\n\t" -#endif - "add r10, r10, r6\n\t" - "movs r4, #28\n\t" - "add r4, r4, r9\n\t" - "cmp r10, r4\n\t" + "stm %[a]!, {r3}\n\t" + "cmp %[a], r9\n\t" "blt L_sp_256_mont_reduce_order_8_word_%=\n\t" "# a[i+7] += m[7] * mu\n\t" - "movs %[ca], #0\n\t" - "mov r4, r12\n\t" - "movs %[a], #0\n\t" + "ldr %[mp], [%[m]]\n\t" + "mov r3, r12\n\t" "# Multiply m[7] and mu - Start\n\t" - "ldr r7, [%[m]]\n\t" -#ifdef __clang__ - "lsls r6, %[mp], #16\n\t" + "mov r5, r10\n\t" + "uxth r6, %[mp]\n\t" + "uxth r5, r5\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" #else - "lsl r6, %[mp], #16\n\t" + "mul r6, r5\n\t" #endif -#ifdef __clang__ - "lsls r7, r7, #16\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" #else - "lsl r7, r7, #16\n\t" + "add r4, r4, r6\n\t" #endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" #else - "lsr r6, r6, #16\n\t" + "adc r3, r7\n\t" #endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r7\n\t" +#elif defined(__clang__) + "adcs r7, r7\n\t" #else - "lsr r7, r7, #16\n\t" + "adc r7, r7\n\t" #endif -#ifdef __clang__ - "muls r7, r6\n\t" -#else - "mul r7, r6\n\t" -#endif -#ifdef __clang__ - "adds r5, r5, r7\n\t" -#else - "add r5, r5, r7\n\t" -#endif -#ifdef __clang__ - "adcs r4, %[ca]\n\t" -#else - "adc r4, %[ca]\n\t" -#endif -#ifdef __clang__ - "adcs %[a], %[ca]\n\t" -#else - "adc %[a], %[ca]\n\t" -#endif - "ldr r7, [%[m]]\n\t" -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "muls r6, r7\n\t" -#else - "mul r6, r7\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r6, #16\n\t" -#else - "lsr r7, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "adds r5, r5, r6\n\t" -#else - "add r5, r5, r6\n\t" -#endif -#ifdef __clang__ - "adcs r4, r7\n\t" -#else - "adc r4, r7\n\t" -#endif -#ifdef __clang__ - "adcs %[a], %[ca]\n\t" -#else - "adc %[a], %[ca]\n\t" -#endif - "ldr r7, [%[m]]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, %[mp], #16\n\t" #else "lsr r6, %[mp], #16\n\t" #endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" #else - "lsr r7, r7, #16\n\t" + "mul r5, r6\n\t" #endif -#ifdef __clang__ - "muls r7, r6\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" #else - "mul r7, r6\n\t" + "lsr r6, r5, #16\n\t" #endif -#ifdef __clang__ - "adds r4, r4, r7\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" #else - "add r4, r4, r7\n\t" + "lsl r5, r5, #16\n\t" #endif -#ifdef __clang__ - "adcs %[a], %[ca]\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" #else - "adc %[a], %[ca]\n\t" + "add r4, r4, r5\n\t" #endif - "ldr r7, [%[m]]\n\t" -#ifdef __clang__ - "lsls r7, r7, #16\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" #else - "lsl r7, r7, #16\n\t" + "adc r3, r6\n\t" #endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r7\n\t" +#elif defined(__clang__) + "adcs r7, r7\n\t" #else - "lsr r7, r7, #16\n\t" + "adc r7, r7\n\t" #endif -#ifdef __clang__ - "muls r6, r7\n\t" + "mov r5, r10\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[mp], #16\n\t" #else - "mul r6, r7\n\t" + "lsr r6, %[mp], #16\n\t" #endif -#ifdef __clang__ - "lsrs r7, r6, #16\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, r5, #16\n\t" #else - "lsr r7, r6, #16\n\t" + "lsr r5, r5, #16\n\t" #endif -#ifdef __clang__ - "lsls r6, r6, #16\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" #else - "lsl r6, r6, #16\n\t" + "mul r6, r5\n\t" #endif -#ifdef __clang__ - "adds r5, r5, r6\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" #else - "add r5, r5, r6\n\t" + "add r3, r3, r6\n\t" #endif -#ifdef __clang__ - "adcs r4, r7\n\t" +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r7\n\t" +#elif defined(__clang__) + "adcs r7, r7\n\t" #else - "adc r4, r7\n\t" + "adc r7, r7\n\t" #endif -#ifdef __clang__ - "adcs %[a], %[ca]\n\t" + "uxth r6, %[mp]\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" #else - "adc %[a], %[ca]\n\t" + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r7\n\t" +#elif defined(__clang__) + "adcs r7, r7\n\t" +#else + "adc r7, r7\n\t" #endif "# Multiply m[7] and mu - Done\n\t" - "movs %[ca], %[a]\n\t" - "mov %[a], r10\n\t" - "ldr r7, [%[a], #4]\n\t" - "ldr %[a], [%[a]]\n\t" - "movs r6, #0\n\t" -#ifdef __clang__ - "adds r5, r5, %[a]\n\t" + "ldr r5, [%[a]]\n\t" + "ldr r6, [%[a], #4]\n\t" + "movs %[mp], #0\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r4\n\t" #else - "add r5, r5, %[a]\n\t" + "add r5, r5, r4\n\t" #endif -#ifdef __clang__ - "adcs r7, r4\n\t" +#ifdef WOLFSSL_KEIL + "adcs r6, r6, r3\n\t" +#elif defined(__clang__) + "adcs r6, r3\n\t" #else - "adc r7, r4\n\t" + "adc r6, r3\n\t" #endif -#ifdef __clang__ - "adcs %[ca], r6\n\t" +#ifdef WOLFSSL_KEIL + "adcs r7, r7, %[mp]\n\t" +#elif defined(__clang__) + "adcs r7, %[mp]\n\t" #else - "adc %[ca], r6\n\t" + "adc r7, %[mp]\n\t" #endif - "mov %[a], r10\n\t" - "str r5, [%[a]]\n\t" - "str r7, [%[a], #4]\n\t" + "stm %[a]!, {r5, r6}\n\t" "# i += 1\n\t" - "movs r6, #4\n\t" - "add r9, r9, r6\n\t" - "add r11, r11, r6\n\t" - "mov r12, %[ca]\n\t" - "mov %[a], r9\n\t" - "movs r4, #32\n\t" - "cmp r11, r4\n\t" - "blt L_sp_256_mont_reduce_order_8_mod_%=\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "subs %[a], %[a], #4\n\t" +#else + "sub %[a], %[a], #4\n\t" +#endif + "movs r3, #28\n\t" + "mov r9, %[a]\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "subs %[a], %[a], r3\n\t" +#else + "sub %[a], %[a], r3\n\t" +#endif + "mov r12, r7\n\t" "mov %[m], lr\n\t" - : [a] "+r" (a), [m] "+r" (m), [mp] "+r" (mp), [ca] "+r" (ca) + "cmp r11, %[a]\n\t" + "bgt L_sp_256_mont_reduce_order_8_mod_%=\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "negs r7, r7\n\t" +#else + "neg r7, r7\n\t" +#endif + "# Subtract masked modulus\n\t" + "movs r4, #32\n\t" + "movs %[mp], #0\n\t" + "movs r3, #0\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "subs %[a], %[a], r4\n\t" +#else + "sub %[a], %[a], r4\n\t" +#endif +#ifndef WOLFSSL_SP_LARGE_CODE + "\n" + "L_sp_256_mont_reduce_order_8_sub_mask_%=:\n\t" + "ldm %[m]!, {r6}\n\t" + "movs r5, #0\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "subs r5, r5, %[mp]\n\t" +#else + "sub r5, r5, %[mp]\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "sbcs %[mp], %[mp], %[mp]\n\t" +#elif defined(__clang__) + "sbcs %[mp], %[mp]\n\t" +#else + "sbc %[mp], %[mp]\n\t" +#endif + "stm %[a]!, {r5}\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, #4\n\t" +#else + "add r3, r3, #4\n\t" +#endif + "cmp r3, r4\n\t" + "blt L_sp_256_mont_reduce_order_8_sub_mask_%=\n\t" +#else /* WOLFSSL_SP_LARGE_CODE */ + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "subs r5, r5, r6\n\t" +#else + "sub r5, r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" +#endif /* WOLFSSL_SP_LARGE_CODE */ + : [a] "+r" (a), [m] "+r" (m), [mp] "+r" (mp) : - : "memory", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12", "lr" + : "memory", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12", "lr" ); - sp_256_cond_sub_8(a - 8, a, m, (sp_digit)0 - ca); } /* Multiply two Montogmery form numbers mod the modulus (prime). @@ -36537,78 +98049,90 @@ SP_NOINLINE static sp_int32 sp_256_cmp_8(const sp_digit* a, const sp_digit* b) __asm__ __volatile__ ( "movs r2, #0\n\t" "movs r3, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "mvns r3, r3\n\t" #else "mvn r3, r3\n\t" #endif "movs r6, #28\n\t" "\n" - "L_sp_256_cmp_8_words_%=: \n\t" + "L_sp_256_cmp_8_words_%=:\n\t" "ldr r7, [%[a], r6]\n\t" "ldr r5, [%[b], r6]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, r3\n\t" +#elif defined(__clang__) "ands r7, r3\n\t" #else "and r7, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r3\n\t" +#elif defined(__clang__) "ands r5, r3\n\t" #else "and r5, r3\n\t" #endif "movs r4, r7\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r7, r7, r5\n\t" #else "sub r7, r7, r5\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r7, r7, r7\n\t" +#elif defined(__clang__) "sbcs r7, r7\n\t" #else "sbc r7, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r7\n\t" #else "add r2, r2, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "mvns r7, r7\n\t" #else "mvn r7, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r3, r3, r7\n\t" +#elif defined(__clang__) "ands r3, r7\n\t" #else "and r3, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r5, r5, r4\n\t" #else "sub r5, r5, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r7, r7, r7\n\t" +#elif defined(__clang__) "sbcs r7, r7\n\t" #else "sbc r7, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r2, r2, r7\n\t" #else "sub r2, r2, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "mvns r7, r7\n\t" #else "mvn r7, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r3, r3, r7\n\t" +#elif defined(__clang__) "ands r3, r7\n\t" #else "and r3, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r6, r6, #4\n\t" #else "sub r6, r6, #4\n\t" @@ -36689,12 +98213,14 @@ SP_NOINLINE static void sp_256_mont_add_8(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #4]\n\t" "ldr r6, [%[b]]\n\t" "ldr r7, [%[b], #4]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, r6\n\t" #else "add r4, r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" @@ -36705,12 +98231,16 @@ SP_NOINLINE static void sp_256_mont_add_8(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #12]\n\t" "ldr r6, [%[b], #8]\n\t" "ldr r7, [%[b], #12]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) "adcs r4, r6\n\t" #else "adc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" @@ -36721,12 +98251,16 @@ SP_NOINLINE static void sp_256_mont_add_8(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #20]\n\t" "ldr r6, [%[b], #16]\n\t" "ldr r7, [%[b], #20]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) "adcs r4, r6\n\t" #else "adc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" @@ -36737,30 +98271,36 @@ SP_NOINLINE static void sp_256_mont_add_8(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #28]\n\t" "ldr r6, [%[b], #24]\n\t" "ldr r7, [%[b], #28]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) "adcs r4, r6\n\t" #else "adc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" #endif "mov r10, r4\n\t" "mov r11, r5\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r3\n\t" +#elif defined(__clang__) "adcs r3, r3\n\t" #else "adc r3, r3\n\t" #endif "movs r6, r3\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r3, r3, #1\n\t" #else "sub r3, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "mvns r3, r3\n\t" #else "mvn r3, r3\n\t" @@ -36768,12 +98308,14 @@ SP_NOINLINE static void sp_256_mont_add_8(sp_digit* r, const sp_digit* a, "movs r7, #0\n\t" "ldr r4, [%[r]]\n\t" "ldr r5, [%[r], #4]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r4, r4, r3\n\t" #else "sub r4, r4, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r3\n\t" +#elif defined(__clang__) "sbcs r5, r3\n\t" #else "sbc r5, r3\n\t" @@ -36782,12 +98324,16 @@ SP_NOINLINE static void sp_256_mont_add_8(sp_digit* r, const sp_digit* a, "str r5, [%[r], #4]\n\t" "ldr r4, [%[r], #8]\n\t" "ldr r5, [%[r], #12]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r3\n\t" +#elif defined(__clang__) "sbcs r4, r3\n\t" #else "sbc r4, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -36796,12 +98342,16 @@ SP_NOINLINE static void sp_256_mont_add_8(sp_digit* r, const sp_digit* a, "str r5, [%[r], #12]\n\t" "mov r4, r8\n\t" "mov r5, r9\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r7\n\t" +#elif defined(__clang__) "sbcs r4, r7\n\t" #else "sbc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -36810,12 +98360,16 @@ SP_NOINLINE static void sp_256_mont_add_8(sp_digit* r, const sp_digit* a, "str r5, [%[r], #20]\n\t" "mov r4, r10\n\t" "mov r5, r11\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r3\n\t" +#elif defined(__clang__) "sbcs r5, r3\n\t" #else "sbc r5, r3\n\t" @@ -36843,22 +98397,28 @@ SP_NOINLINE static void sp_256_mont_dbl_8(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #4]\n\t" "ldr r6, [%[a], #8]\n\t" "ldr r7, [%[a], #12]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, r4\n\t" #else "add r4, r4, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r5\n\t" +#elif defined(__clang__) "adcs r5, r5\n\t" #else "adc r5, r5\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r6, r6, r6\n\t" +#elif defined(__clang__) "adcs r6, r6\n\t" #else "adc r6, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r7\n\t" +#elif defined(__clang__) "adcs r7, r7\n\t" #else "adc r7, r7\n\t" @@ -36871,22 +98431,30 @@ SP_NOINLINE static void sp_256_mont_dbl_8(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #20]\n\t" "ldr r6, [%[a], #24]\n\t" "ldr r7, [%[a], #28]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r4\n\t" +#elif defined(__clang__) "adcs r4, r4\n\t" #else "adc r4, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r5\n\t" +#elif defined(__clang__) "adcs r5, r5\n\t" #else "adc r5, r5\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r6, r6, r6\n\t" +#elif defined(__clang__) "adcs r6, r6\n\t" #else "adc r6, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r7\n\t" +#elif defined(__clang__) "adcs r7, r7\n\t" #else "adc r7, r7\n\t" @@ -36897,18 +98465,20 @@ SP_NOINLINE static void sp_256_mont_dbl_8(sp_digit* r, const sp_digit* a, "mov r11, r7\n\t" "movs r3, #0\n\t" "movs r7, #0\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r3\n\t" +#elif defined(__clang__) "adcs r3, r3\n\t" #else "adc r3, r3\n\t" #endif "movs r2, r3\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r3, r3, #1\n\t" #else "sub r3, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "mvns r3, r3\n\t" #else "mvn r3, r3\n\t" @@ -36916,17 +98486,21 @@ SP_NOINLINE static void sp_256_mont_dbl_8(sp_digit* r, const sp_digit* a, "ldr r4, [%[r]]\n\t" "ldr r5, [%[r], #4]\n\t" "ldr r6, [%[r], #8]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r4, r4, r3\n\t" #else "sub r4, r4, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r3\n\t" +#elif defined(__clang__) "sbcs r5, r3\n\t" #else "sbc r5, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r3\n\t" +#elif defined(__clang__) "sbcs r6, r3\n\t" #else "sbc r6, r3\n\t" @@ -36937,17 +98511,23 @@ SP_NOINLINE static void sp_256_mont_dbl_8(sp_digit* r, const sp_digit* a, "ldr r4, [%[r], #12]\n\t" "mov r5, r8\n\t" "mov r6, r9\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r7\n\t" +#elif defined(__clang__) "sbcs r4, r7\n\t" #else "sbc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r7\n\t" +#elif defined(__clang__) "sbcs r6, r7\n\t" #else "sbc r6, r7\n\t" @@ -36957,12 +98537,16 @@ SP_NOINLINE static void sp_256_mont_dbl_8(sp_digit* r, const sp_digit* a, "str r6, [%[r], #20]\n\t" "mov r4, r10\n\t" "mov r5, r11\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r2\n\t" +#elif defined(__clang__) "sbcs r4, r2\n\t" #else "sbc r4, r2\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r3\n\t" +#elif defined(__clang__) "sbcs r5, r3\n\t" #else "sbc r5, r3\n\t" @@ -36990,22 +98574,28 @@ SP_NOINLINE static void sp_256_mont_tpl_8(sp_digit* r, const sp_digit* a, "ldr r7, [%[a], #4]\n\t" "ldr r4, [%[a], #8]\n\t" "ldr r5, [%[a], #12]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r6, r6, r6\n\t" #else "add r6, r6, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r7\n\t" +#elif defined(__clang__) "adcs r7, r7\n\t" #else "adc r7, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r4\n\t" +#elif defined(__clang__) "adcs r4, r4\n\t" #else "adc r4, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r5\n\t" +#elif defined(__clang__) "adcs r5, r5\n\t" #else "adc r5, r5\n\t" @@ -37016,22 +98606,30 @@ SP_NOINLINE static void sp_256_mont_tpl_8(sp_digit* r, const sp_digit* a, "ldr r3, [%[a], #20]\n\t" "ldr r4, [%[a], #24]\n\t" "ldr r5, [%[a], #28]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r2\n\t" +#elif defined(__clang__) "adcs r2, r2\n\t" #else "adc r2, r2\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r3\n\t" +#elif defined(__clang__) "adcs r3, r3\n\t" #else "adc r3, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r4\n\t" +#elif defined(__clang__) "adcs r4, r4\n\t" #else "adc r4, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r5\n\t" +#elif defined(__clang__) "adcs r5, r5\n\t" #else "adc r5, r5\n\t" @@ -37042,69 +98640,85 @@ SP_NOINLINE static void sp_256_mont_tpl_8(sp_digit* r, const sp_digit* a, "mov lr, r5\n\t" "movs r3, #0\n\t" "movs r5, #0\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r3\n\t" +#elif defined(__clang__) "adcs r3, r3\n\t" #else "adc r3, r3\n\t" #endif "movs r4, r3\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r3, r3, #1\n\t" #else "sub r3, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "mvns r3, r3\n\t" #else "mvn r3, r3\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r6, r6, r3\n\t" #else "sub r6, r6, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r7, r7, r3\n\t" +#elif defined(__clang__) "sbcs r7, r3\n\t" #else "sbc r7, r3\n\t" #endif "mov r2, r8\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r3\n\t" +#elif defined(__clang__) "sbcs r2, r3\n\t" #else "sbc r2, r3\n\t" #endif "mov r8, r2\n\t" "mov r2, r9\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r5\n\t" +#elif defined(__clang__) "sbcs r2, r5\n\t" #else "sbc r2, r5\n\t" #endif "mov r9, r2\n\t" "mov r2, r10\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r5\n\t" +#elif defined(__clang__) "sbcs r2, r5\n\t" #else "sbc r2, r5\n\t" #endif "mov r10, r2\n\t" "mov r2, r11\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r5\n\t" +#elif defined(__clang__) "sbcs r2, r5\n\t" #else "sbc r2, r5\n\t" #endif "mov r11, r2\n\t" "mov r2, r12\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) "sbcs r2, r4\n\t" #else "sbc r2, r4\n\t" #endif "mov r12, r2\n\t" "mov r2, lr\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r3\n\t" +#elif defined(__clang__) "sbcs r2, r3\n\t" #else "sbc r2, r3\n\t" @@ -37112,12 +98726,14 @@ SP_NOINLINE static void sp_256_mont_tpl_8(sp_digit* r, const sp_digit* a, "mov lr, r2\n\t" "ldr r2, [%[a]]\n\t" "ldr r3, [%[a], #4]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r6, r6, r2\n\t" #else "add r6, r6, r2\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r3\n\t" +#elif defined(__clang__) "adcs r7, r3\n\t" #else "adc r7, r3\n\t" @@ -37126,12 +98742,16 @@ SP_NOINLINE static void sp_256_mont_tpl_8(sp_digit* r, const sp_digit* a, "ldr r3, [%[a], #12]\n\t" "mov r4, r8\n\t" "mov r5, r9\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r4\n\t" +#elif defined(__clang__) "adcs r2, r4\n\t" #else "adc r2, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) "adcs r3, r5\n\t" #else "adc r3, r5\n\t" @@ -37142,12 +98762,16 @@ SP_NOINLINE static void sp_256_mont_tpl_8(sp_digit* r, const sp_digit* a, "ldr r3, [%[a], #20]\n\t" "mov r4, r10\n\t" "mov r5, r11\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r4\n\t" +#elif defined(__clang__) "adcs r2, r4\n\t" #else "adc r2, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) "adcs r3, r5\n\t" #else "adc r3, r5\n\t" @@ -37158,12 +98782,16 @@ SP_NOINLINE static void sp_256_mont_tpl_8(sp_digit* r, const sp_digit* a, "ldr r3, [%[a], #28]\n\t" "mov r4, r12\n\t" "mov r5, lr\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r4\n\t" +#elif defined(__clang__) "adcs r2, r4\n\t" #else "adc r2, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) "adcs r3, r5\n\t" #else "adc r3, r5\n\t" @@ -37172,71 +98800,87 @@ SP_NOINLINE static void sp_256_mont_tpl_8(sp_digit* r, const sp_digit* a, "mov lr, r3\n\t" "movs r3, #0\n\t" "movs r5, #0\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r3\n\t" +#elif defined(__clang__) "adcs r3, r3\n\t" #else "adc r3, r3\n\t" #endif "movs r4, r3\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r3, r3, #1\n\t" #else "sub r3, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "mvns r3, r3\n\t" #else "mvn r3, r3\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r6, r6, r3\n\t" #else "sub r6, r6, r3\n\t" #endif "str r6, [%[r]]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r7, r7, r3\n\t" +#elif defined(__clang__) "sbcs r7, r3\n\t" #else "sbc r7, r3\n\t" #endif "str r7, [%[r], #4]\n\t" "mov r2, r8\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r3\n\t" +#elif defined(__clang__) "sbcs r2, r3\n\t" #else "sbc r2, r3\n\t" #endif "str r2, [%[r], #8]\n\t" "mov r2, r9\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r5\n\t" +#elif defined(__clang__) "sbcs r2, r5\n\t" #else "sbc r2, r5\n\t" #endif "str r2, [%[r], #12]\n\t" "mov r2, r10\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r5\n\t" +#elif defined(__clang__) "sbcs r2, r5\n\t" #else "sbc r2, r5\n\t" #endif "str r2, [%[r], #16]\n\t" "mov r2, r11\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r5\n\t" +#elif defined(__clang__) "sbcs r2, r5\n\t" #else "sbc r2, r5\n\t" #endif "str r2, [%[r], #20]\n\t" "mov r2, r12\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) "sbcs r2, r4\n\t" #else "sbc r2, r4\n\t" #endif "str r2, [%[r], #24]\n\t" "mov r2, lr\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r3\n\t" +#elif defined(__clang__) "sbcs r2, r3\n\t" #else "sbc r2, r3\n\t" @@ -37264,12 +98908,14 @@ SP_NOINLINE static void sp_256_mont_sub_8(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #4]\n\t" "ldr r6, [%[b]]\n\t" "ldr r7, [%[b], #4]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r4, r4, r6\n\t" #else "sub r4, r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -37280,12 +98926,16 @@ SP_NOINLINE static void sp_256_mont_sub_8(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #12]\n\t" "ldr r6, [%[b], #8]\n\t" "ldr r7, [%[b], #12]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -37296,12 +98946,16 @@ SP_NOINLINE static void sp_256_mont_sub_8(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #20]\n\t" "ldr r6, [%[b], #16]\n\t" "ldr r7, [%[b], #20]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -37312,24 +98966,30 @@ SP_NOINLINE static void sp_256_mont_sub_8(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #28]\n\t" "ldr r6, [%[b], #24]\n\t" "ldr r7, [%[b], #28]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" #endif "mov r10, r4\n\t" "mov r11, r5\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r3\n\t" +#elif defined(__clang__) "sbcs r3, r3\n\t" #else "sbc r3, r3\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r3, #31\n\t" #else "lsr r7, r3, #31\n\t" @@ -37337,12 +98997,14 @@ SP_NOINLINE static void sp_256_mont_sub_8(sp_digit* r, const sp_digit* a, "movs r6, #0\n\t" "ldr r4, [%[r]]\n\t" "ldr r5, [%[r], #4]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, r3\n\t" #else "add r4, r4, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r3\n\t" +#elif defined(__clang__) "adcs r5, r3\n\t" #else "adc r5, r3\n\t" @@ -37351,12 +99013,16 @@ SP_NOINLINE static void sp_256_mont_sub_8(sp_digit* r, const sp_digit* a, "str r5, [%[r], #4]\n\t" "ldr r4, [%[r], #8]\n\t" "ldr r5, [%[r], #12]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r3\n\t" +#elif defined(__clang__) "adcs r4, r3\n\t" #else "adc r4, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r6\n\t" +#elif defined(__clang__) "adcs r5, r6\n\t" #else "adc r5, r6\n\t" @@ -37365,12 +99031,16 @@ SP_NOINLINE static void sp_256_mont_sub_8(sp_digit* r, const sp_digit* a, "str r5, [%[r], #12]\n\t" "mov r4, r8\n\t" "mov r5, r9\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) "adcs r4, r6\n\t" #else "adc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r6\n\t" +#elif defined(__clang__) "adcs r5, r6\n\t" #else "adc r5, r6\n\t" @@ -37379,12 +99049,16 @@ SP_NOINLINE static void sp_256_mont_sub_8(sp_digit* r, const sp_digit* a, "str r5, [%[r], #20]\n\t" "mov r4, r10\n\t" "mov r5, r11\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r3\n\t" +#elif defined(__clang__) "adcs r5, r3\n\t" #else "adc r5, r3\n\t" @@ -37409,41 +99083,43 @@ SP_NOINLINE static void sp_256_div2_8(sp_digit* r, const sp_digit* a, (void)m; __asm__ __volatile__ ( "ldr r6, [%[a]]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #31\n\t" #else "lsl r6, r6, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, #31\n\t" #else "lsr r6, r6, #31\n\t" #endif "movs r4, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r4, r4, r6\n\t" #else "sub r4, r4, r6\n\t" #endif "movs r6, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r4, #31\n\t" #else "lsl r5, r4, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r5, #31\n\t" #else "lsr r5, r5, #31\n\t" #endif "ldr r2, [%[a]]\n\t" "ldr r3, [%[a], #4]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r4\n\t" +#elif defined(__clang__) "adcs r3, r4\n\t" #else "adc r3, r4\n\t" @@ -37452,12 +99128,16 @@ SP_NOINLINE static void sp_256_div2_8(sp_digit* r, const sp_digit* a, "str r3, [%[r], #4]\n\t" "ldr r2, [%[a], #8]\n\t" "ldr r3, [%[a], #12]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r4\n\t" +#elif defined(__clang__) "adcs r2, r4\n\t" #else "adc r2, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) "adcs r3, r6\n\t" #else "adc r3, r6\n\t" @@ -37466,12 +99146,16 @@ SP_NOINLINE static void sp_256_div2_8(sp_digit* r, const sp_digit* a, "str r3, [%[r], #12]\n\t" "ldr r2, [%[a], #16]\n\t" "ldr r3, [%[a], #20]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) "adcs r2, r6\n\t" #else "adc r2, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) "adcs r3, r6\n\t" #else "adc r3, r6\n\t" @@ -37480,52 +99164,62 @@ SP_NOINLINE static void sp_256_div2_8(sp_digit* r, const sp_digit* a, "str r3, [%[r], #20]\n\t" "ldr r2, [%[a], #24]\n\t" "ldr r3, [%[a], #28]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r5\n\t" +#elif defined(__clang__) "adcs r2, r5\n\t" #else "adc r2, r5\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r4\n\t" +#elif defined(__clang__) "adcs r3, r4\n\t" #else "adc r3, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r6, r6, r6\n\t" +#elif defined(__clang__) "adcs r6, r6\n\t" #else "adc r6, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #31\n\t" #else "lsl r6, r6, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r4, r2, #1\n\t" #else "lsr r4, r2, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r2, r2, #31\n\t" #else "lsl r2, r2, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #1\n\t" #else "lsr r5, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, #31\n\t" #else "lsl r3, r3, #31\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r3\n\t" +#elif defined(__clang__) "orrs r4, r3\n\t" #else "orr r4, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" @@ -37535,32 +99229,36 @@ SP_NOINLINE static void sp_256_div2_8(sp_digit* r, const sp_digit* a, "str r5, [%[r], #28]\n\t" "ldr r2, [%[r], #16]\n\t" "ldr r3, [%[r], #20]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r4, r2, #1\n\t" #else "lsr r4, r2, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r2, r2, #31\n\t" #else "lsl r2, r2, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #1\n\t" #else "lsr r5, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, #31\n\t" #else "lsl r3, r3, #31\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r3\n\t" +#elif defined(__clang__) "orrs r4, r3\n\t" #else "orr r4, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" @@ -37570,32 +99268,36 @@ SP_NOINLINE static void sp_256_div2_8(sp_digit* r, const sp_digit* a, "str r5, [%[r], #20]\n\t" "ldr r2, [%[r], #8]\n\t" "ldr r3, [%[r], #12]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r4, r2, #1\n\t" #else "lsr r4, r2, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r2, r2, #31\n\t" #else "lsl r2, r2, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #1\n\t" #else "lsr r5, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, #31\n\t" #else "lsl r3, r3, #31\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r3\n\t" +#elif defined(__clang__) "orrs r4, r3\n\t" #else "orr r4, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" @@ -37605,27 +99307,31 @@ SP_NOINLINE static void sp_256_div2_8(sp_digit* r, const sp_digit* a, "str r5, [%[r], #12]\n\t" "ldr r2, [%[r]]\n\t" "ldr r3, [%[r], #4]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r4, r2, #1\n\t" #else "lsr r4, r2, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #1\n\t" #else "lsr r5, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, #31\n\t" #else "lsl r3, r3, #31\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r3\n\t" +#elif defined(__clang__) "orrs r4, r3\n\t" #else "orr r4, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" @@ -41117,7 +102823,7 @@ SP_NOINLINE static void sp_256_add_one_8(sp_digit* a) __asm__ __volatile__ ( "movs r2, #1\n\t" "ldr r1, [%[a]]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r1, r1, r2\n\t" #else "add r1, r1, r2\n\t" @@ -41125,49 +102831,63 @@ SP_NOINLINE static void sp_256_add_one_8(sp_digit* a) "movs r2, #0\n\t" "str r1, [%[a]]\n\t" "ldr r1, [%[a], #4]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r1, r1, r2\n\t" +#elif defined(__clang__) "adcs r1, r2\n\t" #else "adc r1, r2\n\t" #endif "str r1, [%[a], #4]\n\t" "ldr r1, [%[a], #8]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r1, r1, r2\n\t" +#elif defined(__clang__) "adcs r1, r2\n\t" #else "adc r1, r2\n\t" #endif "str r1, [%[a], #8]\n\t" "ldr r1, [%[a], #12]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r1, r1, r2\n\t" +#elif defined(__clang__) "adcs r1, r2\n\t" #else "adc r1, r2\n\t" #endif "str r1, [%[a], #12]\n\t" "ldr r1, [%[a], #16]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r1, r1, r2\n\t" +#elif defined(__clang__) "adcs r1, r2\n\t" #else "adc r1, r2\n\t" #endif "str r1, [%[a], #16]\n\t" "ldr r1, [%[a], #20]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r1, r1, r2\n\t" +#elif defined(__clang__) "adcs r1, r2\n\t" #else "adc r1, r2\n\t" #endif "str r1, [%[a], #20]\n\t" "ldr r1, [%[a], #24]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r1, r1, r2\n\t" +#elif defined(__clang__) "adcs r1, r2\n\t" #else "adc r1, r2\n\t" #endif "str r1, [%[a], #24]\n\t" "ldr r1, [%[a], #28]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r1, r1, r2\n\t" +#elif defined(__clang__) "adcs r1, r2\n\t" #else "adc r1, r2\n\t" @@ -41448,15 +103168,15 @@ SP_NOINLINE static sp_digit sp_256_sub_in_place_8(sp_digit* a, __asm__ __volatile__ ( "movs r7, %[a]\n\t" "movs r2, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r7, r7, #32\n\t" #else "add r7, r7, #32\n\t" #endif "\n" - "L_sp_256_sub_in_place_8_words_%=: \n\t" + "L_sp_256_sub_in_place_8_words_%=:\n\t" "movs r5, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r5, r5, r2\n\t" #else "sub r5, r5, r2\n\t" @@ -41465,29 +103185,35 @@ SP_NOINLINE static sp_digit sp_256_sub_in_place_8(sp_digit* a, "ldr r4, [%[a], #4]\n\t" "ldr r5, [%[b]]\n\t" "ldr r6, [%[b], #4]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif "str r3, [%[a]]\n\t" "str r4, [%[a], #4]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r2\n\t" +#elif defined(__clang__) "sbcs r2, r2\n\t" #else "sbc r2, r2\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[a], %[a], #8\n\t" #else "add %[a], %[a], #8\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[b], %[b], #8\n\t" #else "add %[b], %[b], #8\n\t" @@ -41512,80 +103238,86 @@ SP_NOINLINE static sp_digit sp_256_sub_in_place_8(sp_digit* a, const sp_digit* b) { __asm__ __volatile__ ( - "movs r2, #0\n\t" - "ldr r3, [%[a]]\n\t" - "ldr r4, [%[a], #4]\n\t" - "ldr r5, [%[b]]\n\t" - "ldr r6, [%[b], #4]\n\t" -#ifdef __clang__ - "subs r3, r3, r5\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "subs r2, r2, r4\n\t" #else - "sub r3, r3, r5\n\t" + "sub r2, r2, r4\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" -#else - "sbc r4, r6\n\t" -#endif - "str r3, [%[a]]\n\t" - "str r4, [%[a], #4]\n\t" - "ldr r3, [%[a], #8]\n\t" - "ldr r4, [%[a], #12]\n\t" - "ldr r5, [%[b], #8]\n\t" - "ldr r6, [%[b], #12]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #8]\n\t" - "str r4, [%[a], #12]\n\t" - "ldr r3, [%[a], #16]\n\t" - "ldr r4, [%[a], #20]\n\t" - "ldr r5, [%[b], #16]\n\t" - "ldr r6, [%[b], #20]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #16]\n\t" - "str r4, [%[a], #20]\n\t" - "ldr r3, [%[a], #24]\n\t" - "ldr r4, [%[a], #28]\n\t" - "ldr r5, [%[b], #24]\n\t" - "ldr r6, [%[b], #28]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #24]\n\t" - "str r4, [%[a], #28]\n\t" -#ifdef __clang__ - "sbcs r2, r2\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r2, r2\n\t" + "sbc r3, r5\n\t" +#endif + "stm %[a]!, {r2, r3}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs %[a], %[a], %[a]\n\t" +#elif defined(__clang__) + "sbcs %[a], %[a]\n\t" +#else + "sbc %[a], %[a]\n\t" #endif - "movs %[a], r2\n\t" : [a] "+r" (a), [b] "+r" (b) : - : "memory", "r2", "r3", "r4", "r5", "r6" + : "memory", "r2", "r3", "r4", "r5" ); return (uint32_t)(size_t)a; } @@ -41602,7 +103334,7 @@ SP_NOINLINE static void sp_256_mul_d_8(sp_digit* r, const sp_digit* a, { __asm__ __volatile__ ( "movs r6, #32\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r6, r6, %[a]\n\t" #else "add r6, r6, %[a]\n\t" @@ -41612,148 +103344,142 @@ SP_NOINLINE static void sp_256_mul_d_8(sp_digit* r, const sp_digit* a, "movs r3, #0\n\t" "movs r4, #0\n\t" "\n" - "L_sp_256_mul_d_8_%=: \n\t" + "L_sp_256_mul_d_8_%=:\n\t" "movs %[r], #0\n\t" "movs r5, #0\n\t" "# A[] * B\n\t" - "ldr r6, [%[a]]\n\t" -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsls r7, %[b], #16\n\t" -#else - "lsl r7, %[b], #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ + "ldrh r6, [%[a]]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) "muls r7, r6\n\t" #else "mul r7, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r7\n\t" #else "add r3, r3, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) "adcs r4, %[r]\n\t" #else "adc r4, %[r]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, %[b], #16\n\t" #else "lsr r7, %[b], #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) "muls r6, r7\n\t" #else "mul r6, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r6, #16\n\t" #else "lsr r7, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #16\n\t" #else "lsl r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif "ldr r6, [%[a]]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, #16\n\t" #else "lsr r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, %[b], #16\n\t" #else "lsr r7, %[b], #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) "muls r7, r6\n\t" #else "mul r7, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, r7\n\t" #else "add r4, r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif -#ifdef __clang__ - "lsls r7, %[b], #16\n\t" -#else - "lsl r7, %[b], #16\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) "muls r6, r7\n\t" #else "mul r6, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r6, #16\n\t" #else "lsr r7, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #16\n\t" #else "lsl r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" @@ -41763,12 +103489,12 @@ SP_NOINLINE static void sp_256_mul_d_8(sp_digit* r, const sp_digit* a, "str r3, [%[r]]\n\t" "movs r3, r4\n\t" "movs r4, r5\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[r], %[r], #4\n\t" #else "add %[r], %[r], #4\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[a], %[a], #4\n\t" #else "add %[a], %[a], #4\n\t" @@ -41797,12 +103523,12 @@ SP_NOINLINE static sp_digit div_256_word_8(sp_digit d1, sp_digit d0, { __asm__ __volatile__ ( "movs r3, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, %[div], #1\n\t" #else "lsr r5, %[div], #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r5, r5, #1\n\t" #else "add r5, r5, #1\n\t" @@ -41811,326 +103537,307 @@ SP_NOINLINE static sp_digit div_256_word_8(sp_digit d1, sp_digit d0, "mov r9, %[d1]\n\t" "# Do top 32\n\t" "movs r6, r5\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r6, r6, %[d1]\n\t" #else "sub r6, r6, %[d1]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r6\n\t" +#elif defined(__clang__) "sbcs r6, r6\n\t" #else "sbc r6, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r3\n\t" #else "add r3, r3, r3\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r3, r3, r6\n\t" #else "sub r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, r5\n\t" +#elif defined(__clang__) "ands r6, r5\n\t" #else "and r6, r5\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[d1], %[d1], r6\n\t" #else "sub %[d1], %[d1], r6\n\t" #endif - "\n\t" "movs r4, #29\n\t" "\n" - "L_div_256_word_8_loop_%=: \n\t" -#ifdef __clang__ + "L_div_256_word_8_loop_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls %[d0], %[d0], #1\n\t" #else "lsl %[d0], %[d0], #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs %[d1], %[d1], %[d1]\n\t" +#elif defined(__clang__) "adcs %[d1], %[d1]\n\t" #else "adc %[d1], %[d1]\n\t" #endif "movs r6, r5\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r6, r6, %[d1]\n\t" #else "sub r6, r6, %[d1]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r6\n\t" +#elif defined(__clang__) "sbcs r6, r6\n\t" #else "sbc r6, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r3\n\t" #else "add r3, r3, r3\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r3, r3, r6\n\t" #else "sub r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, r5\n\t" +#elif defined(__clang__) "ands r6, r5\n\t" #else "and r6, r5\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[d1], %[d1], r6\n\t" #else "sub %[d1], %[d1], r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r4, r4, #1\n\t" #else "sub r4, r4, #1\n\t" #endif "bpl L_div_256_word_8_loop_%=\n\t" "movs r7, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r3\n\t" #else "add r3, r3, r3\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, #1\n\t" #else "add r3, r3, #1\n\t" #endif "# r * div - Start\n\t" -#ifdef __clang__ - "lsls %[d1], r3, #16\n\t" -#else - "lsl %[d1], r3, #16\n\t" -#endif -#ifdef __clang__ - "lsls r4, %[div], #16\n\t" -#else - "lsl r4, %[div], #16\n\t" -#endif -#ifdef __clang__ - "lsrs %[d1], %[d1], #16\n\t" -#else - "lsr %[d1], %[d1], #16\n\t" -#endif -#ifdef __clang__ - "lsrs r4, r4, #16\n\t" -#else - "lsr r4, r4, #16\n\t" -#endif -#ifdef __clang__ + "uxth %[d1], r3\n\t" + "uxth r4, %[div]\n\t" +#ifdef WOLFSSL_KEIL + "muls r4, %[d1], r4\n\t" +#elif defined(__clang__) "muls r4, %[d1]\n\t" #else "mul r4, %[d1]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, %[div], #16\n\t" #else "lsr r6, %[div], #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls %[d1], r6, %[d1]\n\t" +#elif defined(__clang__) "muls %[d1], r6\n\t" #else "mul %[d1], r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, %[d1], #16\n\t" #else "lsr r5, %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls %[d1], %[d1], #16\n\t" #else "lsl %[d1], %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, %[d1]\n\t" #else "add r4, r4, %[d1]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs %[d1], r3, #16\n\t" #else "lsr %[d1], r3, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r6, %[d1], r6\n\t" +#elif defined(__clang__) "muls r6, %[d1]\n\t" #else "mul r6, %[d1]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r5, r5, r6\n\t" #else "add r5, r5, r6\n\t" #endif -#ifdef __clang__ - "lsls r6, %[div], #16\n\t" -#else - "lsl r6, %[div], #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ + "uxth r6, %[div]\n\t" +#ifdef WOLFSSL_KEIL + "muls %[d1], r6, %[d1]\n\t" +#elif defined(__clang__) "muls %[d1], r6\n\t" #else "mul %[d1], r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, %[d1], #16\n\t" #else "lsr r6, %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls %[d1], %[d1], #16\n\t" #else "lsl %[d1], %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, %[d1]\n\t" #else "add r4, r4, %[d1]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r6\n\t" +#elif defined(__clang__) "adcs r5, r6\n\t" #else "adc r5, r6\n\t" #endif "# r * div - Done\n\t" "mov %[d1], r8\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[d1], %[d1], r4\n\t" #else "sub %[d1], %[d1], r4\n\t" #endif "movs r4, %[d1]\n\t" "mov %[d1], r9\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs %[d1], %[d1], r5\n\t" +#elif defined(__clang__) "sbcs %[d1], r5\n\t" #else "sbc %[d1], r5\n\t" #endif "movs r5, %[d1]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r5\n\t" #else "add r3, r3, r5\n\t" #endif "# r * div - Start\n\t" -#ifdef __clang__ - "lsls %[d1], r3, #16\n\t" -#else - "lsl %[d1], r3, #16\n\t" -#endif -#ifdef __clang__ - "lsls r4, %[div], #16\n\t" -#else - "lsl r4, %[div], #16\n\t" -#endif -#ifdef __clang__ - "lsrs %[d1], %[d1], #16\n\t" -#else - "lsr %[d1], %[d1], #16\n\t" -#endif -#ifdef __clang__ - "lsrs r4, r4, #16\n\t" -#else - "lsr r4, r4, #16\n\t" -#endif -#ifdef __clang__ + "uxth %[d1], r3\n\t" + "uxth r4, %[div]\n\t" +#ifdef WOLFSSL_KEIL + "muls r4, %[d1], r4\n\t" +#elif defined(__clang__) "muls r4, %[d1]\n\t" #else "mul r4, %[d1]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, %[div], #16\n\t" #else "lsr r6, %[div], #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls %[d1], r6, %[d1]\n\t" +#elif defined(__clang__) "muls %[d1], r6\n\t" #else "mul %[d1], r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, %[d1], #16\n\t" #else "lsr r5, %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls %[d1], %[d1], #16\n\t" #else "lsl %[d1], %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, %[d1]\n\t" #else "add r4, r4, %[d1]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs %[d1], r3, #16\n\t" #else "lsr %[d1], r3, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r6, %[d1], r6\n\t" +#elif defined(__clang__) "muls r6, %[d1]\n\t" #else "mul r6, %[d1]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r5, r5, r6\n\t" #else "add r5, r5, r6\n\t" #endif -#ifdef __clang__ - "lsls r6, %[div], #16\n\t" -#else - "lsl r6, %[div], #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ + "uxth r6, %[div]\n\t" +#ifdef WOLFSSL_KEIL + "muls %[d1], r6, %[d1]\n\t" +#elif defined(__clang__) "muls %[d1], r6\n\t" #else "mul %[d1], r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, %[d1], #16\n\t" #else "lsr r6, %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls %[d1], %[d1], #16\n\t" #else "lsl %[d1], %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, %[d1]\n\t" #else "add r4, r4, %[d1]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r6\n\t" +#elif defined(__clang__) "adcs r5, r6\n\t" #else "adc r5, r6\n\t" @@ -42138,124 +103845,115 @@ SP_NOINLINE static sp_digit div_256_word_8(sp_digit d1, sp_digit d0, "# r * div - Done\n\t" "mov %[d1], r8\n\t" "mov r6, r9\n\t" +#ifdef WOLFSSL_KEIL + "subs r4, %[d1], r4\n\t" +#else #ifdef __clang__ "subs r4, %[d1], r4\n\t" #else "sub r4, %[d1], r4\n\t" #endif -#ifdef __clang__ +#endif +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r5\n\t" +#elif defined(__clang__) "sbcs r6, r5\n\t" #else "sbc r6, r5\n\t" #endif "movs r5, r6\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r5\n\t" #else "add r3, r3, r5\n\t" #endif "# r * div - Start\n\t" -#ifdef __clang__ - "lsls %[d1], r3, #16\n\t" -#else - "lsl %[d1], r3, #16\n\t" -#endif -#ifdef __clang__ - "lsls r4, %[div], #16\n\t" -#else - "lsl r4, %[div], #16\n\t" -#endif -#ifdef __clang__ - "lsrs %[d1], %[d1], #16\n\t" -#else - "lsr %[d1], %[d1], #16\n\t" -#endif -#ifdef __clang__ - "lsrs r4, r4, #16\n\t" -#else - "lsr r4, r4, #16\n\t" -#endif -#ifdef __clang__ + "uxth %[d1], r3\n\t" + "uxth r4, %[div]\n\t" +#ifdef WOLFSSL_KEIL + "muls r4, %[d1], r4\n\t" +#elif defined(__clang__) "muls r4, %[d1]\n\t" #else "mul r4, %[d1]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, %[div], #16\n\t" #else "lsr r6, %[div], #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls %[d1], r6, %[d1]\n\t" +#elif defined(__clang__) "muls %[d1], r6\n\t" #else "mul %[d1], r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, %[d1], #16\n\t" #else "lsr r5, %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls %[d1], %[d1], #16\n\t" #else "lsl %[d1], %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, %[d1]\n\t" #else "add r4, r4, %[d1]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs %[d1], r3, #16\n\t" #else "lsr %[d1], r3, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r6, %[d1], r6\n\t" +#elif defined(__clang__) "muls r6, %[d1]\n\t" #else "mul r6, %[d1]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r5, r5, r6\n\t" #else "add r5, r5, r6\n\t" #endif -#ifdef __clang__ - "lsls r6, %[div], #16\n\t" -#else - "lsl r6, %[div], #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ + "uxth r6, %[div]\n\t" +#ifdef WOLFSSL_KEIL + "muls %[d1], r6, %[d1]\n\t" +#elif defined(__clang__) "muls %[d1], r6\n\t" #else "mul %[d1], r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, %[d1], #16\n\t" #else "lsr r6, %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls %[d1], %[d1], #16\n\t" #else "lsl %[d1], %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, %[d1]\n\t" #else "add r4, r4, %[d1]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r6\n\t" +#elif defined(__clang__) "adcs r5, r6\n\t" #else "adc r5, r6\n\t" @@ -42263,34 +103961,42 @@ SP_NOINLINE static sp_digit div_256_word_8(sp_digit d1, sp_digit d0, "# r * div - Done\n\t" "mov %[d1], r8\n\t" "mov r6, r9\n\t" +#ifdef WOLFSSL_KEIL + "subs r4, %[d1], r4\n\t" +#else #ifdef __clang__ "subs r4, %[d1], r4\n\t" #else "sub r4, %[d1], r4\n\t" #endif -#ifdef __clang__ +#endif +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r5\n\t" +#elif defined(__clang__) "sbcs r6, r5\n\t" #else "sbc r6, r5\n\t" #endif "movs r5, r6\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r5\n\t" #else "add r3, r3, r5\n\t" #endif "movs r6, %[div]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r6, r6, r4\n\t" #else "sub r6, r6, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r6\n\t" +#elif defined(__clang__) "sbcs r6, r6\n\t" #else "sbc r6, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r3, r3, r6\n\t" #else "sub r3, r3, r6\n\t" @@ -42946,124 +104652,138 @@ static void sp_256_rshift1_8(sp_digit* r, const sp_digit* a) __asm__ __volatile__ ( "ldr r2, [%[a]]\n\t" "ldr r3, [%[a], #4]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r2, r2, #1\n\t" #else "lsr r2, r2, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r3, #31\n\t" #else "lsl r5, r3, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r3, r3, #1\n\t" #else "lsr r3, r3, #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r2, r2, r5\n\t" +#elif defined(__clang__) "orrs r2, r5\n\t" #else "orr r2, r5\n\t" #endif "ldr r4, [%[a], #8]\n\t" "str r2, [%[r]]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r4, #31\n\t" #else "lsl r5, r4, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r4, r4, #1\n\t" #else "lsr r4, r4, #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r5\n\t" +#elif defined(__clang__) "orrs r3, r5\n\t" #else "orr r3, r5\n\t" #endif "ldr r2, [%[a], #12]\n\t" "str r3, [%[r], #4]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r2, #31\n\t" #else "lsl r5, r2, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r2, r2, #1\n\t" #else "lsr r2, r2, #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r5\n\t" +#elif defined(__clang__) "orrs r4, r5\n\t" #else "orr r4, r5\n\t" #endif "ldr r3, [%[a], #16]\n\t" "str r4, [%[r], #8]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r3, #31\n\t" #else "lsl r5, r3, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r3, r3, #1\n\t" #else "lsr r3, r3, #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r2, r2, r5\n\t" +#elif defined(__clang__) "orrs r2, r5\n\t" #else "orr r2, r5\n\t" #endif "ldr r4, [%[a], #20]\n\t" "str r2, [%[r], #12]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r4, #31\n\t" #else "lsl r5, r4, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r4, r4, #1\n\t" #else "lsr r4, r4, #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r5\n\t" +#elif defined(__clang__) "orrs r3, r5\n\t" #else "orr r3, r5\n\t" #endif "ldr r2, [%[a], #24]\n\t" "str r3, [%[r], #16]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r2, #31\n\t" #else "lsl r5, r2, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r2, r2, #1\n\t" #else "lsr r2, r2, #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r5\n\t" +#elif defined(__clang__) "orrs r4, r5\n\t" #else "orr r4, r5\n\t" #endif "ldr r3, [%[a], #28]\n\t" "str r4, [%[r], #20]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r3, #31\n\t" #else "lsl r5, r3, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r3, r3, #1\n\t" #else "lsr r3, r3, #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r2, r2, r5\n\t" +#elif defined(__clang__) "orrs r2, r5\n\t" #else "orr r2, r5\n\t" @@ -43086,13 +104806,13 @@ static void sp_256_div2_mod_8(sp_digit* r, const sp_digit* a, const sp_digit* m) { __asm__ __volatile__ ( "ldr r7, [%[a]]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r7, r7, #31\n\t" #else "lsl r7, r7, #31\n\t" #endif "beq L_sp_256_div2_mod_8_no_add_%=\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r7, #31\n\t" #else "lsr r7, r7, #31\n\t" @@ -43101,12 +104821,14 @@ static void sp_256_div2_mod_8(sp_digit* r, const sp_digit* a, const sp_digit* m) "ldr r6, [%[m], #4]\n\t" "ldr r3, [%[a]]\n\t" "ldr r4, [%[a], #4]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r5\n\t" #else "add r3, r3, r5\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) "adcs r4, r6\n\t" #else "adc r4, r6\n\t" @@ -43117,12 +104839,16 @@ static void sp_256_div2_mod_8(sp_digit* r, const sp_digit* a, const sp_digit* m) "ldr r6, [%[m], #12]\n\t" "ldr r3, [%[a], #8]\n\t" "ldr r4, [%[a], #12]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) "adcs r3, r5\n\t" #else "adc r3, r5\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) "adcs r4, r6\n\t" #else "adc r4, r6\n\t" @@ -43133,12 +104859,16 @@ static void sp_256_div2_mod_8(sp_digit* r, const sp_digit* a, const sp_digit* m) "ldr r6, [%[m], #20]\n\t" "ldr r3, [%[a], #16]\n\t" "ldr r4, [%[a], #20]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) "adcs r3, r5\n\t" #else "adc r3, r5\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) "adcs r4, r6\n\t" #else "adc r4, r6\n\t" @@ -43149,60 +104879,70 @@ static void sp_256_div2_mod_8(sp_digit* r, const sp_digit* a, const sp_digit* m) "ldr r6, [%[m], #28]\n\t" "ldr r3, [%[a], #24]\n\t" "ldr r4, [%[a], #28]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) "adcs r3, r5\n\t" #else "adc r3, r5\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) "adcs r4, r6\n\t" #else "adc r4, r6\n\t" #endif "movs r7, #0\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r7\n\t" +#elif defined(__clang__) "adcs r7, r7\n\t" #else "adc r7, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r7, r7, #31\n\t" #else "lsl r7, r7, #31\n\t" #endif "b L_sp_256_div2_mod_8_div2_%=\n\t" "\n" - "L_sp_256_div2_mod_8_no_add_%=: \n\t" + "L_sp_256_div2_mod_8_no_add_%=:\n\t" "ldr r3, [%[a], #24]\n\t" "ldr r4, [%[a], #28]\n\t" "\n" - "L_sp_256_div2_mod_8_div2_%=: \n\t" -#ifdef __clang__ + "L_sp_256_div2_mod_8_div2_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #1\n\t" #else "lsr r5, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, #31\n\t" #else "lsl r3, r3, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, #31\n\t" #else "lsl r4, r4, #31\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r4\n\t" +#elif defined(__clang__) "orrs r5, r4\n\t" #else "orr r5, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r6, r6, r7\n\t" +#elif defined(__clang__) "orrs r6, r7\n\t" #else "orr r6, r7\n\t" @@ -43212,32 +104952,36 @@ static void sp_256_div2_mod_8(sp_digit* r, const sp_digit* a, const sp_digit* m) "str r6, [%[r], #28]\n\t" "ldr r3, [%[a], #16]\n\t" "ldr r4, [%[a], #20]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #1\n\t" #else "lsr r5, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, #31\n\t" #else "lsl r3, r3, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, #31\n\t" #else "lsl r4, r4, #31\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r4\n\t" +#elif defined(__clang__) "orrs r5, r4\n\t" #else "orr r5, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r6, r6, r7\n\t" +#elif defined(__clang__) "orrs r6, r7\n\t" #else "orr r6, r7\n\t" @@ -43247,32 +104991,36 @@ static void sp_256_div2_mod_8(sp_digit* r, const sp_digit* a, const sp_digit* m) "str r6, [%[r], #20]\n\t" "ldr r3, [%[a], #8]\n\t" "ldr r4, [%[a], #12]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #1\n\t" #else "lsr r5, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, #31\n\t" #else "lsl r3, r3, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, #31\n\t" #else "lsl r4, r4, #31\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r4\n\t" +#elif defined(__clang__) "orrs r5, r4\n\t" #else "orr r5, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r6, r6, r7\n\t" +#elif defined(__clang__) "orrs r6, r7\n\t" #else "orr r6, r7\n\t" @@ -43282,27 +105030,31 @@ static void sp_256_div2_mod_8(sp_digit* r, const sp_digit* a, const sp_digit* m) "str r6, [%[r], #12]\n\t" "ldr r3, [%[r]]\n\t" "ldr r4, [%[r], #4]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #1\n\t" #else "lsr r5, r3, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r4, #1\n\t" #else "lsr r6, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r4, r4, #31\n\t" #else "lsl r4, r4, #31\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r4\n\t" +#elif defined(__clang__) "orrs r5, r4\n\t" #else "orr r5, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r6, r6, r7\n\t" +#elif defined(__clang__) "orrs r6, r7\n\t" #else "orr r6, r7\n\t" @@ -43341,7 +105093,7 @@ static int sp_256_num_bits_8(sp_digit* a) "ldr r3, [%[a], #28]\n\t" "cmp r3, #0\n\t" "beq L_sp_256_num_bits_8_7_%=\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #24\n\t" #else "lsr r5, r3, #24\n\t" @@ -43350,20 +105102,22 @@ static int sp_256_num_bits_8(sp_digit* a) "beq L_sp_256_num_bits_8_93_%=\n\t" "movs r2, #0xf8\n\t" "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_256_num_bits_8_9_%=\n\t" "\n" - "L_sp_256_num_bits_8_93_%=: \n\t" -#ifdef __clang__ + "L_sp_256_num_bits_8_93_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #16\n\t" #else "lsr r5, r3, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r6\n\t" +#elif defined(__clang__) "ands r5, r6\n\t" #else "and r5, r6\n\t" @@ -43372,20 +105126,22 @@ static int sp_256_num_bits_8(sp_digit* a) "beq L_sp_256_num_bits_8_92_%=\n\t" "movs r2, #0xf0\n\t" "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_256_num_bits_8_9_%=\n\t" "\n" - "L_sp_256_num_bits_8_92_%=: \n\t" -#ifdef __clang__ + "L_sp_256_num_bits_8_92_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #8\n\t" #else "lsr r5, r3, #8\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r6\n\t" +#elif defined(__clang__) "ands r5, r6\n\t" #else "and r5, r6\n\t" @@ -43394,16 +105150,18 @@ static int sp_256_num_bits_8(sp_digit* a) "beq L_sp_256_num_bits_8_91_%=\n\t" "movs r2, #0xe8\n\t" "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_256_num_bits_8_9_%=\n\t" "\n" - "L_sp_256_num_bits_8_91_%=: \n\t" + "L_sp_256_num_bits_8_91_%=:\n\t" "movs r5, r3\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r6\n\t" +#elif defined(__clang__) "ands r5, r6\n\t" #else "and r5, r6\n\t" @@ -43412,21 +105170,21 @@ static int sp_256_num_bits_8(sp_digit* a) "beq L_sp_256_num_bits_8_90_%=\n\t" "movs r2, #0xe0\n\t" "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_256_num_bits_8_9_%=\n\t" "\n" - "L_sp_256_num_bits_8_90_%=: \n\t" + "L_sp_256_num_bits_8_90_%=:\n\t" "b L_sp_256_num_bits_8_9_%=\n\t" "\n" - "L_sp_256_num_bits_8_7_%=: \n\t" + "L_sp_256_num_bits_8_7_%=:\n\t" "ldr r3, [%[a], #24]\n\t" "cmp r3, #0\n\t" "beq L_sp_256_num_bits_8_6_%=\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #24\n\t" #else "lsr r5, r3, #24\n\t" @@ -43435,20 +105193,22 @@ static int sp_256_num_bits_8(sp_digit* a) "beq L_sp_256_num_bits_8_83_%=\n\t" "movs r2, #0xd8\n\t" "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_256_num_bits_8_9_%=\n\t" "\n" - "L_sp_256_num_bits_8_83_%=: \n\t" -#ifdef __clang__ + "L_sp_256_num_bits_8_83_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #16\n\t" #else "lsr r5, r3, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r6\n\t" +#elif defined(__clang__) "ands r5, r6\n\t" #else "and r5, r6\n\t" @@ -43457,20 +105217,22 @@ static int sp_256_num_bits_8(sp_digit* a) "beq L_sp_256_num_bits_8_82_%=\n\t" "movs r2, #0xd0\n\t" "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_256_num_bits_8_9_%=\n\t" "\n" - "L_sp_256_num_bits_8_82_%=: \n\t" -#ifdef __clang__ + "L_sp_256_num_bits_8_82_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #8\n\t" #else "lsr r5, r3, #8\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r6\n\t" +#elif defined(__clang__) "ands r5, r6\n\t" #else "and r5, r6\n\t" @@ -43479,16 +105241,18 @@ static int sp_256_num_bits_8(sp_digit* a) "beq L_sp_256_num_bits_8_81_%=\n\t" "movs r2, #0xc8\n\t" "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_256_num_bits_8_9_%=\n\t" "\n" - "L_sp_256_num_bits_8_81_%=: \n\t" + "L_sp_256_num_bits_8_81_%=:\n\t" "movs r5, r3\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r6\n\t" +#elif defined(__clang__) "ands r5, r6\n\t" #else "and r5, r6\n\t" @@ -43497,21 +105261,21 @@ static int sp_256_num_bits_8(sp_digit* a) "beq L_sp_256_num_bits_8_80_%=\n\t" "movs r2, #0xc0\n\t" "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_256_num_bits_8_9_%=\n\t" "\n" - "L_sp_256_num_bits_8_80_%=: \n\t" + "L_sp_256_num_bits_8_80_%=:\n\t" "b L_sp_256_num_bits_8_9_%=\n\t" "\n" - "L_sp_256_num_bits_8_6_%=: \n\t" + "L_sp_256_num_bits_8_6_%=:\n\t" "ldr r3, [%[a], #20]\n\t" "cmp r3, #0\n\t" "beq L_sp_256_num_bits_8_5_%=\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #24\n\t" #else "lsr r5, r3, #24\n\t" @@ -43520,20 +105284,22 @@ static int sp_256_num_bits_8(sp_digit* a) "beq L_sp_256_num_bits_8_73_%=\n\t" "movs r2, #0xb8\n\t" "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_256_num_bits_8_9_%=\n\t" "\n" - "L_sp_256_num_bits_8_73_%=: \n\t" -#ifdef __clang__ + "L_sp_256_num_bits_8_73_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #16\n\t" #else "lsr r5, r3, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r6\n\t" +#elif defined(__clang__) "ands r5, r6\n\t" #else "and r5, r6\n\t" @@ -43542,20 +105308,22 @@ static int sp_256_num_bits_8(sp_digit* a) "beq L_sp_256_num_bits_8_72_%=\n\t" "movs r2, #0xb0\n\t" "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_256_num_bits_8_9_%=\n\t" "\n" - "L_sp_256_num_bits_8_72_%=: \n\t" -#ifdef __clang__ + "L_sp_256_num_bits_8_72_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #8\n\t" #else "lsr r5, r3, #8\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r6\n\t" +#elif defined(__clang__) "ands r5, r6\n\t" #else "and r5, r6\n\t" @@ -43564,16 +105332,18 @@ static int sp_256_num_bits_8(sp_digit* a) "beq L_sp_256_num_bits_8_71_%=\n\t" "movs r2, #0xa8\n\t" "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_256_num_bits_8_9_%=\n\t" "\n" - "L_sp_256_num_bits_8_71_%=: \n\t" + "L_sp_256_num_bits_8_71_%=:\n\t" "movs r5, r3\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r6\n\t" +#elif defined(__clang__) "ands r5, r6\n\t" #else "and r5, r6\n\t" @@ -43582,21 +105352,21 @@ static int sp_256_num_bits_8(sp_digit* a) "beq L_sp_256_num_bits_8_70_%=\n\t" "movs r2, #0xa0\n\t" "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_256_num_bits_8_9_%=\n\t" "\n" - "L_sp_256_num_bits_8_70_%=: \n\t" + "L_sp_256_num_bits_8_70_%=:\n\t" "b L_sp_256_num_bits_8_9_%=\n\t" "\n" - "L_sp_256_num_bits_8_5_%=: \n\t" + "L_sp_256_num_bits_8_5_%=:\n\t" "ldr r3, [%[a], #16]\n\t" "cmp r3, #0\n\t" "beq L_sp_256_num_bits_8_4_%=\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #24\n\t" #else "lsr r5, r3, #24\n\t" @@ -43605,20 +105375,22 @@ static int sp_256_num_bits_8(sp_digit* a) "beq L_sp_256_num_bits_8_63_%=\n\t" "movs r2, #0x98\n\t" "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_256_num_bits_8_9_%=\n\t" "\n" - "L_sp_256_num_bits_8_63_%=: \n\t" -#ifdef __clang__ + "L_sp_256_num_bits_8_63_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #16\n\t" #else "lsr r5, r3, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r6\n\t" +#elif defined(__clang__) "ands r5, r6\n\t" #else "and r5, r6\n\t" @@ -43627,20 +105399,22 @@ static int sp_256_num_bits_8(sp_digit* a) "beq L_sp_256_num_bits_8_62_%=\n\t" "movs r2, #0x90\n\t" "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_256_num_bits_8_9_%=\n\t" "\n" - "L_sp_256_num_bits_8_62_%=: \n\t" -#ifdef __clang__ + "L_sp_256_num_bits_8_62_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #8\n\t" #else "lsr r5, r3, #8\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r6\n\t" +#elif defined(__clang__) "ands r5, r6\n\t" #else "and r5, r6\n\t" @@ -43649,16 +105423,18 @@ static int sp_256_num_bits_8(sp_digit* a) "beq L_sp_256_num_bits_8_61_%=\n\t" "movs r2, #0x88\n\t" "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_256_num_bits_8_9_%=\n\t" "\n" - "L_sp_256_num_bits_8_61_%=: \n\t" + "L_sp_256_num_bits_8_61_%=:\n\t" "movs r5, r3\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r6\n\t" +#elif defined(__clang__) "ands r5, r6\n\t" #else "and r5, r6\n\t" @@ -43667,21 +105443,21 @@ static int sp_256_num_bits_8(sp_digit* a) "beq L_sp_256_num_bits_8_60_%=\n\t" "movs r2, #0x80\n\t" "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_256_num_bits_8_9_%=\n\t" "\n" - "L_sp_256_num_bits_8_60_%=: \n\t" + "L_sp_256_num_bits_8_60_%=:\n\t" "b L_sp_256_num_bits_8_9_%=\n\t" "\n" - "L_sp_256_num_bits_8_4_%=: \n\t" + "L_sp_256_num_bits_8_4_%=:\n\t" "ldr r3, [%[a], #12]\n\t" "cmp r3, #0\n\t" "beq L_sp_256_num_bits_8_3_%=\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #24\n\t" #else "lsr r5, r3, #24\n\t" @@ -43690,20 +105466,22 @@ static int sp_256_num_bits_8(sp_digit* a) "beq L_sp_256_num_bits_8_53_%=\n\t" "movs r2, #0x78\n\t" "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_256_num_bits_8_9_%=\n\t" "\n" - "L_sp_256_num_bits_8_53_%=: \n\t" -#ifdef __clang__ + "L_sp_256_num_bits_8_53_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #16\n\t" #else "lsr r5, r3, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r6\n\t" +#elif defined(__clang__) "ands r5, r6\n\t" #else "and r5, r6\n\t" @@ -43712,20 +105490,22 @@ static int sp_256_num_bits_8(sp_digit* a) "beq L_sp_256_num_bits_8_52_%=\n\t" "movs r2, #0x70\n\t" "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_256_num_bits_8_9_%=\n\t" "\n" - "L_sp_256_num_bits_8_52_%=: \n\t" -#ifdef __clang__ + "L_sp_256_num_bits_8_52_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #8\n\t" #else "lsr r5, r3, #8\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r6\n\t" +#elif defined(__clang__) "ands r5, r6\n\t" #else "and r5, r6\n\t" @@ -43734,16 +105514,18 @@ static int sp_256_num_bits_8(sp_digit* a) "beq L_sp_256_num_bits_8_51_%=\n\t" "movs r2, #0x68\n\t" "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_256_num_bits_8_9_%=\n\t" "\n" - "L_sp_256_num_bits_8_51_%=: \n\t" + "L_sp_256_num_bits_8_51_%=:\n\t" "movs r5, r3\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r6\n\t" +#elif defined(__clang__) "ands r5, r6\n\t" #else "and r5, r6\n\t" @@ -43752,21 +105534,21 @@ static int sp_256_num_bits_8(sp_digit* a) "beq L_sp_256_num_bits_8_50_%=\n\t" "movs r2, #0x60\n\t" "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_256_num_bits_8_9_%=\n\t" "\n" - "L_sp_256_num_bits_8_50_%=: \n\t" + "L_sp_256_num_bits_8_50_%=:\n\t" "b L_sp_256_num_bits_8_9_%=\n\t" "\n" - "L_sp_256_num_bits_8_3_%=: \n\t" + "L_sp_256_num_bits_8_3_%=:\n\t" "ldr r3, [%[a], #8]\n\t" "cmp r3, #0\n\t" "beq L_sp_256_num_bits_8_2_%=\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #24\n\t" #else "lsr r5, r3, #24\n\t" @@ -43775,20 +105557,22 @@ static int sp_256_num_bits_8(sp_digit* a) "beq L_sp_256_num_bits_8_43_%=\n\t" "movs r2, #0x58\n\t" "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_256_num_bits_8_9_%=\n\t" "\n" - "L_sp_256_num_bits_8_43_%=: \n\t" -#ifdef __clang__ + "L_sp_256_num_bits_8_43_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #16\n\t" #else "lsr r5, r3, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r6\n\t" +#elif defined(__clang__) "ands r5, r6\n\t" #else "and r5, r6\n\t" @@ -43797,20 +105581,22 @@ static int sp_256_num_bits_8(sp_digit* a) "beq L_sp_256_num_bits_8_42_%=\n\t" "movs r2, #0x50\n\t" "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_256_num_bits_8_9_%=\n\t" "\n" - "L_sp_256_num_bits_8_42_%=: \n\t" -#ifdef __clang__ + "L_sp_256_num_bits_8_42_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #8\n\t" #else "lsr r5, r3, #8\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r6\n\t" +#elif defined(__clang__) "ands r5, r6\n\t" #else "and r5, r6\n\t" @@ -43819,16 +105605,18 @@ static int sp_256_num_bits_8(sp_digit* a) "beq L_sp_256_num_bits_8_41_%=\n\t" "movs r2, #0x48\n\t" "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_256_num_bits_8_9_%=\n\t" "\n" - "L_sp_256_num_bits_8_41_%=: \n\t" + "L_sp_256_num_bits_8_41_%=:\n\t" "movs r5, r3\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r6\n\t" +#elif defined(__clang__) "ands r5, r6\n\t" #else "and r5, r6\n\t" @@ -43837,21 +105625,21 @@ static int sp_256_num_bits_8(sp_digit* a) "beq L_sp_256_num_bits_8_40_%=\n\t" "movs r2, #0x40\n\t" "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_256_num_bits_8_9_%=\n\t" "\n" - "L_sp_256_num_bits_8_40_%=: \n\t" + "L_sp_256_num_bits_8_40_%=:\n\t" "b L_sp_256_num_bits_8_9_%=\n\t" "\n" - "L_sp_256_num_bits_8_2_%=: \n\t" + "L_sp_256_num_bits_8_2_%=:\n\t" "ldr r3, [%[a], #4]\n\t" "cmp r3, #0\n\t" "beq L_sp_256_num_bits_8_1_%=\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #24\n\t" #else "lsr r5, r3, #24\n\t" @@ -43860,20 +105648,22 @@ static int sp_256_num_bits_8(sp_digit* a) "beq L_sp_256_num_bits_8_33_%=\n\t" "movs r2, #56\n\t" "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_256_num_bits_8_9_%=\n\t" "\n" - "L_sp_256_num_bits_8_33_%=: \n\t" -#ifdef __clang__ + "L_sp_256_num_bits_8_33_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #16\n\t" #else "lsr r5, r3, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r6\n\t" +#elif defined(__clang__) "ands r5, r6\n\t" #else "and r5, r6\n\t" @@ -43882,20 +105672,22 @@ static int sp_256_num_bits_8(sp_digit* a) "beq L_sp_256_num_bits_8_32_%=\n\t" "movs r2, #48\n\t" "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_256_num_bits_8_9_%=\n\t" "\n" - "L_sp_256_num_bits_8_32_%=: \n\t" -#ifdef __clang__ + "L_sp_256_num_bits_8_32_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #8\n\t" #else "lsr r5, r3, #8\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r6\n\t" +#elif defined(__clang__) "ands r5, r6\n\t" #else "and r5, r6\n\t" @@ -43904,16 +105696,18 @@ static int sp_256_num_bits_8(sp_digit* a) "beq L_sp_256_num_bits_8_31_%=\n\t" "movs r2, #40\n\t" "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_256_num_bits_8_9_%=\n\t" "\n" - "L_sp_256_num_bits_8_31_%=: \n\t" + "L_sp_256_num_bits_8_31_%=:\n\t" "movs r5, r3\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r6\n\t" +#elif defined(__clang__) "ands r5, r6\n\t" #else "and r5, r6\n\t" @@ -43922,19 +105716,19 @@ static int sp_256_num_bits_8(sp_digit* a) "beq L_sp_256_num_bits_8_30_%=\n\t" "movs r2, #32\n\t" "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_256_num_bits_8_9_%=\n\t" "\n" - "L_sp_256_num_bits_8_30_%=: \n\t" + "L_sp_256_num_bits_8_30_%=:\n\t" "b L_sp_256_num_bits_8_9_%=\n\t" "\n" - "L_sp_256_num_bits_8_1_%=: \n\t" + "L_sp_256_num_bits_8_1_%=:\n\t" "ldr r3, [%[a]]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #24\n\t" #else "lsr r5, r3, #24\n\t" @@ -43943,20 +105737,22 @@ static int sp_256_num_bits_8(sp_digit* a) "beq L_sp_256_num_bits_8_23_%=\n\t" "movs r2, #24\n\t" "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_256_num_bits_8_9_%=\n\t" "\n" - "L_sp_256_num_bits_8_23_%=: \n\t" -#ifdef __clang__ + "L_sp_256_num_bits_8_23_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #16\n\t" #else "lsr r5, r3, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r6\n\t" +#elif defined(__clang__) "ands r5, r6\n\t" #else "and r5, r6\n\t" @@ -43965,20 +105761,22 @@ static int sp_256_num_bits_8(sp_digit* a) "beq L_sp_256_num_bits_8_22_%=\n\t" "movs r2, #16\n\t" "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_256_num_bits_8_9_%=\n\t" "\n" - "L_sp_256_num_bits_8_22_%=: \n\t" -#ifdef __clang__ + "L_sp_256_num_bits_8_22_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #8\n\t" #else "lsr r5, r3, #8\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r6\n\t" +#elif defined(__clang__) "ands r5, r6\n\t" #else "and r5, r6\n\t" @@ -43987,16 +105785,18 @@ static int sp_256_num_bits_8(sp_digit* a) "beq L_sp_256_num_bits_8_21_%=\n\t" "movs r2, #8\n\t" "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_256_num_bits_8_9_%=\n\t" "\n" - "L_sp_256_num_bits_8_21_%=: \n\t" + "L_sp_256_num_bits_8_21_%=:\n\t" "movs r5, r3\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r6\n\t" +#elif defined(__clang__) "ands r5, r6\n\t" #else "and r5, r6\n\t" @@ -44005,16 +105805,16 @@ static int sp_256_num_bits_8(sp_digit* a) "beq L_sp_256_num_bits_8_20_%=\n\t" "movs r2, #0\n\t" "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_256_num_bits_8_9_%=\n\t" "\n" - "L_sp_256_num_bits_8_20_%=: \n\t" + "L_sp_256_num_bits_8_20_%=:\n\t" "\n" - "L_sp_256_num_bits_8_9_%=: \n\t" + "L_sp_256_num_bits_8_9_%=:\n\t" "movs %[a], r2\n\t" : [a] "+r" (a), [table] "+r" (table) : @@ -45125,33 +106925,37 @@ SP_NOINLINE static void sp_384_mul_12(sp_digit* r, const sp_digit* a, "add r6, r6, r9\n\t" "mov r12, r6\n\t" "\n" - "L_sp_384_mul_12_words_%=: \n\t" + "L_sp_384_mul_12_words_%=:\n\t" "movs %[tmp], #0\n\t" "movs r5, #0\n\t" "movs r6, #44\n\t" "mov %[a], r8\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[a], %[a], r6\n\t" #else "sub %[a], %[a], r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r6\n\t" +#elif defined(__clang__) "sbcs r6, r6\n\t" #else "sbc r6, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "mvns r6, r6\n\t" #else "mvn r6, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands %[a], %[a], r6\n\t" +#elif defined(__clang__) "ands %[a], r6\n\t" #else "and %[a], r6\n\t" #endif "mov %[b], r8\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[b], %[b], %[a]\n\t" #else "sub %[b], %[b], %[a]\n\t" @@ -45159,161 +106963,153 @@ SP_NOINLINE static void sp_384_mul_12(sp_digit* r, const sp_digit* a, "add %[a], %[a], r9\n\t" "add %[b], %[b], r10\n\t" "\n" - "L_sp_384_mul_12_mul_%=: \n\t" + "L_sp_384_mul_12_mul_%=:\n\t" "# Multiply Start\n\t" - "ldr r6, [%[a]]\n\t" - "ldr r7, [%[b]]\n\t" -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsls r7, r7, #16\n\t" -#else - "lsl r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ + "ldrh r6, [%[a]]\n\t" + "ldrh r7, [%[b]]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) "muls r7, r6\n\t" #else "mul r7, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r7\n\t" #else "add r3, r3, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[tmp]\n\t" +#elif defined(__clang__) "adcs r4, %[tmp]\n\t" #else "adc r4, %[tmp]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[tmp]\n\t" +#elif defined(__clang__) "adcs r5, %[tmp]\n\t" #else "adc r5, %[tmp]\n\t" #endif "ldr r7, [%[b]]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r7, #16\n\t" #else "lsr r7, r7, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) "muls r6, r7\n\t" #else "mul r6, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r6, #16\n\t" #else "lsr r7, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #16\n\t" #else "lsl r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[tmp]\n\t" +#elif defined(__clang__) "adcs r5, %[tmp]\n\t" #else "adc r5, %[tmp]\n\t" #endif "ldr r6, [%[a]]\n\t" "ldr r7, [%[b]]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, #16\n\t" #else "lsr r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r7, #16\n\t" #else "lsr r7, r7, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) "muls r7, r6\n\t" #else "mul r7, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, r7\n\t" #else "add r4, r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[tmp]\n\t" +#elif defined(__clang__) "adcs r5, %[tmp]\n\t" #else "adc r5, %[tmp]\n\t" #endif - "ldr r7, [%[b]]\n\t" -#ifdef __clang__ - "lsls r7, r7, #16\n\t" -#else - "lsl r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ + "ldrh r7, [%[b]]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) "muls r6, r7\n\t" #else "mul r6, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r6, #16\n\t" #else "lsr r7, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #16\n\t" #else "lsl r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[tmp]\n\t" +#elif defined(__clang__) "adcs r5, %[tmp]\n\t" #else "adc r5, %[tmp]\n\t" #endif "# Multiply Done\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[a], %[a], #4\n\t" #else "add %[a], %[a], #4\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[b], %[b], #4\n\t" #else "sub %[b], %[b], #4\n\t" @@ -45325,13 +107121,13 @@ SP_NOINLINE static void sp_384_mul_12(sp_digit* r, const sp_digit* a, "cmp %[a], r6\n\t" "ble L_sp_384_mul_12_mul_%=\n\t" "\n" - "L_sp_384_mul_12_done_mul_%=: \n\t" + "L_sp_384_mul_12_done_mul_%=:\n\t" "mov %[tmp], r11\n\t" "mov r7, r8\n\t" "str r3, [%[tmp], r7]\n\t" "movs r3, r4\n\t" "movs r4, r5\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r7, r7, #4\n\t" #else "add r7, r7, #4\n\t" @@ -45365,7 +107161,7 @@ SP_NOINLINE static void sp_384_sqr_12(sp_digit* r, const sp_digit* a) "mov r8, r3\n\t" "mov r11, %[r]\n\t" "movs r6, #0x60\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "negs r6, r6\n\t" #else "neg r6, r6\n\t" @@ -45374,32 +107170,36 @@ SP_NOINLINE static void sp_384_sqr_12(sp_digit* r, const sp_digit* a) "mov r10, sp\n\t" "mov r9, %[a]\n\t" "\n" - "L_sp_384_sqr_12_words_%=: \n\t" + "L_sp_384_sqr_12_words_%=:\n\t" "movs %[r], #0\n\t" "movs r6, #44\n\t" "mov %[a], r8\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[a], %[a], r6\n\t" #else "sub %[a], %[a], r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r6\n\t" +#elif defined(__clang__) "sbcs r6, r6\n\t" #else "sbc r6, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "mvns r6, r6\n\t" #else "mvn r6, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands %[a], %[a], r6\n\t" +#elif defined(__clang__) "ands %[a], r6\n\t" #else "and %[a], r6\n\t" #endif "mov r2, r8\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r2, r2, %[a]\n\t" #else "sub r2, r2, %[a]\n\t" @@ -45407,207 +107207,213 @@ SP_NOINLINE static void sp_384_sqr_12(sp_digit* r, const sp_digit* a) "add %[a], %[a], r9\n\t" "add r2, r2, r9\n\t" "\n" - "L_sp_384_sqr_12_mul_%=: \n\t" + "L_sp_384_sqr_12_mul_%=:\n\t" "cmp r2, %[a]\n\t" "beq L_sp_384_sqr_12_sqr_%=\n\t" "# Multiply * 2: Start\n\t" - "ldr r6, [%[a]]\n\t" - "ldr r7, [r2]\n\t" -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsls r7, r7, #16\n\t" -#else - "lsl r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ + "ldrh r6, [%[a]]\n\t" + "ldrh r7, [r2]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) "muls r7, r6\n\t" #else "mul r7, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r7\n\t" #else "add r3, r3, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) "adcs r4, %[r]\n\t" #else "adc r4, %[r]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r7\n\t" #else "add r3, r3, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) "adcs r4, %[r]\n\t" #else "adc r4, %[r]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif "ldr r7, [r2]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r7, #16\n\t" #else "lsr r7, r7, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) "muls r6, r7\n\t" #else "mul r6, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r6, #16\n\t" #else "lsr r7, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #16\n\t" #else "lsl r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif "ldr r6, [%[a]]\n\t" "ldr r7, [r2]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, #16\n\t" #else "lsr r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r7, #16\n\t" #else "lsr r7, r7, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) "muls r7, r6\n\t" #else "mul r7, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, r7\n\t" #else "add r4, r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, r7\n\t" #else "add r4, r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif - "ldr r7, [r2]\n\t" -#ifdef __clang__ - "lsls r7, r7, #16\n\t" -#else - "lsl r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ + "ldrh r7, [r2]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) "muls r6, r7\n\t" #else "mul r6, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r6, #16\n\t" #else "lsr r7, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #16\n\t" #else "lsl r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" @@ -45615,114 +107421,101 @@ SP_NOINLINE static void sp_384_sqr_12(sp_digit* r, const sp_digit* a) "# Multiply * 2: Done\n\t" "bal L_sp_384_sqr_12_done_sqr_%=\n\t" "\n" - "L_sp_384_sqr_12_sqr_%=: \n\t" + "L_sp_384_sqr_12_sqr_%=:\n\t" + "mov r12, r2\n\t" + "ldr r2, [%[a]]\n\t" "# Square: Start\n\t" - "ldr r6, [%[a]]\n\t" -#ifdef __clang__ - "lsrs r7, r6, #16\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r2, #16\n\t" #else - "lsr r7, r6, #16\n\t" + "lsr r7, r2, #16\n\t" #endif -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ + "uxth r6, r2\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r6, r6\n\t" +#elif defined(__clang__) "muls r6, r6\n\t" #else "mul r6, r6\n\t" #endif -#ifdef __clang__ - "adds r3, r3, r6\n\t" -#else - "add r3, r3, r6\n\t" -#endif -#ifdef __clang__ - "adcs r4, %[r]\n\t" -#else - "adc r4, %[r]\n\t" -#endif -#ifdef __clang__ - "adcs r5, %[r]\n\t" -#else - "adc r5, %[r]\n\t" -#endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r7, r7, r7\n\t" +#elif defined(__clang__) "muls r7, r7\n\t" #else "mul r7, r7\n\t" #endif -#ifdef __clang__ - "adds r4, r4, r7\n\t" -#else - "add r4, r4, r7\n\t" -#endif -#ifdef __clang__ - "adcs r5, %[r]\n\t" -#else - "adc r5, %[r]\n\t" -#endif - "ldr r6, [%[a]]\n\t" -#ifdef __clang__ - "lsrs r7, r6, #16\n\t" -#else - "lsr r7, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "muls r6, r7\n\t" -#else - "mul r6, r7\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r6, #15\n\t" -#else - "lsr r7, r6, #15\n\t" -#endif -#ifdef __clang__ - "lsls r6, r6, #17\n\t" -#else - "lsl r6, r6, #17\n\t" -#endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r2, #16\n\t" +#else + "lsr r7, r2, #16\n\t" +#endif + "uxth r6, r2\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #15\n\t" +#else + "lsr r7, r6, #15\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #17\n\t" +#else + "lsl r6, r6, #17\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif "# Square: Done\n\t" + "mov r2, r12\n\t" "\n" - "L_sp_384_sqr_12_done_sqr_%=: \n\t" -#ifdef __clang__ + "L_sp_384_sqr_12_done_sqr_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[a], %[a], #4\n\t" #else "add %[a], %[a], #4\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r2, r2, #4\n\t" #else "sub r2, r2, #4\n\t" @@ -45738,14 +107531,14 @@ SP_NOINLINE static void sp_384_sqr_12(sp_digit* r, const sp_digit* a) "cmp %[a], r7\n\t" "ble L_sp_384_sqr_12_mul_%=\n\t" "\n" - "L_sp_384_sqr_12_done_mul_%=: \n\t" + "L_sp_384_sqr_12_done_mul_%=:\n\t" "mov %[r], r10\n\t" "mov r7, r8\n\t" "str r3, [%[r], r7]\n\t" "movs r3, r4\n\t" "movs r4, r5\n\t" "movs r5, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r7, r7, #4\n\t" #else "add r7, r7, #4\n\t" @@ -45760,10 +107553,10 @@ SP_NOINLINE static void sp_384_sqr_12(sp_digit* r, const sp_digit* a) "mov %[a], r10\n\t" "movs r3, #0x5c\n\t" "\n" - "L_sp_384_sqr_12_store_%=: \n\t" + "L_sp_384_sqr_12_store_%=:\n\t" "ldr r6, [%[a], r3]\n\t" "str r6, [%[r], r3]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r3, r3, #4\n\t" #else "sub r3, r3, #4\n\t" @@ -45773,7 +107566,7 @@ SP_NOINLINE static void sp_384_sqr_12(sp_digit* r, const sp_digit* a) "add sp, sp, r6\n\t" : [r] "+r" (r), [a] "+r" (a) : - : "memory", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11" + : "memory", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12" ); } @@ -45791,48 +107584,52 @@ SP_NOINLINE static sp_digit sp_384_add_12(sp_digit* r, const sp_digit* a, "movs r6, %[a]\n\t" "movs r7, #0\n\t" "movs r3, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r6, r6, #48\n\t" #else "add r6, r6, #48\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r7, r7, #1\n\t" #else "sub r7, r7, #1\n\t" #endif "\n" - "L_sp_384_add_12_word_%=: \n\t" -#ifdef __clang__ + "L_sp_384_add_12_word_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r7\n\t" #else "add r3, r3, r7\n\t" #endif "ldr r4, [%[a]]\n\t" "ldr r5, [%[b]]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) "adcs r4, r5\n\t" #else "adc r4, r5\n\t" #endif "str r4, [%[r]]\n\t" "movs r3, #0\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r3\n\t" +#elif defined(__clang__) "adcs r3, r3\n\t" #else "adc r3, r3\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[a], %[a], #4\n\t" #else "add %[a], %[a], #4\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[b], %[b], #4\n\t" #else "add %[b], %[b], #4\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[r], %[r], #4\n\t" #else "add %[r], %[r], #4\n\t" @@ -45858,112 +107655,117 @@ SP_NOINLINE static sp_digit sp_384_add_12(sp_digit* r, const sp_digit* a, const sp_digit* b) { __asm__ __volatile__ ( - "ldr r4, [%[a]]\n\t" - "ldr r5, [%[b]]\n\t" -#ifdef __clang__ - "adds r4, r4, r5\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" #else - "add r4, r4, r5\n\t" + "add r3, r3, r5\n\t" #endif - "str r4, [%[r]]\n\t" - "ldr r4, [%[a], #4]\n\t" - "ldr r5, [%[b], #4]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #4]\n\t" - "ldr r4, [%[a], #8]\n\t" - "ldr r5, [%[b], #8]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #8]\n\t" - "ldr r4, [%[a], #12]\n\t" - "ldr r5, [%[b], #12]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #12]\n\t" - "ldr r4, [%[a], #16]\n\t" - "ldr r5, [%[b], #16]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #16]\n\t" - "ldr r4, [%[a], #20]\n\t" - "ldr r5, [%[b], #20]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #20]\n\t" - "ldr r4, [%[a], #24]\n\t" - "ldr r5, [%[b], #24]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #24]\n\t" - "ldr r4, [%[a], #28]\n\t" - "ldr r5, [%[b], #28]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #28]\n\t" - "ldr r4, [%[a], #32]\n\t" - "ldr r5, [%[b], #32]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #32]\n\t" - "ldr r4, [%[a], #36]\n\t" - "ldr r5, [%[b], #36]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #36]\n\t" - "ldr r4, [%[a], #40]\n\t" - "ldr r5, [%[b], #40]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #40]\n\t" - "ldr r4, [%[a], #44]\n\t" - "ldr r5, [%[b], #44]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #44]\n\t" - "movs r3, #0\n\t" -#ifdef __clang__ - "adcs r3, r3\n\t" + "stm %[r]!, {r3, r4}\n\t" + "movs %[r], #0\n\t" +#ifdef WOLFSSL_KEIL + "adcs %[r], %[r], %[r]\n\t" +#elif defined(__clang__) + "adcs %[r], %[r]\n\t" #else - "adc r3, r3\n\t" + "adc %[r], %[r]\n\t" #endif - "movs %[r], r3\n\t" : [r] "+r" (r), [a] "+r" (a), [b] "+r" (b) : - : "memory", "r3", "r4", "r5" + : "memory", "r3", "r4", "r5", "r6" ); return (uint32_t)(size_t)r; } @@ -45982,43 +107784,47 @@ SP_NOINLINE static sp_digit sp_384_sub_12(sp_digit* r, const sp_digit* a, __asm__ __volatile__ ( "movs r6, %[a]\n\t" "movs r3, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r6, r6, #48\n\t" #else "add r6, r6, #48\n\t" #endif "\n" - "L_sp_384_sub_12_word_%=: \n\t" + "L_sp_384_sub_12_word_%=:\n\t" "movs r5, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r5, r5, r3\n\t" #else "sub r5, r5, r3\n\t" #endif "ldr r4, [%[a]]\n\t" "ldr r5, [%[b]]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r5\n\t" +#elif defined(__clang__) "sbcs r4, r5\n\t" #else "sbc r4, r5\n\t" #endif "str r4, [%[r]]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r3\n\t" +#elif defined(__clang__) "sbcs r3, r3\n\t" #else "sbc r3, r3\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[a], %[a], #4\n\t" #else "add %[a], %[a], #4\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[b], %[b], #4\n\t" #else "add %[b], %[b], #4\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[r], %[r], #4\n\t" #else "add %[r], %[r], #4\n\t" @@ -46044,112 +107850,116 @@ SP_NOINLINE static sp_digit sp_384_sub_12(sp_digit* r, const sp_digit* a, const sp_digit* b) { __asm__ __volatile__ ( - "movs r3, #0\n\t" - "ldr r4, [%[a]]\n\t" - "ldr r5, [%[a], #4]\n\t" - "ldr r6, [%[b]]\n\t" - "ldr r7, [%[b], #4]\n\t" -#ifdef __clang__ - "subs r4, r4, r6\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "subs r3, r3, r5\n\t" #else - "sub r4, r4, r6\n\t" + "sub r3, r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" -#else - "sbc r5, r7\n\t" -#endif - "str r4, [%[r]]\n\t" - "str r5, [%[r], #4]\n\t" - "ldr r4, [%[a], #8]\n\t" - "ldr r5, [%[a], #12]\n\t" - "ldr r6, [%[b], #8]\n\t" - "ldr r7, [%[b], #12]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #8]\n\t" - "str r5, [%[r], #12]\n\t" - "ldr r4, [%[a], #16]\n\t" - "ldr r5, [%[a], #20]\n\t" - "ldr r6, [%[b], #16]\n\t" - "ldr r7, [%[b], #20]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #16]\n\t" - "str r5, [%[r], #20]\n\t" - "ldr r4, [%[a], #24]\n\t" - "ldr r5, [%[a], #28]\n\t" - "ldr r6, [%[b], #24]\n\t" - "ldr r7, [%[b], #28]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #24]\n\t" - "str r5, [%[r], #28]\n\t" - "ldr r4, [%[a], #32]\n\t" - "ldr r5, [%[a], #36]\n\t" - "ldr r6, [%[b], #32]\n\t" - "ldr r7, [%[b], #36]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #32]\n\t" - "str r5, [%[r], #36]\n\t" - "ldr r4, [%[a], #40]\n\t" - "ldr r5, [%[a], #44]\n\t" - "ldr r6, [%[b], #40]\n\t" - "ldr r7, [%[b], #44]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #40]\n\t" - "str r5, [%[r], #44]\n\t" -#ifdef __clang__ - "sbcs r3, r3\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) + "sbcs r4, r6\n\t" #else - "sbc r3, r3\n\t" + "sbc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs %[r], %[r], %[r]\n\t" +#elif defined(__clang__) + "sbcs %[r], %[r]\n\t" +#else + "sbc %[r], %[r]\n\t" #endif - "movs %[r], r3\n\t" : [r] "+r" (r), [a] "+r" (a), [b] "+r" (b) : - : "memory", "r3", "r4", "r5", "r6", "r7" + : "memory", "r3", "r4", "r5", "r6" ); return (uint32_t)(size_t)r; } @@ -46466,32 +108276,38 @@ SP_NOINLINE static sp_digit sp_384_cond_sub_12(sp_digit* r, const sp_digit* a, "mov r8, r5\n\t" "movs r7, #0\n\t" "\n" - "L_sp_384_cond_sub_12_words_%=: \n\t" + "L_sp_384_cond_sub_12_words_%=:\n\t" "ldr r6, [%[b], r7]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, %[m]\n\t" +#elif defined(__clang__) "ands r6, %[m]\n\t" #else "and r6, %[m]\n\t" #endif "movs r5, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r5, r5, r4\n\t" #else "sub r5, r5, r4\n\t" #endif "ldr r5, [%[a], r7]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) "sbcs r5, r6\n\t" #else "sbc r5, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r4\n\t" +#elif defined(__clang__) "sbcs r4, r4\n\t" #else "sbc r4, r4\n\t" #endif "str r5, [%[r], r7]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r7, r7, #4\n\t" #else "add r7, r7, #4\n\t" @@ -46517,374 +108333,721 @@ SP_NOINLINE static sp_digit sp_384_cond_sub_12(sp_digit* r, const sp_digit* a, SP_NOINLINE static void sp_384_mont_reduce_12(sp_digit* a, const sp_digit* m, sp_digit mp) { - sp_digit ca = 0; __asm__ __volatile__ ( + "movs r7, #0\n\t" "mov r8, %[mp]\n\t" - "mov r12, %[ca]\n\t" + "mov r12, r7\n\t" "mov lr, %[m]\n\t" "mov r9, %[a]\n\t" + "mov r11, %[a]\n\t" + "movs r5, #44\n\t" + "movs r6, #48\n\t" + "add r9, r9, r5\n\t" + "add r11, r11, r6\n\t" + "\n" + "L_sp_384_mont_reduce_12_mod_%=:\n\t" + "movs r7, #0\n\t" "movs r4, #0\n\t" - "# i = 0\n\t" - "mov r11, r4\n\t" - "\n" - "L_sp_384_mont_reduce_12_mod_%=: \n\t" - "movs r5, #0\n\t" - "movs %[ca], #0\n\t" + "# a[i] += m[0] * mu\n\t" + "ldm %[m]!, {%[mp]}\n\t" + "ldm %[a]!, {r3}\n\t" "# mu = a[i] * mp\n\t" - "mov %[mp], r8\n\t" - "ldr %[a], [%[a]]\n\t" -#ifdef __clang__ - "muls %[mp], %[a]\n\t" + "mov r5, r8\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r3, r5\n\t" +#elif defined(__clang__) + "muls r5, r3\n\t" #else - "mul %[mp], %[a]\n\t" + "mul r5, r3\n\t" #endif - "mov %[m], lr\n\t" - "mov r10, r9\n\t" - "\n" - "L_sp_384_mont_reduce_12_word_%=: \n\t" - "# a[i+j] += m[j] * mu\n\t" - "mov %[a], r10\n\t" - "ldr %[a], [%[a]]\n\t" - "movs %[ca], #0\n\t" - "movs r4, r5\n\t" - "movs r5, #0\n\t" - "# Multiply m[j] and mu - Start\n\t" - "ldr r7, [%[m]]\n\t" -#ifdef __clang__ - "lsls r6, %[mp], #16\n\t" + "mov r10, r5\n\t" + "# Multiply m[0] and mu - Start\n\t" + "mov r5, r10\n\t" + "uxth r6, %[mp]\n\t" + "uxth r5, r5\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" #else - "lsl r6, %[mp], #16\n\t" + "mul r6, r5\n\t" #endif -#ifdef __clang__ - "lsls r7, r7, #16\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" #else - "lsl r7, r7, #16\n\t" + "add r3, r3, r6\n\t" #endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" #else - "lsr r6, r6, #16\n\t" + "adc r4, r7\n\t" #endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "muls r7, r6\n\t" -#else - "mul r7, r6\n\t" -#endif -#ifdef __clang__ - "adds %[a], %[a], r7\n\t" -#else - "add %[a], %[a], r7\n\t" -#endif -#ifdef __clang__ - "adcs r5, %[ca]\n\t" -#else - "adc r5, %[ca]\n\t" -#endif - "ldr r7, [%[m]]\n\t" -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "muls r6, r7\n\t" -#else - "mul r6, r7\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r6, #16\n\t" -#else - "lsr r7, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "adds %[a], %[a], r6\n\t" -#else - "add %[a], %[a], r6\n\t" -#endif -#ifdef __clang__ - "adcs r5, r7\n\t" -#else - "adc r5, r7\n\t" -#endif - "ldr r7, [%[m]]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, %[mp], #16\n\t" #else "lsr r6, %[mp], #16\n\t" #endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" #else - "lsr r7, r7, #16\n\t" + "mul r5, r6\n\t" #endif -#ifdef __clang__ - "muls r7, r6\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" #else - "mul r7, r6\n\t" + "lsr r6, r5, #16\n\t" #endif -#ifdef __clang__ - "adds r5, r5, r7\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" #else - "add r5, r5, r7\n\t" + "lsl r5, r5, #16\n\t" #endif - "ldr r7, [%[m]]\n\t" -#ifdef __clang__ - "lsls r7, r7, #16\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" #else - "lsl r7, r7, #16\n\t" + "add r3, r3, r5\n\t" #endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "lsr r7, r7, #16\n\t" + "adc r4, r6\n\t" #endif -#ifdef __clang__ - "muls r6, r7\n\t" + "mov r5, r10\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[mp], #16\n\t" #else - "mul r6, r7\n\t" + "lsr r6, %[mp], #16\n\t" #endif -#ifdef __clang__ - "lsrs r7, r6, #16\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, r5, #16\n\t" #else - "lsr r7, r6, #16\n\t" + "lsr r5, r5, #16\n\t" #endif -#ifdef __clang__ - "lsls r6, r6, #16\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" #else - "lsl r6, r6, #16\n\t" + "mul r6, r5\n\t" #endif -#ifdef __clang__ - "adds %[a], %[a], r6\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" #else - "add %[a], %[a], r6\n\t" + "add r4, r4, r6\n\t" #endif -#ifdef __clang__ - "adcs r5, r7\n\t" + "uxth r6, %[mp]\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" #else - "adc r5, r7\n\t" + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "# Multiply m[0] and mu - Done\n\t" + "\n" + "L_sp_384_mont_reduce_12_word_%=:\n\t" + "# a[i+j] += m[j] * mu\n\t" + "ldr r3, [%[a]]\n\t" + "ldm %[m]!, {%[mp]}\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r4\n\t" +#else + "add r3, r3, r4\n\t" +#endif + "movs r4, #0\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif + "# Multiply m[j] and mu - Start\n\t" + "mov r5, r10\n\t" + "uxth r6, %[mp]\n\t" + "uxth r5, r5\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[mp], #16\n\t" +#else + "lsr r6, %[mp], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "mov r5, r10\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[mp], #16\n\t" +#else + "lsr r6, %[mp], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, r5, #16\n\t" +#else + "lsr r5, r5, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif + "uxth r6, %[mp]\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" #endif "# Multiply m[j] and mu - Done\n\t" -#ifdef __clang__ - "adds r4, r4, %[a]\n\t" -#else - "add r4, r4, %[a]\n\t" -#endif -#ifdef __clang__ - "adcs r5, %[ca]\n\t" -#else - "adc r5, %[ca]\n\t" -#endif - "mov %[a], r10\n\t" - "str r4, [%[a]]\n\t" - "movs r6, #4\n\t" -#ifdef __clang__ - "adds %[m], %[m], #4\n\t" -#else - "add %[m], %[m], #4\n\t" -#endif - "add r10, r10, r6\n\t" - "movs r4, #44\n\t" - "add r4, r4, r9\n\t" - "cmp r10, r4\n\t" + "stm %[a]!, {r3}\n\t" + "cmp %[a], r9\n\t" "blt L_sp_384_mont_reduce_12_word_%=\n\t" "# a[i+11] += m[11] * mu\n\t" - "movs %[ca], #0\n\t" - "mov r4, r12\n\t" - "movs %[a], #0\n\t" + "ldr %[mp], [%[m]]\n\t" + "mov r3, r12\n\t" "# Multiply m[11] and mu - Start\n\t" - "ldr r7, [%[m]]\n\t" -#ifdef __clang__ - "lsls r6, %[mp], #16\n\t" + "mov r5, r10\n\t" + "uxth r6, %[mp]\n\t" + "uxth r5, r5\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" #else - "lsl r6, %[mp], #16\n\t" + "mul r6, r5\n\t" #endif -#ifdef __clang__ - "lsls r7, r7, #16\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" #else - "lsl r7, r7, #16\n\t" + "add r4, r4, r6\n\t" #endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" #else - "lsr r6, r6, #16\n\t" + "adc r3, r7\n\t" #endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r7\n\t" +#elif defined(__clang__) + "adcs r7, r7\n\t" #else - "lsr r7, r7, #16\n\t" + "adc r7, r7\n\t" #endif -#ifdef __clang__ - "muls r7, r6\n\t" -#else - "mul r7, r6\n\t" -#endif -#ifdef __clang__ - "adds r5, r5, r7\n\t" -#else - "add r5, r5, r7\n\t" -#endif -#ifdef __clang__ - "adcs r4, %[ca]\n\t" -#else - "adc r4, %[ca]\n\t" -#endif -#ifdef __clang__ - "adcs %[a], %[ca]\n\t" -#else - "adc %[a], %[ca]\n\t" -#endif - "ldr r7, [%[m]]\n\t" -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "muls r6, r7\n\t" -#else - "mul r6, r7\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r6, #16\n\t" -#else - "lsr r7, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "adds r5, r5, r6\n\t" -#else - "add r5, r5, r6\n\t" -#endif -#ifdef __clang__ - "adcs r4, r7\n\t" -#else - "adc r4, r7\n\t" -#endif -#ifdef __clang__ - "adcs %[a], %[ca]\n\t" -#else - "adc %[a], %[ca]\n\t" -#endif - "ldr r7, [%[m]]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, %[mp], #16\n\t" #else "lsr r6, %[mp], #16\n\t" #endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" #else - "lsr r7, r7, #16\n\t" + "mul r5, r6\n\t" #endif -#ifdef __clang__ - "muls r7, r6\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" #else - "mul r7, r6\n\t" + "lsr r6, r5, #16\n\t" #endif -#ifdef __clang__ - "adds r4, r4, r7\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" #else - "add r4, r4, r7\n\t" + "lsl r5, r5, #16\n\t" #endif -#ifdef __clang__ - "adcs %[a], %[ca]\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" #else - "adc %[a], %[ca]\n\t" + "add r4, r4, r5\n\t" #endif - "ldr r7, [%[m]]\n\t" -#ifdef __clang__ - "lsls r7, r7, #16\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" #else - "lsl r7, r7, #16\n\t" + "adc r3, r6\n\t" #endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r7\n\t" +#elif defined(__clang__) + "adcs r7, r7\n\t" #else - "lsr r7, r7, #16\n\t" + "adc r7, r7\n\t" #endif -#ifdef __clang__ - "muls r6, r7\n\t" + "mov r5, r10\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[mp], #16\n\t" #else - "mul r6, r7\n\t" + "lsr r6, %[mp], #16\n\t" #endif -#ifdef __clang__ - "lsrs r7, r6, #16\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, r5, #16\n\t" #else - "lsr r7, r6, #16\n\t" + "lsr r5, r5, #16\n\t" #endif -#ifdef __clang__ - "lsls r6, r6, #16\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" #else - "lsl r6, r6, #16\n\t" + "mul r6, r5\n\t" #endif -#ifdef __clang__ - "adds r5, r5, r6\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" #else - "add r5, r5, r6\n\t" + "add r3, r3, r6\n\t" #endif -#ifdef __clang__ - "adcs r4, r7\n\t" +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r7\n\t" +#elif defined(__clang__) + "adcs r7, r7\n\t" #else - "adc r4, r7\n\t" + "adc r7, r7\n\t" #endif -#ifdef __clang__ - "adcs %[a], %[ca]\n\t" + "uxth r6, %[mp]\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" #else - "adc %[a], %[ca]\n\t" + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r7\n\t" +#elif defined(__clang__) + "adcs r7, r7\n\t" +#else + "adc r7, r7\n\t" #endif "# Multiply m[11] and mu - Done\n\t" - "movs %[ca], %[a]\n\t" - "mov %[a], r10\n\t" - "ldr r7, [%[a], #4]\n\t" - "ldr %[a], [%[a]]\n\t" - "movs r6, #0\n\t" -#ifdef __clang__ - "adds r5, r5, %[a]\n\t" + "ldr r5, [%[a]]\n\t" + "ldr r6, [%[a], #4]\n\t" + "movs %[mp], #0\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r4\n\t" #else - "add r5, r5, %[a]\n\t" + "add r5, r5, r4\n\t" #endif -#ifdef __clang__ - "adcs r7, r4\n\t" +#ifdef WOLFSSL_KEIL + "adcs r6, r6, r3\n\t" +#elif defined(__clang__) + "adcs r6, r3\n\t" #else - "adc r7, r4\n\t" + "adc r6, r3\n\t" #endif -#ifdef __clang__ - "adcs %[ca], r6\n\t" +#ifdef WOLFSSL_KEIL + "adcs r7, r7, %[mp]\n\t" +#elif defined(__clang__) + "adcs r7, %[mp]\n\t" #else - "adc %[ca], r6\n\t" + "adc r7, %[mp]\n\t" #endif - "mov %[a], r10\n\t" - "str r5, [%[a]]\n\t" - "str r7, [%[a], #4]\n\t" + "stm %[a]!, {r5, r6}\n\t" "# i += 1\n\t" - "movs r6, #4\n\t" - "add r9, r9, r6\n\t" - "add r11, r11, r6\n\t" - "mov r12, %[ca]\n\t" - "mov %[a], r9\n\t" - "movs r4, #48\n\t" - "cmp r11, r4\n\t" - "blt L_sp_384_mont_reduce_12_mod_%=\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "subs %[a], %[a], #4\n\t" +#else + "sub %[a], %[a], #4\n\t" +#endif + "movs r3, #44\n\t" + "mov r9, %[a]\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "subs %[a], %[a], r3\n\t" +#else + "sub %[a], %[a], r3\n\t" +#endif + "mov r12, r7\n\t" "mov %[m], lr\n\t" - : [a] "+r" (a), [m] "+r" (m), [mp] "+r" (mp), [ca] "+r" (ca) + "cmp r11, %[a]\n\t" + "bgt L_sp_384_mont_reduce_12_mod_%=\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "negs r7, r7\n\t" +#else + "neg r7, r7\n\t" +#endif + "# Subtract masked modulus\n\t" + "movs r4, #48\n\t" + "movs %[mp], #0\n\t" + "movs r3, #0\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "subs %[a], %[a], r4\n\t" +#else + "sub %[a], %[a], r4\n\t" +#endif +#ifndef WOLFSSL_SP_LARGE_CODE + "\n" + "L_sp_384_mont_reduce_12_sub_mask_%=:\n\t" + "ldm %[m]!, {r6}\n\t" + "movs r5, #0\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "subs r5, r5, %[mp]\n\t" +#else + "sub r5, r5, %[mp]\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "sbcs %[mp], %[mp], %[mp]\n\t" +#elif defined(__clang__) + "sbcs %[mp], %[mp]\n\t" +#else + "sbc %[mp], %[mp]\n\t" +#endif + "stm %[a]!, {r5}\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, #4\n\t" +#else + "add r3, r3, #4\n\t" +#endif + "cmp r3, r4\n\t" + "blt L_sp_384_mont_reduce_12_sub_mask_%=\n\t" +#else /* WOLFSSL_SP_LARGE_CODE */ + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "subs r5, r5, r6\n\t" +#else + "sub r5, r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" +#endif /* WOLFSSL_SP_LARGE_CODE */ + : [a] "+r" (a), [m] "+r" (m), [mp] "+r" (mp) : - : "memory", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12", "lr" + : "memory", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12", "lr" ); - sp_384_cond_sub_12(a - 12, a, m, (sp_digit)0 - ca); } /* Multiply two Montogmery form numbers mod the modulus (prime). @@ -47041,78 +109204,90 @@ SP_NOINLINE static sp_int32 sp_384_cmp_12(const sp_digit* a, const sp_digit* b) __asm__ __volatile__ ( "movs r2, #0\n\t" "movs r3, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "mvns r3, r3\n\t" #else "mvn r3, r3\n\t" #endif "movs r6, #44\n\t" "\n" - "L_sp_384_cmp_12_words_%=: \n\t" + "L_sp_384_cmp_12_words_%=:\n\t" "ldr r7, [%[a], r6]\n\t" "ldr r5, [%[b], r6]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, r3\n\t" +#elif defined(__clang__) "ands r7, r3\n\t" #else "and r7, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r3\n\t" +#elif defined(__clang__) "ands r5, r3\n\t" #else "and r5, r3\n\t" #endif "movs r4, r7\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r7, r7, r5\n\t" #else "sub r7, r7, r5\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r7, r7, r7\n\t" +#elif defined(__clang__) "sbcs r7, r7\n\t" #else "sbc r7, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r7\n\t" #else "add r2, r2, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "mvns r7, r7\n\t" #else "mvn r7, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r3, r3, r7\n\t" +#elif defined(__clang__) "ands r3, r7\n\t" #else "and r3, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r5, r5, r4\n\t" #else "sub r5, r5, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r7, r7, r7\n\t" +#elif defined(__clang__) "sbcs r7, r7\n\t" #else "sbc r7, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r2, r2, r7\n\t" #else "sub r2, r2, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "mvns r7, r7\n\t" #else "mvn r7, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r3, r3, r7\n\t" +#elif defined(__clang__) "ands r3, r7\n\t" #else "and r3, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r6, r6, #4\n\t" #else "sub r6, r6, #4\n\t" @@ -47241,38 +109416,44 @@ SP_NOINLINE static sp_digit sp_384_cond_add_12(sp_digit* r, const sp_digit* a, "mov r8, r5\n\t" "movs r7, #0\n\t" "\n" - "L_sp_384_cond_add_12_words_%=: \n\t" + "L_sp_384_cond_add_12_words_%=:\n\t" "ldr r6, [%[b], r7]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, %[m]\n\t" +#elif defined(__clang__) "ands r6, %[m]\n\t" #else "and r6, %[m]\n\t" #endif "movs r5, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r5, r5, #1\n\t" #else "sub r5, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r5, r5, r4\n\t" #else "add r5, r5, r4\n\t" #endif "ldr r5, [%[a], r7]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r6\n\t" +#elif defined(__clang__) "adcs r5, r6\n\t" #else "adc r5, r6\n\t" #endif "movs r4, #0\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r4\n\t" +#elif defined(__clang__) "adcs r4, r4\n\t" #else "adc r4, r4\n\t" #endif "str r5, [%[r], r7]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r7, r7, #4\n\t" #else "add r7, r7, #4\n\t" @@ -47313,192 +109494,214 @@ static void sp_384_rshift1_12(sp_digit* r, const sp_digit* a) __asm__ __volatile__ ( "ldr r2, [%[a]]\n\t" "ldr r3, [%[a], #4]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r2, r2, #1\n\t" #else "lsr r2, r2, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r3, #31\n\t" #else "lsl r5, r3, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r3, r3, #1\n\t" #else "lsr r3, r3, #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r2, r2, r5\n\t" +#elif defined(__clang__) "orrs r2, r5\n\t" #else "orr r2, r5\n\t" #endif "ldr r4, [%[a], #8]\n\t" "str r2, [%[r]]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r4, #31\n\t" #else "lsl r5, r4, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r4, r4, #1\n\t" #else "lsr r4, r4, #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r5\n\t" +#elif defined(__clang__) "orrs r3, r5\n\t" #else "orr r3, r5\n\t" #endif "ldr r2, [%[a], #12]\n\t" "str r3, [%[r], #4]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r2, #31\n\t" #else "lsl r5, r2, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r2, r2, #1\n\t" #else "lsr r2, r2, #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r5\n\t" +#elif defined(__clang__) "orrs r4, r5\n\t" #else "orr r4, r5\n\t" #endif "ldr r3, [%[a], #16]\n\t" "str r4, [%[r], #8]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r3, #31\n\t" #else "lsl r5, r3, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r3, r3, #1\n\t" #else "lsr r3, r3, #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r2, r2, r5\n\t" +#elif defined(__clang__) "orrs r2, r5\n\t" #else "orr r2, r5\n\t" #endif "ldr r4, [%[a], #20]\n\t" "str r2, [%[r], #12]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r4, #31\n\t" #else "lsl r5, r4, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r4, r4, #1\n\t" #else "lsr r4, r4, #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r5\n\t" +#elif defined(__clang__) "orrs r3, r5\n\t" #else "orr r3, r5\n\t" #endif "ldr r2, [%[a], #24]\n\t" "str r3, [%[r], #16]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r2, #31\n\t" #else "lsl r5, r2, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r2, r2, #1\n\t" #else "lsr r2, r2, #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r5\n\t" +#elif defined(__clang__) "orrs r4, r5\n\t" #else "orr r4, r5\n\t" #endif "ldr r3, [%[a], #28]\n\t" "str r4, [%[r], #20]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r3, #31\n\t" #else "lsl r5, r3, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r3, r3, #1\n\t" #else "lsr r3, r3, #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r2, r2, r5\n\t" +#elif defined(__clang__) "orrs r2, r5\n\t" #else "orr r2, r5\n\t" #endif "ldr r4, [%[a], #32]\n\t" "str r2, [%[r], #24]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r4, #31\n\t" #else "lsl r5, r4, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r4, r4, #1\n\t" #else "lsr r4, r4, #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r5\n\t" +#elif defined(__clang__) "orrs r3, r5\n\t" #else "orr r3, r5\n\t" #endif "ldr r2, [%[a], #36]\n\t" "str r3, [%[r], #28]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r2, #31\n\t" #else "lsl r5, r2, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r2, r2, #1\n\t" #else "lsr r2, r2, #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r5\n\t" +#elif defined(__clang__) "orrs r4, r5\n\t" #else "orr r4, r5\n\t" #endif "ldr r3, [%[a], #40]\n\t" "str r4, [%[r], #32]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r3, #31\n\t" #else "lsl r5, r3, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r3, r3, #1\n\t" #else "lsr r3, r3, #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r2, r2, r5\n\t" +#elif defined(__clang__) "orrs r2, r5\n\t" #else "orr r2, r5\n\t" #endif "ldr r4, [%[a], #44]\n\t" "str r2, [%[r], #36]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r4, #31\n\t" #else "lsl r5, r4, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r4, r4, #1\n\t" #else "lsr r4, r4, #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r5\n\t" +#elif defined(__clang__) "orrs r3, r5\n\t" #else "orr r3, r5\n\t" @@ -51064,7 +113267,7 @@ SP_NOINLINE static void sp_384_add_one_12(sp_digit* a) __asm__ __volatile__ ( "movs r2, #1\n\t" "ldr r1, [%[a]]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r1, r1, r2\n\t" #else "add r1, r1, r2\n\t" @@ -51072,77 +113275,99 @@ SP_NOINLINE static void sp_384_add_one_12(sp_digit* a) "movs r2, #0\n\t" "str r1, [%[a]]\n\t" "ldr r1, [%[a], #4]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r1, r1, r2\n\t" +#elif defined(__clang__) "adcs r1, r2\n\t" #else "adc r1, r2\n\t" #endif "str r1, [%[a], #4]\n\t" "ldr r1, [%[a], #8]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r1, r1, r2\n\t" +#elif defined(__clang__) "adcs r1, r2\n\t" #else "adc r1, r2\n\t" #endif "str r1, [%[a], #8]\n\t" "ldr r1, [%[a], #12]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r1, r1, r2\n\t" +#elif defined(__clang__) "adcs r1, r2\n\t" #else "adc r1, r2\n\t" #endif "str r1, [%[a], #12]\n\t" "ldr r1, [%[a], #16]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r1, r1, r2\n\t" +#elif defined(__clang__) "adcs r1, r2\n\t" #else "adc r1, r2\n\t" #endif "str r1, [%[a], #16]\n\t" "ldr r1, [%[a], #20]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r1, r1, r2\n\t" +#elif defined(__clang__) "adcs r1, r2\n\t" #else "adc r1, r2\n\t" #endif "str r1, [%[a], #20]\n\t" "ldr r1, [%[a], #24]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r1, r1, r2\n\t" +#elif defined(__clang__) "adcs r1, r2\n\t" #else "adc r1, r2\n\t" #endif "str r1, [%[a], #24]\n\t" "ldr r1, [%[a], #28]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r1, r1, r2\n\t" +#elif defined(__clang__) "adcs r1, r2\n\t" #else "adc r1, r2\n\t" #endif "str r1, [%[a], #28]\n\t" "ldr r1, [%[a], #32]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r1, r1, r2\n\t" +#elif defined(__clang__) "adcs r1, r2\n\t" #else "adc r1, r2\n\t" #endif "str r1, [%[a], #32]\n\t" "ldr r1, [%[a], #36]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r1, r1, r2\n\t" +#elif defined(__clang__) "adcs r1, r2\n\t" #else "adc r1, r2\n\t" #endif "str r1, [%[a], #36]\n\t" "ldr r1, [%[a], #40]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r1, r1, r2\n\t" +#elif defined(__clang__) "adcs r1, r2\n\t" #else "adc r1, r2\n\t" #endif "str r1, [%[a], #40]\n\t" "ldr r1, [%[a], #44]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r1, r1, r2\n\t" +#elif defined(__clang__) "adcs r1, r2\n\t" #else "adc r1, r2\n\t" @@ -51423,15 +113648,15 @@ SP_NOINLINE static sp_digit sp_384_sub_in_place_12(sp_digit* a, __asm__ __volatile__ ( "movs r7, %[a]\n\t" "movs r2, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r7, r7, #48\n\t" #else "add r7, r7, #48\n\t" #endif "\n" - "L_sp_384_sub_in_place_12_words_%=: \n\t" + "L_sp_384_sub_in_place_12_words_%=:\n\t" "movs r5, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r5, r5, r2\n\t" #else "sub r5, r5, r2\n\t" @@ -51440,29 +113665,35 @@ SP_NOINLINE static sp_digit sp_384_sub_in_place_12(sp_digit* a, "ldr r4, [%[a], #4]\n\t" "ldr r5, [%[b]]\n\t" "ldr r6, [%[b], #4]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif "str r3, [%[a]]\n\t" "str r4, [%[a], #4]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r2\n\t" +#elif defined(__clang__) "sbcs r2, r2\n\t" #else "sbc r2, r2\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[a], %[a], #8\n\t" #else "add %[a], %[a], #8\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[b], %[b], #8\n\t" #else "add %[b], %[b], #8\n\t" @@ -51487,112 +113718,122 @@ SP_NOINLINE static sp_digit sp_384_sub_in_place_12(sp_digit* a, const sp_digit* b) { __asm__ __volatile__ ( - "movs r2, #0\n\t" - "ldr r3, [%[a]]\n\t" - "ldr r4, [%[a], #4]\n\t" - "ldr r5, [%[b]]\n\t" - "ldr r6, [%[b], #4]\n\t" -#ifdef __clang__ - "subs r3, r3, r5\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "subs r2, r2, r4\n\t" #else - "sub r3, r3, r5\n\t" + "sub r2, r2, r4\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" -#else - "sbc r4, r6\n\t" -#endif - "str r3, [%[a]]\n\t" - "str r4, [%[a], #4]\n\t" - "ldr r3, [%[a], #8]\n\t" - "ldr r4, [%[a], #12]\n\t" - "ldr r5, [%[b], #8]\n\t" - "ldr r6, [%[b], #12]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #8]\n\t" - "str r4, [%[a], #12]\n\t" - "ldr r3, [%[a], #16]\n\t" - "ldr r4, [%[a], #20]\n\t" - "ldr r5, [%[b], #16]\n\t" - "ldr r6, [%[b], #20]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #16]\n\t" - "str r4, [%[a], #20]\n\t" - "ldr r3, [%[a], #24]\n\t" - "ldr r4, [%[a], #28]\n\t" - "ldr r5, [%[b], #24]\n\t" - "ldr r6, [%[b], #28]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #24]\n\t" - "str r4, [%[a], #28]\n\t" - "ldr r3, [%[a], #32]\n\t" - "ldr r4, [%[a], #36]\n\t" - "ldr r5, [%[b], #32]\n\t" - "ldr r6, [%[b], #36]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #32]\n\t" - "str r4, [%[a], #36]\n\t" - "ldr r3, [%[a], #40]\n\t" - "ldr r4, [%[a], #44]\n\t" - "ldr r5, [%[b], #40]\n\t" - "ldr r6, [%[b], #44]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #40]\n\t" - "str r4, [%[a], #44]\n\t" -#ifdef __clang__ - "sbcs r2, r2\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r2, r2\n\t" + "sbc r3, r5\n\t" +#endif + "stm %[a]!, {r2, r3}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs %[a], %[a], %[a]\n\t" +#elif defined(__clang__) + "sbcs %[a], %[a]\n\t" +#else + "sbc %[a], %[a]\n\t" #endif - "movs %[a], r2\n\t" : [a] "+r" (a), [b] "+r" (b) : - : "memory", "r2", "r3", "r4", "r5", "r6" + : "memory", "r2", "r3", "r4", "r5" ); return (uint32_t)(size_t)a; } @@ -51609,7 +113850,7 @@ SP_NOINLINE static void sp_384_mul_d_12(sp_digit* r, const sp_digit* a, { __asm__ __volatile__ ( "movs r6, #48\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r6, r6, %[a]\n\t" #else "add r6, r6, %[a]\n\t" @@ -51619,148 +113860,142 @@ SP_NOINLINE static void sp_384_mul_d_12(sp_digit* r, const sp_digit* a, "movs r3, #0\n\t" "movs r4, #0\n\t" "\n" - "L_sp_384_mul_d_12_%=: \n\t" + "L_sp_384_mul_d_12_%=:\n\t" "movs %[r], #0\n\t" "movs r5, #0\n\t" "# A[] * B\n\t" - "ldr r6, [%[a]]\n\t" -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsls r7, %[b], #16\n\t" -#else - "lsl r7, %[b], #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ + "ldrh r6, [%[a]]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) "muls r7, r6\n\t" #else "mul r7, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r7\n\t" #else "add r3, r3, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) "adcs r4, %[r]\n\t" #else "adc r4, %[r]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, %[b], #16\n\t" #else "lsr r7, %[b], #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) "muls r6, r7\n\t" #else "mul r6, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r6, #16\n\t" #else "lsr r7, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #16\n\t" #else "lsl r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif "ldr r6, [%[a]]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, #16\n\t" #else "lsr r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, %[b], #16\n\t" #else "lsr r7, %[b], #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) "muls r7, r6\n\t" #else "mul r7, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, r7\n\t" #else "add r4, r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif -#ifdef __clang__ - "lsls r7, %[b], #16\n\t" -#else - "lsl r7, %[b], #16\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) "muls r6, r7\n\t" #else "mul r6, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r6, #16\n\t" #else "lsr r7, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #16\n\t" #else "lsl r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" @@ -51770,12 +114005,12 @@ SP_NOINLINE static void sp_384_mul_d_12(sp_digit* r, const sp_digit* a, "str r3, [%[r]]\n\t" "movs r3, r4\n\t" "movs r4, r5\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[r], %[r], #4\n\t" #else "add %[r], %[r], #4\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[a], %[a], #4\n\t" #else "add %[a], %[a], #4\n\t" @@ -51804,12 +114039,12 @@ SP_NOINLINE static sp_digit div_384_word_12(sp_digit d1, sp_digit d0, { __asm__ __volatile__ ( "movs r3, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, %[div], #1\n\t" #else "lsr r5, %[div], #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r5, r5, #1\n\t" #else "add r5, r5, #1\n\t" @@ -51818,326 +114053,307 @@ SP_NOINLINE static sp_digit div_384_word_12(sp_digit d1, sp_digit d0, "mov r9, %[d1]\n\t" "# Do top 32\n\t" "movs r6, r5\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r6, r6, %[d1]\n\t" #else "sub r6, r6, %[d1]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r6\n\t" +#elif defined(__clang__) "sbcs r6, r6\n\t" #else "sbc r6, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r3\n\t" #else "add r3, r3, r3\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r3, r3, r6\n\t" #else "sub r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, r5\n\t" +#elif defined(__clang__) "ands r6, r5\n\t" #else "and r6, r5\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[d1], %[d1], r6\n\t" #else "sub %[d1], %[d1], r6\n\t" #endif - "\n\t" "movs r4, #29\n\t" "\n" - "L_div_384_word_12_loop_%=: \n\t" -#ifdef __clang__ + "L_div_384_word_12_loop_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls %[d0], %[d0], #1\n\t" #else "lsl %[d0], %[d0], #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs %[d1], %[d1], %[d1]\n\t" +#elif defined(__clang__) "adcs %[d1], %[d1]\n\t" #else "adc %[d1], %[d1]\n\t" #endif "movs r6, r5\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r6, r6, %[d1]\n\t" #else "sub r6, r6, %[d1]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r6\n\t" +#elif defined(__clang__) "sbcs r6, r6\n\t" #else "sbc r6, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r3\n\t" #else "add r3, r3, r3\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r3, r3, r6\n\t" #else "sub r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, r5\n\t" +#elif defined(__clang__) "ands r6, r5\n\t" #else "and r6, r5\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[d1], %[d1], r6\n\t" #else "sub %[d1], %[d1], r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r4, r4, #1\n\t" #else "sub r4, r4, #1\n\t" #endif "bpl L_div_384_word_12_loop_%=\n\t" "movs r7, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r3\n\t" #else "add r3, r3, r3\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, #1\n\t" #else "add r3, r3, #1\n\t" #endif "# r * div - Start\n\t" -#ifdef __clang__ - "lsls %[d1], r3, #16\n\t" -#else - "lsl %[d1], r3, #16\n\t" -#endif -#ifdef __clang__ - "lsls r4, %[div], #16\n\t" -#else - "lsl r4, %[div], #16\n\t" -#endif -#ifdef __clang__ - "lsrs %[d1], %[d1], #16\n\t" -#else - "lsr %[d1], %[d1], #16\n\t" -#endif -#ifdef __clang__ - "lsrs r4, r4, #16\n\t" -#else - "lsr r4, r4, #16\n\t" -#endif -#ifdef __clang__ + "uxth %[d1], r3\n\t" + "uxth r4, %[div]\n\t" +#ifdef WOLFSSL_KEIL + "muls r4, %[d1], r4\n\t" +#elif defined(__clang__) "muls r4, %[d1]\n\t" #else "mul r4, %[d1]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, %[div], #16\n\t" #else "lsr r6, %[div], #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls %[d1], r6, %[d1]\n\t" +#elif defined(__clang__) "muls %[d1], r6\n\t" #else "mul %[d1], r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, %[d1], #16\n\t" #else "lsr r5, %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls %[d1], %[d1], #16\n\t" #else "lsl %[d1], %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, %[d1]\n\t" #else "add r4, r4, %[d1]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs %[d1], r3, #16\n\t" #else "lsr %[d1], r3, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r6, %[d1], r6\n\t" +#elif defined(__clang__) "muls r6, %[d1]\n\t" #else "mul r6, %[d1]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r5, r5, r6\n\t" #else "add r5, r5, r6\n\t" #endif -#ifdef __clang__ - "lsls r6, %[div], #16\n\t" -#else - "lsl r6, %[div], #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ + "uxth r6, %[div]\n\t" +#ifdef WOLFSSL_KEIL + "muls %[d1], r6, %[d1]\n\t" +#elif defined(__clang__) "muls %[d1], r6\n\t" #else "mul %[d1], r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, %[d1], #16\n\t" #else "lsr r6, %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls %[d1], %[d1], #16\n\t" #else "lsl %[d1], %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, %[d1]\n\t" #else "add r4, r4, %[d1]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r6\n\t" +#elif defined(__clang__) "adcs r5, r6\n\t" #else "adc r5, r6\n\t" #endif "# r * div - Done\n\t" "mov %[d1], r8\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[d1], %[d1], r4\n\t" #else "sub %[d1], %[d1], r4\n\t" #endif "movs r4, %[d1]\n\t" "mov %[d1], r9\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs %[d1], %[d1], r5\n\t" +#elif defined(__clang__) "sbcs %[d1], r5\n\t" #else "sbc %[d1], r5\n\t" #endif "movs r5, %[d1]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r5\n\t" #else "add r3, r3, r5\n\t" #endif "# r * div - Start\n\t" -#ifdef __clang__ - "lsls %[d1], r3, #16\n\t" -#else - "lsl %[d1], r3, #16\n\t" -#endif -#ifdef __clang__ - "lsls r4, %[div], #16\n\t" -#else - "lsl r4, %[div], #16\n\t" -#endif -#ifdef __clang__ - "lsrs %[d1], %[d1], #16\n\t" -#else - "lsr %[d1], %[d1], #16\n\t" -#endif -#ifdef __clang__ - "lsrs r4, r4, #16\n\t" -#else - "lsr r4, r4, #16\n\t" -#endif -#ifdef __clang__ + "uxth %[d1], r3\n\t" + "uxth r4, %[div]\n\t" +#ifdef WOLFSSL_KEIL + "muls r4, %[d1], r4\n\t" +#elif defined(__clang__) "muls r4, %[d1]\n\t" #else "mul r4, %[d1]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, %[div], #16\n\t" #else "lsr r6, %[div], #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls %[d1], r6, %[d1]\n\t" +#elif defined(__clang__) "muls %[d1], r6\n\t" #else "mul %[d1], r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, %[d1], #16\n\t" #else "lsr r5, %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls %[d1], %[d1], #16\n\t" #else "lsl %[d1], %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, %[d1]\n\t" #else "add r4, r4, %[d1]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs %[d1], r3, #16\n\t" #else "lsr %[d1], r3, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r6, %[d1], r6\n\t" +#elif defined(__clang__) "muls r6, %[d1]\n\t" #else "mul r6, %[d1]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r5, r5, r6\n\t" #else "add r5, r5, r6\n\t" #endif -#ifdef __clang__ - "lsls r6, %[div], #16\n\t" -#else - "lsl r6, %[div], #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ + "uxth r6, %[div]\n\t" +#ifdef WOLFSSL_KEIL + "muls %[d1], r6, %[d1]\n\t" +#elif defined(__clang__) "muls %[d1], r6\n\t" #else "mul %[d1], r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, %[d1], #16\n\t" #else "lsr r6, %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls %[d1], %[d1], #16\n\t" #else "lsl %[d1], %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, %[d1]\n\t" #else "add r4, r4, %[d1]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r6\n\t" +#elif defined(__clang__) "adcs r5, r6\n\t" #else "adc r5, r6\n\t" @@ -52145,124 +114361,115 @@ SP_NOINLINE static sp_digit div_384_word_12(sp_digit d1, sp_digit d0, "# r * div - Done\n\t" "mov %[d1], r8\n\t" "mov r6, r9\n\t" +#ifdef WOLFSSL_KEIL + "subs r4, %[d1], r4\n\t" +#else #ifdef __clang__ "subs r4, %[d1], r4\n\t" #else "sub r4, %[d1], r4\n\t" #endif -#ifdef __clang__ +#endif +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r5\n\t" +#elif defined(__clang__) "sbcs r6, r5\n\t" #else "sbc r6, r5\n\t" #endif "movs r5, r6\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r5\n\t" #else "add r3, r3, r5\n\t" #endif "# r * div - Start\n\t" -#ifdef __clang__ - "lsls %[d1], r3, #16\n\t" -#else - "lsl %[d1], r3, #16\n\t" -#endif -#ifdef __clang__ - "lsls r4, %[div], #16\n\t" -#else - "lsl r4, %[div], #16\n\t" -#endif -#ifdef __clang__ - "lsrs %[d1], %[d1], #16\n\t" -#else - "lsr %[d1], %[d1], #16\n\t" -#endif -#ifdef __clang__ - "lsrs r4, r4, #16\n\t" -#else - "lsr r4, r4, #16\n\t" -#endif -#ifdef __clang__ + "uxth %[d1], r3\n\t" + "uxth r4, %[div]\n\t" +#ifdef WOLFSSL_KEIL + "muls r4, %[d1], r4\n\t" +#elif defined(__clang__) "muls r4, %[d1]\n\t" #else "mul r4, %[d1]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, %[div], #16\n\t" #else "lsr r6, %[div], #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls %[d1], r6, %[d1]\n\t" +#elif defined(__clang__) "muls %[d1], r6\n\t" #else "mul %[d1], r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, %[d1], #16\n\t" #else "lsr r5, %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls %[d1], %[d1], #16\n\t" #else "lsl %[d1], %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, %[d1]\n\t" #else "add r4, r4, %[d1]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs %[d1], r3, #16\n\t" #else "lsr %[d1], r3, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r6, %[d1], r6\n\t" +#elif defined(__clang__) "muls r6, %[d1]\n\t" #else "mul r6, %[d1]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r5, r5, r6\n\t" #else "add r5, r5, r6\n\t" #endif -#ifdef __clang__ - "lsls r6, %[div], #16\n\t" -#else - "lsl r6, %[div], #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ + "uxth r6, %[div]\n\t" +#ifdef WOLFSSL_KEIL + "muls %[d1], r6, %[d1]\n\t" +#elif defined(__clang__) "muls %[d1], r6\n\t" #else "mul %[d1], r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, %[d1], #16\n\t" #else "lsr r6, %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls %[d1], %[d1], #16\n\t" #else "lsl %[d1], %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, %[d1]\n\t" #else "add r4, r4, %[d1]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r6\n\t" +#elif defined(__clang__) "adcs r5, r6\n\t" #else "adc r5, r6\n\t" @@ -52270,34 +114477,42 @@ SP_NOINLINE static sp_digit div_384_word_12(sp_digit d1, sp_digit d0, "# r * div - Done\n\t" "mov %[d1], r8\n\t" "mov r6, r9\n\t" +#ifdef WOLFSSL_KEIL + "subs r4, %[d1], r4\n\t" +#else #ifdef __clang__ "subs r4, %[d1], r4\n\t" #else "sub r4, %[d1], r4\n\t" #endif -#ifdef __clang__ +#endif +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r5\n\t" +#elif defined(__clang__) "sbcs r6, r5\n\t" #else "sbc r6, r5\n\t" #endif "movs r5, r6\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r5\n\t" #else "add r3, r3, r5\n\t" #endif "movs r6, %[div]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r6, r6, r4\n\t" #else "sub r6, r6, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r6\n\t" +#elif defined(__clang__) "sbcs r6, r6\n\t" #else "sbc r6, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r3, r3, r6\n\t" #else "sub r3, r3, r6\n\t" @@ -52929,7 +115144,7 @@ static void sp_384_div2_mod_12(sp_digit* r, const sp_digit* a, { __asm__ __volatile__ ( "ldr r3, [%[a]]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, #31\n\t" #else "lsl r3, r3, #31\n\t" @@ -52939,12 +115154,14 @@ static void sp_384_div2_mod_12(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #4]\n\t" "ldr r6, [%[m]]\n\t" "ldr r7, [%[m], #4]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, r6\n\t" #else "add r4, r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" @@ -52955,12 +115172,16 @@ static void sp_384_div2_mod_12(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #12]\n\t" "ldr r6, [%[m], #8]\n\t" "ldr r7, [%[m], #12]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) "adcs r4, r6\n\t" #else "adc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" @@ -52971,12 +115192,16 @@ static void sp_384_div2_mod_12(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #20]\n\t" "ldr r6, [%[m], #16]\n\t" "ldr r7, [%[m], #20]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) "adcs r4, r6\n\t" #else "adc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" @@ -52987,12 +115212,16 @@ static void sp_384_div2_mod_12(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #28]\n\t" "ldr r6, [%[m], #24]\n\t" "ldr r7, [%[m], #28]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) "adcs r4, r6\n\t" #else "adc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" @@ -53003,12 +115232,16 @@ static void sp_384_div2_mod_12(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #36]\n\t" "ldr r6, [%[m], #32]\n\t" "ldr r7, [%[m], #36]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) "adcs r4, r6\n\t" #else "adc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" @@ -53019,12 +115252,16 @@ static void sp_384_div2_mod_12(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #44]\n\t" "ldr r6, [%[m], #40]\n\t" "ldr r7, [%[m], #44]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) "adcs r4, r6\n\t" #else "adc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" @@ -53032,19 +115269,21 @@ static void sp_384_div2_mod_12(sp_digit* r, const sp_digit* a, "str r4, [%[r], #40]\n\t" "str r5, [%[r], #44]\n\t" "movs r3, #0\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r3\n\t" +#elif defined(__clang__) "adcs r3, r3\n\t" #else "adc r3, r3\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r3, r3, #31\n\t" #else "lsl r3, r3, #31\n\t" #endif "b L_sp_384_div2_mod_12_div2_%=\n\t" "\n" - "L_sp_384_div2_mod_12_no_add_%=: \n\t" + "L_sp_384_div2_mod_12_no_add_%=:\n\t" "ldr r4, [%[a]]\n\t" "ldr r5, [%[a], #4]\n\t" "str r4, [%[r]]\n\t" @@ -53090,200 +115329,224 @@ static void sp_384_div2_mod_12(sp_digit* r, const sp_digit* a, "str r4, [%[r], #40]\n\t" "str r5, [%[r], #44]\n\t" "\n" - "L_sp_384_div2_mod_12_div2_%=: \n\t" + "L_sp_384_div2_mod_12_div2_%=:\n\t" "ldr r4, [%[r]]\n\t" "ldr r5, [%[r], #4]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r4, r4, #1\n\t" #else "lsr r4, r4, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r5, #31\n\t" #else "lsl r6, r5, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r5, #1\n\t" #else "lsr r5, r5, #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r7, [%[r], #8]\n\t" "str r4, [%[r]]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r7, #31\n\t" #else "lsl r6, r7, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r7, #1\n\t" #else "lsr r7, r7, #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r4, [%[r], #12]\n\t" "str r5, [%[r], #4]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r4, #31\n\t" #else "lsl r6, r4, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r4, r4, #1\n\t" #else "lsr r4, r4, #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r7, r7, r6\n\t" +#elif defined(__clang__) "orrs r7, r6\n\t" #else "orr r7, r6\n\t" #endif "ldr r5, [%[r], #16]\n\t" "str r7, [%[r], #8]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r5, #31\n\t" #else "lsl r6, r5, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r5, #1\n\t" #else "lsr r5, r5, #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r7, [%[r], #20]\n\t" "str r4, [%[r], #12]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r7, #31\n\t" #else "lsl r6, r7, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r7, #1\n\t" #else "lsr r7, r7, #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r4, [%[r], #24]\n\t" "str r5, [%[r], #16]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r4, #31\n\t" #else "lsl r6, r4, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r4, r4, #1\n\t" #else "lsr r4, r4, #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r7, r7, r6\n\t" +#elif defined(__clang__) "orrs r7, r6\n\t" #else "orr r7, r6\n\t" #endif "ldr r5, [%[r], #28]\n\t" "str r7, [%[r], #20]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r5, #31\n\t" #else "lsl r6, r5, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r5, #1\n\t" #else "lsr r5, r5, #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r7, [%[r], #32]\n\t" "str r4, [%[r], #24]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r7, #31\n\t" #else "lsl r6, r7, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r7, #1\n\t" #else "lsr r7, r7, #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif "ldr r4, [%[r], #36]\n\t" "str r5, [%[r], #28]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r4, #31\n\t" #else "lsl r6, r4, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r4, r4, #1\n\t" #else "lsr r4, r4, #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r7, r7, r6\n\t" +#elif defined(__clang__) "orrs r7, r6\n\t" #else "orr r7, r6\n\t" #endif "ldr r5, [%[r], #40]\n\t" "str r7, [%[r], #32]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r5, #31\n\t" #else "lsl r6, r5, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r5, #1\n\t" #else "lsr r5, r5, #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r6\n\t" +#elif defined(__clang__) "orrs r4, r6\n\t" #else "orr r4, r6\n\t" #endif "ldr r7, [%[r], #44]\n\t" "str r4, [%[r], #36]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r7, #31\n\t" #else "lsl r6, r7, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r7, #1\n\t" #else "lsr r7, r7, #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r5, r5, r6\n\t" +#elif defined(__clang__) "orrs r5, r6\n\t" #else "orr r5, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r7, r7, r3\n\t" +#elif defined(__clang__) "orrs r7, r3\n\t" #else "orr r7, r3\n\t" @@ -53322,7 +115585,7 @@ static int sp_384_num_bits_12(sp_digit* a) "ldr r3, [%[a], #44]\n\t" "cmp r3, #0\n\t" "beq L_sp_384_num_bits_12_11_%=\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #24\n\t" #else "lsr r5, r3, #24\n\t" @@ -53330,26 +115593,28 @@ static int sp_384_num_bits_12(sp_digit* a) "cmp r5, #0\n\t" "beq L_sp_384_num_bits_12_133_%=\n\t" "movs r2, #0xff\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, #0x79\n\t" #else "add r2, r2, #0x79\n\t" #endif "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_384_num_bits_12_13_%=\n\t" "\n" - "L_sp_384_num_bits_12_133_%=: \n\t" -#ifdef __clang__ + "L_sp_384_num_bits_12_133_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #16\n\t" #else "lsr r5, r3, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r6\n\t" +#elif defined(__clang__) "ands r5, r6\n\t" #else "and r5, r6\n\t" @@ -53357,26 +115622,28 @@ static int sp_384_num_bits_12(sp_digit* a) "cmp r5, #0\n\t" "beq L_sp_384_num_bits_12_132_%=\n\t" "movs r2, #0xff\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, #0x71\n\t" #else "add r2, r2, #0x71\n\t" #endif "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_384_num_bits_12_13_%=\n\t" "\n" - "L_sp_384_num_bits_12_132_%=: \n\t" -#ifdef __clang__ + "L_sp_384_num_bits_12_132_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #8\n\t" #else "lsr r5, r3, #8\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r6\n\t" +#elif defined(__clang__) "ands r5, r6\n\t" #else "and r5, r6\n\t" @@ -53384,22 +115651,24 @@ static int sp_384_num_bits_12(sp_digit* a) "cmp r5, #0\n\t" "beq L_sp_384_num_bits_12_131_%=\n\t" "movs r2, #0xff\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, #0x69\n\t" #else "add r2, r2, #0x69\n\t" #endif "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_384_num_bits_12_13_%=\n\t" "\n" - "L_sp_384_num_bits_12_131_%=: \n\t" + "L_sp_384_num_bits_12_131_%=:\n\t" "movs r5, r3\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r6\n\t" +#elif defined(__clang__) "ands r5, r6\n\t" #else "and r5, r6\n\t" @@ -53407,27 +115676,27 @@ static int sp_384_num_bits_12(sp_digit* a) "cmp r5, #0\n\t" "beq L_sp_384_num_bits_12_130_%=\n\t" "movs r2, #0xff\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, #0x61\n\t" #else "add r2, r2, #0x61\n\t" #endif "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_384_num_bits_12_13_%=\n\t" "\n" - "L_sp_384_num_bits_12_130_%=: \n\t" + "L_sp_384_num_bits_12_130_%=:\n\t" "b L_sp_384_num_bits_12_13_%=\n\t" "\n" - "L_sp_384_num_bits_12_11_%=: \n\t" + "L_sp_384_num_bits_12_11_%=:\n\t" "ldr r3, [%[a], #40]\n\t" "cmp r3, #0\n\t" "beq L_sp_384_num_bits_12_10_%=\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #24\n\t" #else "lsr r5, r3, #24\n\t" @@ -53435,26 +115704,28 @@ static int sp_384_num_bits_12(sp_digit* a) "cmp r5, #0\n\t" "beq L_sp_384_num_bits_12_123_%=\n\t" "movs r2, #0xff\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, #0x59\n\t" #else "add r2, r2, #0x59\n\t" #endif "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_384_num_bits_12_13_%=\n\t" "\n" - "L_sp_384_num_bits_12_123_%=: \n\t" -#ifdef __clang__ + "L_sp_384_num_bits_12_123_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #16\n\t" #else "lsr r5, r3, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r6\n\t" +#elif defined(__clang__) "ands r5, r6\n\t" #else "and r5, r6\n\t" @@ -53462,26 +115733,28 @@ static int sp_384_num_bits_12(sp_digit* a) "cmp r5, #0\n\t" "beq L_sp_384_num_bits_12_122_%=\n\t" "movs r2, #0xff\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, #0x51\n\t" #else "add r2, r2, #0x51\n\t" #endif "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_384_num_bits_12_13_%=\n\t" "\n" - "L_sp_384_num_bits_12_122_%=: \n\t" -#ifdef __clang__ + "L_sp_384_num_bits_12_122_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #8\n\t" #else "lsr r5, r3, #8\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r6\n\t" +#elif defined(__clang__) "ands r5, r6\n\t" #else "and r5, r6\n\t" @@ -53489,22 +115762,24 @@ static int sp_384_num_bits_12(sp_digit* a) "cmp r5, #0\n\t" "beq L_sp_384_num_bits_12_121_%=\n\t" "movs r2, #0xff\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, #0x49\n\t" #else "add r2, r2, #0x49\n\t" #endif "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_384_num_bits_12_13_%=\n\t" "\n" - "L_sp_384_num_bits_12_121_%=: \n\t" + "L_sp_384_num_bits_12_121_%=:\n\t" "movs r5, r3\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r6\n\t" +#elif defined(__clang__) "ands r5, r6\n\t" #else "and r5, r6\n\t" @@ -53512,27 +115787,27 @@ static int sp_384_num_bits_12(sp_digit* a) "cmp r5, #0\n\t" "beq L_sp_384_num_bits_12_120_%=\n\t" "movs r2, #0xff\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, #0x41\n\t" #else "add r2, r2, #0x41\n\t" #endif "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_384_num_bits_12_13_%=\n\t" "\n" - "L_sp_384_num_bits_12_120_%=: \n\t" + "L_sp_384_num_bits_12_120_%=:\n\t" "b L_sp_384_num_bits_12_13_%=\n\t" "\n" - "L_sp_384_num_bits_12_10_%=: \n\t" + "L_sp_384_num_bits_12_10_%=:\n\t" "ldr r3, [%[a], #36]\n\t" "cmp r3, #0\n\t" "beq L_sp_384_num_bits_12_9_%=\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #24\n\t" #else "lsr r5, r3, #24\n\t" @@ -53540,26 +115815,28 @@ static int sp_384_num_bits_12(sp_digit* a) "cmp r5, #0\n\t" "beq L_sp_384_num_bits_12_113_%=\n\t" "movs r2, #0xff\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, #57\n\t" #else "add r2, r2, #57\n\t" #endif "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_384_num_bits_12_13_%=\n\t" "\n" - "L_sp_384_num_bits_12_113_%=: \n\t" -#ifdef __clang__ + "L_sp_384_num_bits_12_113_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #16\n\t" #else "lsr r5, r3, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r6\n\t" +#elif defined(__clang__) "ands r5, r6\n\t" #else "and r5, r6\n\t" @@ -53567,26 +115844,28 @@ static int sp_384_num_bits_12(sp_digit* a) "cmp r5, #0\n\t" "beq L_sp_384_num_bits_12_112_%=\n\t" "movs r2, #0xff\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, #49\n\t" #else "add r2, r2, #49\n\t" #endif "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_384_num_bits_12_13_%=\n\t" "\n" - "L_sp_384_num_bits_12_112_%=: \n\t" -#ifdef __clang__ + "L_sp_384_num_bits_12_112_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #8\n\t" #else "lsr r5, r3, #8\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r6\n\t" +#elif defined(__clang__) "ands r5, r6\n\t" #else "and r5, r6\n\t" @@ -53594,22 +115873,24 @@ static int sp_384_num_bits_12(sp_digit* a) "cmp r5, #0\n\t" "beq L_sp_384_num_bits_12_111_%=\n\t" "movs r2, #0xff\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, #41\n\t" #else "add r2, r2, #41\n\t" #endif "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_384_num_bits_12_13_%=\n\t" "\n" - "L_sp_384_num_bits_12_111_%=: \n\t" + "L_sp_384_num_bits_12_111_%=:\n\t" "movs r5, r3\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r6\n\t" +#elif defined(__clang__) "ands r5, r6\n\t" #else "and r5, r6\n\t" @@ -53617,27 +115898,27 @@ static int sp_384_num_bits_12(sp_digit* a) "cmp r5, #0\n\t" "beq L_sp_384_num_bits_12_110_%=\n\t" "movs r2, #0xff\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, #33\n\t" #else "add r2, r2, #33\n\t" #endif "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_384_num_bits_12_13_%=\n\t" "\n" - "L_sp_384_num_bits_12_110_%=: \n\t" + "L_sp_384_num_bits_12_110_%=:\n\t" "b L_sp_384_num_bits_12_13_%=\n\t" "\n" - "L_sp_384_num_bits_12_9_%=: \n\t" + "L_sp_384_num_bits_12_9_%=:\n\t" "ldr r3, [%[a], #32]\n\t" "cmp r3, #0\n\t" "beq L_sp_384_num_bits_12_8_%=\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #24\n\t" #else "lsr r5, r3, #24\n\t" @@ -53645,26 +115926,28 @@ static int sp_384_num_bits_12(sp_digit* a) "cmp r5, #0\n\t" "beq L_sp_384_num_bits_12_103_%=\n\t" "movs r2, #0xff\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, #25\n\t" #else "add r2, r2, #25\n\t" #endif "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_384_num_bits_12_13_%=\n\t" "\n" - "L_sp_384_num_bits_12_103_%=: \n\t" -#ifdef __clang__ + "L_sp_384_num_bits_12_103_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #16\n\t" #else "lsr r5, r3, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r6\n\t" +#elif defined(__clang__) "ands r5, r6\n\t" #else "and r5, r6\n\t" @@ -53672,26 +115955,28 @@ static int sp_384_num_bits_12(sp_digit* a) "cmp r5, #0\n\t" "beq L_sp_384_num_bits_12_102_%=\n\t" "movs r2, #0xff\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, #17\n\t" #else "add r2, r2, #17\n\t" #endif "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_384_num_bits_12_13_%=\n\t" "\n" - "L_sp_384_num_bits_12_102_%=: \n\t" -#ifdef __clang__ + "L_sp_384_num_bits_12_102_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #8\n\t" #else "lsr r5, r3, #8\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r6\n\t" +#elif defined(__clang__) "ands r5, r6\n\t" #else "and r5, r6\n\t" @@ -53699,22 +115984,24 @@ static int sp_384_num_bits_12(sp_digit* a) "cmp r5, #0\n\t" "beq L_sp_384_num_bits_12_101_%=\n\t" "movs r2, #0xff\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, #9\n\t" #else "add r2, r2, #9\n\t" #endif "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_384_num_bits_12_13_%=\n\t" "\n" - "L_sp_384_num_bits_12_101_%=: \n\t" + "L_sp_384_num_bits_12_101_%=:\n\t" "movs r5, r3\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r6\n\t" +#elif defined(__clang__) "ands r5, r6\n\t" #else "and r5, r6\n\t" @@ -53722,27 +116009,27 @@ static int sp_384_num_bits_12(sp_digit* a) "cmp r5, #0\n\t" "beq L_sp_384_num_bits_12_100_%=\n\t" "movs r2, #0xff\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, #1\n\t" #else "add r2, r2, #1\n\t" #endif "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_384_num_bits_12_13_%=\n\t" "\n" - "L_sp_384_num_bits_12_100_%=: \n\t" + "L_sp_384_num_bits_12_100_%=:\n\t" "b L_sp_384_num_bits_12_13_%=\n\t" "\n" - "L_sp_384_num_bits_12_8_%=: \n\t" + "L_sp_384_num_bits_12_8_%=:\n\t" "ldr r3, [%[a], #28]\n\t" "cmp r3, #0\n\t" "beq L_sp_384_num_bits_12_7_%=\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #24\n\t" #else "lsr r5, r3, #24\n\t" @@ -53751,20 +116038,22 @@ static int sp_384_num_bits_12(sp_digit* a) "beq L_sp_384_num_bits_12_93_%=\n\t" "movs r2, #0xf8\n\t" "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_384_num_bits_12_13_%=\n\t" "\n" - "L_sp_384_num_bits_12_93_%=: \n\t" -#ifdef __clang__ + "L_sp_384_num_bits_12_93_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #16\n\t" #else "lsr r5, r3, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r6\n\t" +#elif defined(__clang__) "ands r5, r6\n\t" #else "and r5, r6\n\t" @@ -53773,20 +116062,22 @@ static int sp_384_num_bits_12(sp_digit* a) "beq L_sp_384_num_bits_12_92_%=\n\t" "movs r2, #0xf0\n\t" "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_384_num_bits_12_13_%=\n\t" "\n" - "L_sp_384_num_bits_12_92_%=: \n\t" -#ifdef __clang__ + "L_sp_384_num_bits_12_92_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #8\n\t" #else "lsr r5, r3, #8\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r6\n\t" +#elif defined(__clang__) "ands r5, r6\n\t" #else "and r5, r6\n\t" @@ -53795,16 +116086,18 @@ static int sp_384_num_bits_12(sp_digit* a) "beq L_sp_384_num_bits_12_91_%=\n\t" "movs r2, #0xe8\n\t" "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_384_num_bits_12_13_%=\n\t" "\n" - "L_sp_384_num_bits_12_91_%=: \n\t" + "L_sp_384_num_bits_12_91_%=:\n\t" "movs r5, r3\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r6\n\t" +#elif defined(__clang__) "ands r5, r6\n\t" #else "and r5, r6\n\t" @@ -53813,21 +116106,21 @@ static int sp_384_num_bits_12(sp_digit* a) "beq L_sp_384_num_bits_12_90_%=\n\t" "movs r2, #0xe0\n\t" "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_384_num_bits_12_13_%=\n\t" "\n" - "L_sp_384_num_bits_12_90_%=: \n\t" + "L_sp_384_num_bits_12_90_%=:\n\t" "b L_sp_384_num_bits_12_13_%=\n\t" "\n" - "L_sp_384_num_bits_12_7_%=: \n\t" + "L_sp_384_num_bits_12_7_%=:\n\t" "ldr r3, [%[a], #24]\n\t" "cmp r3, #0\n\t" "beq L_sp_384_num_bits_12_6_%=\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #24\n\t" #else "lsr r5, r3, #24\n\t" @@ -53836,20 +116129,22 @@ static int sp_384_num_bits_12(sp_digit* a) "beq L_sp_384_num_bits_12_83_%=\n\t" "movs r2, #0xd8\n\t" "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_384_num_bits_12_13_%=\n\t" "\n" - "L_sp_384_num_bits_12_83_%=: \n\t" -#ifdef __clang__ + "L_sp_384_num_bits_12_83_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #16\n\t" #else "lsr r5, r3, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r6\n\t" +#elif defined(__clang__) "ands r5, r6\n\t" #else "and r5, r6\n\t" @@ -53858,20 +116153,22 @@ static int sp_384_num_bits_12(sp_digit* a) "beq L_sp_384_num_bits_12_82_%=\n\t" "movs r2, #0xd0\n\t" "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_384_num_bits_12_13_%=\n\t" "\n" - "L_sp_384_num_bits_12_82_%=: \n\t" -#ifdef __clang__ + "L_sp_384_num_bits_12_82_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #8\n\t" #else "lsr r5, r3, #8\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r6\n\t" +#elif defined(__clang__) "ands r5, r6\n\t" #else "and r5, r6\n\t" @@ -53880,16 +116177,18 @@ static int sp_384_num_bits_12(sp_digit* a) "beq L_sp_384_num_bits_12_81_%=\n\t" "movs r2, #0xc8\n\t" "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_384_num_bits_12_13_%=\n\t" "\n" - "L_sp_384_num_bits_12_81_%=: \n\t" + "L_sp_384_num_bits_12_81_%=:\n\t" "movs r5, r3\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r6\n\t" +#elif defined(__clang__) "ands r5, r6\n\t" #else "and r5, r6\n\t" @@ -53898,21 +116197,21 @@ static int sp_384_num_bits_12(sp_digit* a) "beq L_sp_384_num_bits_12_80_%=\n\t" "movs r2, #0xc0\n\t" "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_384_num_bits_12_13_%=\n\t" "\n" - "L_sp_384_num_bits_12_80_%=: \n\t" + "L_sp_384_num_bits_12_80_%=:\n\t" "b L_sp_384_num_bits_12_13_%=\n\t" "\n" - "L_sp_384_num_bits_12_6_%=: \n\t" + "L_sp_384_num_bits_12_6_%=:\n\t" "ldr r3, [%[a], #20]\n\t" "cmp r3, #0\n\t" "beq L_sp_384_num_bits_12_5_%=\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #24\n\t" #else "lsr r5, r3, #24\n\t" @@ -53921,20 +116220,22 @@ static int sp_384_num_bits_12(sp_digit* a) "beq L_sp_384_num_bits_12_73_%=\n\t" "movs r2, #0xb8\n\t" "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_384_num_bits_12_13_%=\n\t" "\n" - "L_sp_384_num_bits_12_73_%=: \n\t" -#ifdef __clang__ + "L_sp_384_num_bits_12_73_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #16\n\t" #else "lsr r5, r3, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r6\n\t" +#elif defined(__clang__) "ands r5, r6\n\t" #else "and r5, r6\n\t" @@ -53943,20 +116244,22 @@ static int sp_384_num_bits_12(sp_digit* a) "beq L_sp_384_num_bits_12_72_%=\n\t" "movs r2, #0xb0\n\t" "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_384_num_bits_12_13_%=\n\t" "\n" - "L_sp_384_num_bits_12_72_%=: \n\t" -#ifdef __clang__ + "L_sp_384_num_bits_12_72_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #8\n\t" #else "lsr r5, r3, #8\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r6\n\t" +#elif defined(__clang__) "ands r5, r6\n\t" #else "and r5, r6\n\t" @@ -53965,16 +116268,18 @@ static int sp_384_num_bits_12(sp_digit* a) "beq L_sp_384_num_bits_12_71_%=\n\t" "movs r2, #0xa8\n\t" "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_384_num_bits_12_13_%=\n\t" "\n" - "L_sp_384_num_bits_12_71_%=: \n\t" + "L_sp_384_num_bits_12_71_%=:\n\t" "movs r5, r3\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r6\n\t" +#elif defined(__clang__) "ands r5, r6\n\t" #else "and r5, r6\n\t" @@ -53983,21 +116288,21 @@ static int sp_384_num_bits_12(sp_digit* a) "beq L_sp_384_num_bits_12_70_%=\n\t" "movs r2, #0xa0\n\t" "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_384_num_bits_12_13_%=\n\t" "\n" - "L_sp_384_num_bits_12_70_%=: \n\t" + "L_sp_384_num_bits_12_70_%=:\n\t" "b L_sp_384_num_bits_12_13_%=\n\t" "\n" - "L_sp_384_num_bits_12_5_%=: \n\t" + "L_sp_384_num_bits_12_5_%=:\n\t" "ldr r3, [%[a], #16]\n\t" "cmp r3, #0\n\t" "beq L_sp_384_num_bits_12_4_%=\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #24\n\t" #else "lsr r5, r3, #24\n\t" @@ -54006,20 +116311,22 @@ static int sp_384_num_bits_12(sp_digit* a) "beq L_sp_384_num_bits_12_63_%=\n\t" "movs r2, #0x98\n\t" "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_384_num_bits_12_13_%=\n\t" "\n" - "L_sp_384_num_bits_12_63_%=: \n\t" -#ifdef __clang__ + "L_sp_384_num_bits_12_63_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #16\n\t" #else "lsr r5, r3, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r6\n\t" +#elif defined(__clang__) "ands r5, r6\n\t" #else "and r5, r6\n\t" @@ -54028,20 +116335,22 @@ static int sp_384_num_bits_12(sp_digit* a) "beq L_sp_384_num_bits_12_62_%=\n\t" "movs r2, #0x90\n\t" "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_384_num_bits_12_13_%=\n\t" "\n" - "L_sp_384_num_bits_12_62_%=: \n\t" -#ifdef __clang__ + "L_sp_384_num_bits_12_62_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #8\n\t" #else "lsr r5, r3, #8\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r6\n\t" +#elif defined(__clang__) "ands r5, r6\n\t" #else "and r5, r6\n\t" @@ -54050,16 +116359,18 @@ static int sp_384_num_bits_12(sp_digit* a) "beq L_sp_384_num_bits_12_61_%=\n\t" "movs r2, #0x88\n\t" "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_384_num_bits_12_13_%=\n\t" "\n" - "L_sp_384_num_bits_12_61_%=: \n\t" + "L_sp_384_num_bits_12_61_%=:\n\t" "movs r5, r3\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r6\n\t" +#elif defined(__clang__) "ands r5, r6\n\t" #else "and r5, r6\n\t" @@ -54068,21 +116379,21 @@ static int sp_384_num_bits_12(sp_digit* a) "beq L_sp_384_num_bits_12_60_%=\n\t" "movs r2, #0x80\n\t" "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_384_num_bits_12_13_%=\n\t" "\n" - "L_sp_384_num_bits_12_60_%=: \n\t" + "L_sp_384_num_bits_12_60_%=:\n\t" "b L_sp_384_num_bits_12_13_%=\n\t" "\n" - "L_sp_384_num_bits_12_4_%=: \n\t" + "L_sp_384_num_bits_12_4_%=:\n\t" "ldr r3, [%[a], #12]\n\t" "cmp r3, #0\n\t" "beq L_sp_384_num_bits_12_3_%=\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #24\n\t" #else "lsr r5, r3, #24\n\t" @@ -54091,20 +116402,22 @@ static int sp_384_num_bits_12(sp_digit* a) "beq L_sp_384_num_bits_12_53_%=\n\t" "movs r2, #0x78\n\t" "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_384_num_bits_12_13_%=\n\t" "\n" - "L_sp_384_num_bits_12_53_%=: \n\t" -#ifdef __clang__ + "L_sp_384_num_bits_12_53_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #16\n\t" #else "lsr r5, r3, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r6\n\t" +#elif defined(__clang__) "ands r5, r6\n\t" #else "and r5, r6\n\t" @@ -54113,20 +116426,22 @@ static int sp_384_num_bits_12(sp_digit* a) "beq L_sp_384_num_bits_12_52_%=\n\t" "movs r2, #0x70\n\t" "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_384_num_bits_12_13_%=\n\t" "\n" - "L_sp_384_num_bits_12_52_%=: \n\t" -#ifdef __clang__ + "L_sp_384_num_bits_12_52_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #8\n\t" #else "lsr r5, r3, #8\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r6\n\t" +#elif defined(__clang__) "ands r5, r6\n\t" #else "and r5, r6\n\t" @@ -54135,16 +116450,18 @@ static int sp_384_num_bits_12(sp_digit* a) "beq L_sp_384_num_bits_12_51_%=\n\t" "movs r2, #0x68\n\t" "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_384_num_bits_12_13_%=\n\t" "\n" - "L_sp_384_num_bits_12_51_%=: \n\t" + "L_sp_384_num_bits_12_51_%=:\n\t" "movs r5, r3\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r6\n\t" +#elif defined(__clang__) "ands r5, r6\n\t" #else "and r5, r6\n\t" @@ -54153,21 +116470,21 @@ static int sp_384_num_bits_12(sp_digit* a) "beq L_sp_384_num_bits_12_50_%=\n\t" "movs r2, #0x60\n\t" "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_384_num_bits_12_13_%=\n\t" "\n" - "L_sp_384_num_bits_12_50_%=: \n\t" + "L_sp_384_num_bits_12_50_%=:\n\t" "b L_sp_384_num_bits_12_13_%=\n\t" "\n" - "L_sp_384_num_bits_12_3_%=: \n\t" + "L_sp_384_num_bits_12_3_%=:\n\t" "ldr r3, [%[a], #8]\n\t" "cmp r3, #0\n\t" "beq L_sp_384_num_bits_12_2_%=\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #24\n\t" #else "lsr r5, r3, #24\n\t" @@ -54176,20 +116493,22 @@ static int sp_384_num_bits_12(sp_digit* a) "beq L_sp_384_num_bits_12_43_%=\n\t" "movs r2, #0x58\n\t" "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_384_num_bits_12_13_%=\n\t" "\n" - "L_sp_384_num_bits_12_43_%=: \n\t" -#ifdef __clang__ + "L_sp_384_num_bits_12_43_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #16\n\t" #else "lsr r5, r3, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r6\n\t" +#elif defined(__clang__) "ands r5, r6\n\t" #else "and r5, r6\n\t" @@ -54198,20 +116517,22 @@ static int sp_384_num_bits_12(sp_digit* a) "beq L_sp_384_num_bits_12_42_%=\n\t" "movs r2, #0x50\n\t" "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_384_num_bits_12_13_%=\n\t" "\n" - "L_sp_384_num_bits_12_42_%=: \n\t" -#ifdef __clang__ + "L_sp_384_num_bits_12_42_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #8\n\t" #else "lsr r5, r3, #8\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r6\n\t" +#elif defined(__clang__) "ands r5, r6\n\t" #else "and r5, r6\n\t" @@ -54220,16 +116541,18 @@ static int sp_384_num_bits_12(sp_digit* a) "beq L_sp_384_num_bits_12_41_%=\n\t" "movs r2, #0x48\n\t" "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_384_num_bits_12_13_%=\n\t" "\n" - "L_sp_384_num_bits_12_41_%=: \n\t" + "L_sp_384_num_bits_12_41_%=:\n\t" "movs r5, r3\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r6\n\t" +#elif defined(__clang__) "ands r5, r6\n\t" #else "and r5, r6\n\t" @@ -54238,21 +116561,21 @@ static int sp_384_num_bits_12(sp_digit* a) "beq L_sp_384_num_bits_12_40_%=\n\t" "movs r2, #0x40\n\t" "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_384_num_bits_12_13_%=\n\t" "\n" - "L_sp_384_num_bits_12_40_%=: \n\t" + "L_sp_384_num_bits_12_40_%=:\n\t" "b L_sp_384_num_bits_12_13_%=\n\t" "\n" - "L_sp_384_num_bits_12_2_%=: \n\t" + "L_sp_384_num_bits_12_2_%=:\n\t" "ldr r3, [%[a], #4]\n\t" "cmp r3, #0\n\t" "beq L_sp_384_num_bits_12_1_%=\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #24\n\t" #else "lsr r5, r3, #24\n\t" @@ -54261,20 +116584,22 @@ static int sp_384_num_bits_12(sp_digit* a) "beq L_sp_384_num_bits_12_33_%=\n\t" "movs r2, #56\n\t" "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_384_num_bits_12_13_%=\n\t" "\n" - "L_sp_384_num_bits_12_33_%=: \n\t" -#ifdef __clang__ + "L_sp_384_num_bits_12_33_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #16\n\t" #else "lsr r5, r3, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r6\n\t" +#elif defined(__clang__) "ands r5, r6\n\t" #else "and r5, r6\n\t" @@ -54283,20 +116608,22 @@ static int sp_384_num_bits_12(sp_digit* a) "beq L_sp_384_num_bits_12_32_%=\n\t" "movs r2, #48\n\t" "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_384_num_bits_12_13_%=\n\t" "\n" - "L_sp_384_num_bits_12_32_%=: \n\t" -#ifdef __clang__ + "L_sp_384_num_bits_12_32_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #8\n\t" #else "lsr r5, r3, #8\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r6\n\t" +#elif defined(__clang__) "ands r5, r6\n\t" #else "and r5, r6\n\t" @@ -54305,16 +116632,18 @@ static int sp_384_num_bits_12(sp_digit* a) "beq L_sp_384_num_bits_12_31_%=\n\t" "movs r2, #40\n\t" "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_384_num_bits_12_13_%=\n\t" "\n" - "L_sp_384_num_bits_12_31_%=: \n\t" + "L_sp_384_num_bits_12_31_%=:\n\t" "movs r5, r3\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r6\n\t" +#elif defined(__clang__) "ands r5, r6\n\t" #else "and r5, r6\n\t" @@ -54323,19 +116652,19 @@ static int sp_384_num_bits_12(sp_digit* a) "beq L_sp_384_num_bits_12_30_%=\n\t" "movs r2, #32\n\t" "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_384_num_bits_12_13_%=\n\t" "\n" - "L_sp_384_num_bits_12_30_%=: \n\t" + "L_sp_384_num_bits_12_30_%=:\n\t" "b L_sp_384_num_bits_12_13_%=\n\t" "\n" - "L_sp_384_num_bits_12_1_%=: \n\t" + "L_sp_384_num_bits_12_1_%=:\n\t" "ldr r3, [%[a]]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #24\n\t" #else "lsr r5, r3, #24\n\t" @@ -54344,20 +116673,22 @@ static int sp_384_num_bits_12(sp_digit* a) "beq L_sp_384_num_bits_12_23_%=\n\t" "movs r2, #24\n\t" "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_384_num_bits_12_13_%=\n\t" "\n" - "L_sp_384_num_bits_12_23_%=: \n\t" -#ifdef __clang__ + "L_sp_384_num_bits_12_23_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #16\n\t" #else "lsr r5, r3, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r6\n\t" +#elif defined(__clang__) "ands r5, r6\n\t" #else "and r5, r6\n\t" @@ -54366,20 +116697,22 @@ static int sp_384_num_bits_12(sp_digit* a) "beq L_sp_384_num_bits_12_22_%=\n\t" "movs r2, #16\n\t" "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_384_num_bits_12_13_%=\n\t" "\n" - "L_sp_384_num_bits_12_22_%=: \n\t" -#ifdef __clang__ + "L_sp_384_num_bits_12_22_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, r3, #8\n\t" #else "lsr r5, r3, #8\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r6\n\t" +#elif defined(__clang__) "ands r5, r6\n\t" #else "and r5, r6\n\t" @@ -54388,16 +116721,18 @@ static int sp_384_num_bits_12(sp_digit* a) "beq L_sp_384_num_bits_12_21_%=\n\t" "movs r2, #8\n\t" "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_384_num_bits_12_13_%=\n\t" "\n" - "L_sp_384_num_bits_12_21_%=: \n\t" + "L_sp_384_num_bits_12_21_%=:\n\t" "movs r5, r3\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r6\n\t" +#elif defined(__clang__) "ands r5, r6\n\t" #else "and r5, r6\n\t" @@ -54406,16 +116741,16 @@ static int sp_384_num_bits_12(sp_digit* a) "beq L_sp_384_num_bits_12_20_%=\n\t" "movs r2, #0\n\t" "ldrb r4, [%[table], r5]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r4\n\t" #else "add r2, r2, r4\n\t" #endif "b L_sp_384_num_bits_12_13_%=\n\t" "\n" - "L_sp_384_num_bits_12_20_%=: \n\t" + "L_sp_384_num_bits_12_20_%=:\n\t" "\n" - "L_sp_384_num_bits_12_13_%=: \n\t" + "L_sp_384_num_bits_12_13_%=:\n\t" "movs %[a], r2\n\t" : [a] "+r" (a), [table] "+r" (table) : @@ -55467,6 +117802,7 @@ typedef struct sp_point_1024 { } sp_point_1024; #ifndef WOLFSSL_SP_SMALL +#ifndef WOLFSSL_SP_LARGE_CODE /* Multiply a and b into r. (r = a * b) * * r A single precision integer. @@ -55489,33 +117825,37 @@ SP_NOINLINE static void sp_1024_mul_16(sp_digit* r, const sp_digit* a, "add r6, r6, r9\n\t" "mov r12, r6\n\t" "\n" - "L_sp_1024_mul_16_words_%=: \n\t" + "L_sp_1024_mul_16_words_%=:\n\t" "movs %[tmp], #0\n\t" "movs r5, #0\n\t" "movs r6, #60\n\t" "mov %[a], r8\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[a], %[a], r6\n\t" #else "sub %[a], %[a], r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r6\n\t" +#elif defined(__clang__) "sbcs r6, r6\n\t" #else "sbc r6, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "mvns r6, r6\n\t" #else "mvn r6, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands %[a], %[a], r6\n\t" +#elif defined(__clang__) "ands %[a], r6\n\t" #else "and %[a], r6\n\t" #endif "mov %[b], r8\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[b], %[b], %[a]\n\t" #else "sub %[b], %[b], %[a]\n\t" @@ -55523,161 +117863,153 @@ SP_NOINLINE static void sp_1024_mul_16(sp_digit* r, const sp_digit* a, "add %[a], %[a], r9\n\t" "add %[b], %[b], r10\n\t" "\n" - "L_sp_1024_mul_16_mul_%=: \n\t" + "L_sp_1024_mul_16_mul_%=:\n\t" "# Multiply Start\n\t" - "ldr r6, [%[a]]\n\t" - "ldr r7, [%[b]]\n\t" -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsls r7, r7, #16\n\t" -#else - "lsl r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ + "ldrh r6, [%[a]]\n\t" + "ldrh r7, [%[b]]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) "muls r7, r6\n\t" #else "mul r7, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r7\n\t" #else "add r3, r3, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[tmp]\n\t" +#elif defined(__clang__) "adcs r4, %[tmp]\n\t" #else "adc r4, %[tmp]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[tmp]\n\t" +#elif defined(__clang__) "adcs r5, %[tmp]\n\t" #else "adc r5, %[tmp]\n\t" #endif "ldr r7, [%[b]]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r7, #16\n\t" #else "lsr r7, r7, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) "muls r6, r7\n\t" #else "mul r6, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r6, #16\n\t" #else "lsr r7, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #16\n\t" #else "lsl r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[tmp]\n\t" +#elif defined(__clang__) "adcs r5, %[tmp]\n\t" #else "adc r5, %[tmp]\n\t" #endif "ldr r6, [%[a]]\n\t" "ldr r7, [%[b]]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, #16\n\t" #else "lsr r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r7, #16\n\t" #else "lsr r7, r7, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) "muls r7, r6\n\t" #else "mul r7, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, r7\n\t" #else "add r4, r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[tmp]\n\t" +#elif defined(__clang__) "adcs r5, %[tmp]\n\t" #else "adc r5, %[tmp]\n\t" #endif - "ldr r7, [%[b]]\n\t" -#ifdef __clang__ - "lsls r7, r7, #16\n\t" -#else - "lsl r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ + "ldrh r7, [%[b]]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) "muls r6, r7\n\t" #else "mul r6, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r6, #16\n\t" #else "lsr r7, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #16\n\t" #else "lsl r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[tmp]\n\t" +#elif defined(__clang__) "adcs r5, %[tmp]\n\t" #else "adc r5, %[tmp]\n\t" #endif "# Multiply Done\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[a], %[a], #4\n\t" #else "add %[a], %[a], #4\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[b], %[b], #4\n\t" #else "sub %[b], %[b], #4\n\t" @@ -55689,13 +118021,13 @@ SP_NOINLINE static void sp_1024_mul_16(sp_digit* r, const sp_digit* a, "cmp %[a], r6\n\t" "ble L_sp_1024_mul_16_mul_%=\n\t" "\n" - "L_sp_1024_mul_16_done_mul_%=: \n\t" + "L_sp_1024_mul_16_done_mul_%=:\n\t" "mov %[tmp], r11\n\t" "mov r7, r8\n\t" "str r3, [%[tmp], r7]\n\t" "movs r3, r4\n\t" "movs r4, r5\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r7, r7, #4\n\t" #else "add r7, r7, #4\n\t" @@ -55715,6 +118047,35894 @@ SP_NOINLINE static void sp_1024_mul_16(sp_digit* r, const sp_digit* a, XMEMCPY(r, t, sizeof(t)); } +#else +/* Multiply a and b into r. (r = a * b) + * + * r A single precision integer. + * a A single precision integer. + * b A single precision integer. + */ +SP_NOINLINE static void sp_1024_mul_16(sp_digit* r, const sp_digit* a, + const sp_digit* b) +{ + __asm__ __volatile__ ( + "sub sp, sp, #0x40\n\t" + "mov r8, %[r]\n\t" + "mov r9, %[a]\n\t" + "mov r10, %[b]\n\t" + "movs %[r], #0\n\t" + "# A[0] * B[0]\n\t" + "ldr %[a], [%[a]]\n\t" + "ldr %[b], [%[b]]\n\t" + "uxth r6, %[a]\n\t" + "uxth r3, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r3, r6, r3\n\t" +#elif defined(__clang__) + "muls r3, r6\n\t" +#else + "mul r3, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r4, r6, #16\n\t" +#else + "lsr r4, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif + "movs r5, #0\n\t" + "str r3, [sp]\n\t" + "# A[0] * B[1]\n\t" + "movs r3, #0\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a]]\n\t" + "ldr %[b], [%[b], #4]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[1] * B[0]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #4]\n\t" + "ldr %[b], [%[b]]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "str r4, [sp, #4]\n\t" + "# A[2] * B[0]\n\t" + "movs r4, #0\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #8]\n\t" + "ldr %[b], [%[b]]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[1] * B[1]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #4]\n\t" + "ldr %[b], [%[b], #4]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[0] * B[2]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a]]\n\t" + "ldr %[b], [%[b], #8]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "str r5, [sp, #8]\n\t" + "# A[0] * B[3]\n\t" + "movs r5, #0\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a]]\n\t" + "ldr %[b], [%[b], #12]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[1] * B[2]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #4]\n\t" + "ldr %[b], [%[b], #8]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[2] * B[1]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #8]\n\t" + "ldr %[b], [%[b], #4]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[3] * B[0]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #12]\n\t" + "ldr %[b], [%[b]]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "str r3, [sp, #12]\n\t" + "# A[4] * B[0]\n\t" + "movs r3, #0\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #16]\n\t" + "ldr %[b], [%[b]]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[3] * B[1]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #12]\n\t" + "ldr %[b], [%[b], #4]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[2] * B[2]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #8]\n\t" + "ldr %[b], [%[b], #8]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[1] * B[3]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #4]\n\t" + "ldr %[b], [%[b], #12]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[0] * B[4]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a]]\n\t" + "ldr %[b], [%[b], #16]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "str r4, [sp, #16]\n\t" + "# A[0] * B[5]\n\t" + "movs r4, #0\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a]]\n\t" + "ldr %[b], [%[b], #20]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[1] * B[4]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #4]\n\t" + "ldr %[b], [%[b], #16]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[2] * B[3]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #8]\n\t" + "ldr %[b], [%[b], #12]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[3] * B[2]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #12]\n\t" + "ldr %[b], [%[b], #8]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[4] * B[1]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #16]\n\t" + "ldr %[b], [%[b], #4]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[5] * B[0]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #20]\n\t" + "ldr %[b], [%[b]]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "str r5, [sp, #20]\n\t" + "# A[6] * B[0]\n\t" + "movs r5, #0\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #24]\n\t" + "ldr %[b], [%[b]]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[5] * B[1]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #20]\n\t" + "ldr %[b], [%[b], #4]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[4] * B[2]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #16]\n\t" + "ldr %[b], [%[b], #8]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[3] * B[3]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #12]\n\t" + "ldr %[b], [%[b], #12]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[2] * B[4]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #8]\n\t" + "ldr %[b], [%[b], #16]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[1] * B[5]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #4]\n\t" + "ldr %[b], [%[b], #20]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[0] * B[6]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a]]\n\t" + "ldr %[b], [%[b], #24]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "str r3, [sp, #24]\n\t" + "# A[0] * B[7]\n\t" + "movs r3, #0\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a]]\n\t" + "ldr %[b], [%[b], #28]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[1] * B[6]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #4]\n\t" + "ldr %[b], [%[b], #24]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[2] * B[5]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #8]\n\t" + "ldr %[b], [%[b], #20]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[3] * B[4]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #12]\n\t" + "ldr %[b], [%[b], #16]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[4] * B[3]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #16]\n\t" + "ldr %[b], [%[b], #12]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[5] * B[2]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #20]\n\t" + "ldr %[b], [%[b], #8]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[6] * B[1]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #24]\n\t" + "ldr %[b], [%[b], #4]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[7] * B[0]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #28]\n\t" + "ldr %[b], [%[b]]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "str r4, [sp, #28]\n\t" + "# A[8] * B[0]\n\t" + "movs r4, #0\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #32]\n\t" + "ldr %[b], [%[b]]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[7] * B[1]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #28]\n\t" + "ldr %[b], [%[b], #4]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[6] * B[2]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #24]\n\t" + "ldr %[b], [%[b], #8]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[5] * B[3]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #20]\n\t" + "ldr %[b], [%[b], #12]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[4] * B[4]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #16]\n\t" + "ldr %[b], [%[b], #16]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[3] * B[5]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #12]\n\t" + "ldr %[b], [%[b], #20]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[2] * B[6]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #8]\n\t" + "ldr %[b], [%[b], #24]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[1] * B[7]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #4]\n\t" + "ldr %[b], [%[b], #28]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[0] * B[8]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a]]\n\t" + "ldr %[b], [%[b], #32]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "str r5, [sp, #32]\n\t" + "# A[0] * B[9]\n\t" + "movs r5, #0\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a]]\n\t" + "ldr %[b], [%[b], #36]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[1] * B[8]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #4]\n\t" + "ldr %[b], [%[b], #32]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[2] * B[7]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #8]\n\t" + "ldr %[b], [%[b], #28]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[3] * B[6]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #12]\n\t" + "ldr %[b], [%[b], #24]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[4] * B[5]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #16]\n\t" + "ldr %[b], [%[b], #20]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[5] * B[4]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #20]\n\t" + "ldr %[b], [%[b], #16]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[6] * B[3]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #24]\n\t" + "ldr %[b], [%[b], #12]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[7] * B[2]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #28]\n\t" + "ldr %[b], [%[b], #8]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[8] * B[1]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #32]\n\t" + "ldr %[b], [%[b], #4]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[9] * B[0]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #36]\n\t" + "ldr %[b], [%[b]]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "str r3, [sp, #36]\n\t" + "# A[10] * B[0]\n\t" + "movs r3, #0\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #40]\n\t" + "ldr %[b], [%[b]]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[9] * B[1]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #36]\n\t" + "ldr %[b], [%[b], #4]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[8] * B[2]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #32]\n\t" + "ldr %[b], [%[b], #8]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[7] * B[3]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #28]\n\t" + "ldr %[b], [%[b], #12]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[6] * B[4]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #24]\n\t" + "ldr %[b], [%[b], #16]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[5] * B[5]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #20]\n\t" + "ldr %[b], [%[b], #20]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[4] * B[6]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #16]\n\t" + "ldr %[b], [%[b], #24]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[3] * B[7]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #12]\n\t" + "ldr %[b], [%[b], #28]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[2] * B[8]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #8]\n\t" + "ldr %[b], [%[b], #32]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[1] * B[9]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #4]\n\t" + "ldr %[b], [%[b], #36]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[0] * B[10]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a]]\n\t" + "ldr %[b], [%[b], #40]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "str r4, [sp, #40]\n\t" + "# A[0] * B[11]\n\t" + "movs r4, #0\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a]]\n\t" + "ldr %[b], [%[b], #44]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[1] * B[10]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #4]\n\t" + "ldr %[b], [%[b], #40]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[2] * B[9]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #8]\n\t" + "ldr %[b], [%[b], #36]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[3] * B[8]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #12]\n\t" + "ldr %[b], [%[b], #32]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[4] * B[7]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #16]\n\t" + "ldr %[b], [%[b], #28]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[5] * B[6]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #20]\n\t" + "ldr %[b], [%[b], #24]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[6] * B[5]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #24]\n\t" + "ldr %[b], [%[b], #20]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[7] * B[4]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #28]\n\t" + "ldr %[b], [%[b], #16]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[8] * B[3]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #32]\n\t" + "ldr %[b], [%[b], #12]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[9] * B[2]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #36]\n\t" + "ldr %[b], [%[b], #8]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[10] * B[1]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #40]\n\t" + "ldr %[b], [%[b], #4]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[11] * B[0]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #44]\n\t" + "ldr %[b], [%[b]]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "str r5, [sp, #44]\n\t" + "# A[12] * B[0]\n\t" + "movs r5, #0\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #48]\n\t" + "ldr %[b], [%[b]]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[11] * B[1]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #44]\n\t" + "ldr %[b], [%[b], #4]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[10] * B[2]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #40]\n\t" + "ldr %[b], [%[b], #8]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[9] * B[3]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #36]\n\t" + "ldr %[b], [%[b], #12]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[8] * B[4]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #32]\n\t" + "ldr %[b], [%[b], #16]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[7] * B[5]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #28]\n\t" + "ldr %[b], [%[b], #20]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[6] * B[6]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #24]\n\t" + "ldr %[b], [%[b], #24]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[5] * B[7]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #20]\n\t" + "ldr %[b], [%[b], #28]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[4] * B[8]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #16]\n\t" + "ldr %[b], [%[b], #32]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[3] * B[9]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #12]\n\t" + "ldr %[b], [%[b], #36]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[2] * B[10]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #8]\n\t" + "ldr %[b], [%[b], #40]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[1] * B[11]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #4]\n\t" + "ldr %[b], [%[b], #44]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[0] * B[12]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a]]\n\t" + "ldr %[b], [%[b], #48]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "str r3, [sp, #48]\n\t" + "# A[0] * B[13]\n\t" + "movs r3, #0\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a]]\n\t" + "ldr %[b], [%[b], #52]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[1] * B[12]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #4]\n\t" + "ldr %[b], [%[b], #48]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[2] * B[11]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #8]\n\t" + "ldr %[b], [%[b], #44]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[3] * B[10]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #12]\n\t" + "ldr %[b], [%[b], #40]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[4] * B[9]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #16]\n\t" + "ldr %[b], [%[b], #36]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[5] * B[8]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #20]\n\t" + "ldr %[b], [%[b], #32]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[6] * B[7]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #24]\n\t" + "ldr %[b], [%[b], #28]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[7] * B[6]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #28]\n\t" + "ldr %[b], [%[b], #24]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[8] * B[5]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #32]\n\t" + "ldr %[b], [%[b], #20]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[9] * B[4]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #36]\n\t" + "ldr %[b], [%[b], #16]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[10] * B[3]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #40]\n\t" + "ldr %[b], [%[b], #12]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[11] * B[2]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #44]\n\t" + "ldr %[b], [%[b], #8]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[12] * B[1]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #48]\n\t" + "ldr %[b], [%[b], #4]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[13] * B[0]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #52]\n\t" + "ldr %[b], [%[b]]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "str r4, [sp, #52]\n\t" + "# A[14] * B[0]\n\t" + "movs r4, #0\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #56]\n\t" + "ldr %[b], [%[b]]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[13] * B[1]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #52]\n\t" + "ldr %[b], [%[b], #4]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[12] * B[2]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #48]\n\t" + "ldr %[b], [%[b], #8]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[11] * B[3]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #44]\n\t" + "ldr %[b], [%[b], #12]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[10] * B[4]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #40]\n\t" + "ldr %[b], [%[b], #16]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[9] * B[5]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #36]\n\t" + "ldr %[b], [%[b], #20]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[8] * B[6]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #32]\n\t" + "ldr %[b], [%[b], #24]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[7] * B[7]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #28]\n\t" + "ldr %[b], [%[b], #28]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[6] * B[8]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #24]\n\t" + "ldr %[b], [%[b], #32]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[5] * B[9]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #20]\n\t" + "ldr %[b], [%[b], #36]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[4] * B[10]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #16]\n\t" + "ldr %[b], [%[b], #40]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[3] * B[11]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #12]\n\t" + "ldr %[b], [%[b], #44]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[2] * B[12]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #8]\n\t" + "ldr %[b], [%[b], #48]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[1] * B[13]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #4]\n\t" + "ldr %[b], [%[b], #52]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[0] * B[14]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a]]\n\t" + "ldr %[b], [%[b], #56]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "str r5, [sp, #56]\n\t" + "# A[0] * B[15]\n\t" + "movs r5, #0\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a]]\n\t" + "ldr %[b], [%[b], #60]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[1] * B[14]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #4]\n\t" + "ldr %[b], [%[b], #56]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[2] * B[13]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #8]\n\t" + "ldr %[b], [%[b], #52]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[3] * B[12]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #12]\n\t" + "ldr %[b], [%[b], #48]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[4] * B[11]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #16]\n\t" + "ldr %[b], [%[b], #44]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[5] * B[10]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #20]\n\t" + "ldr %[b], [%[b], #40]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[6] * B[9]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #24]\n\t" + "ldr %[b], [%[b], #36]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[7] * B[8]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #28]\n\t" + "ldr %[b], [%[b], #32]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[8] * B[7]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #32]\n\t" + "ldr %[b], [%[b], #28]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[9] * B[6]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #36]\n\t" + "ldr %[b], [%[b], #24]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[10] * B[5]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #40]\n\t" + "ldr %[b], [%[b], #20]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[11] * B[4]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #44]\n\t" + "ldr %[b], [%[b], #16]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[12] * B[3]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #48]\n\t" + "ldr %[b], [%[b], #12]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[13] * B[2]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #52]\n\t" + "ldr %[b], [%[b], #8]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[14] * B[1]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #56]\n\t" + "ldr %[b], [%[b], #4]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[15] * B[0]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #60]\n\t" + "ldr %[b], [%[b]]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "str r3, [sp, #60]\n\t" + "# A[15] * B[1]\n\t" + "movs r3, #0\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #60]\n\t" + "ldr %[b], [%[b], #4]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[14] * B[2]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #56]\n\t" + "ldr %[b], [%[b], #8]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[13] * B[3]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #52]\n\t" + "ldr %[b], [%[b], #12]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[12] * B[4]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #48]\n\t" + "ldr %[b], [%[b], #16]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[11] * B[5]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #44]\n\t" + "ldr %[b], [%[b], #20]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[10] * B[6]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #40]\n\t" + "ldr %[b], [%[b], #24]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[9] * B[7]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #36]\n\t" + "ldr %[b], [%[b], #28]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[8] * B[8]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #32]\n\t" + "ldr %[b], [%[b], #32]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[7] * B[9]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #28]\n\t" + "ldr %[b], [%[b], #36]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[6] * B[10]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #24]\n\t" + "ldr %[b], [%[b], #40]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[5] * B[11]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #20]\n\t" + "ldr %[b], [%[b], #44]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[4] * B[12]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #16]\n\t" + "ldr %[b], [%[b], #48]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[3] * B[13]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #12]\n\t" + "ldr %[b], [%[b], #52]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[2] * B[14]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #8]\n\t" + "ldr %[b], [%[b], #56]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[1] * B[15]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #4]\n\t" + "ldr %[b], [%[b], #60]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "mov %[r], r8\n\t" + "str r4, [%[r], #64]\n\t" + "movs %[r], #0\n\t" + "# A[2] * B[15]\n\t" + "movs r4, #0\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #8]\n\t" + "ldr %[b], [%[b], #60]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[3] * B[14]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #12]\n\t" + "ldr %[b], [%[b], #56]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[4] * B[13]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #16]\n\t" + "ldr %[b], [%[b], #52]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[5] * B[12]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #20]\n\t" + "ldr %[b], [%[b], #48]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[6] * B[11]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #24]\n\t" + "ldr %[b], [%[b], #44]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[7] * B[10]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #28]\n\t" + "ldr %[b], [%[b], #40]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[8] * B[9]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #32]\n\t" + "ldr %[b], [%[b], #36]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[9] * B[8]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #36]\n\t" + "ldr %[b], [%[b], #32]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[10] * B[7]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #40]\n\t" + "ldr %[b], [%[b], #28]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[11] * B[6]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #44]\n\t" + "ldr %[b], [%[b], #24]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[12] * B[5]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #48]\n\t" + "ldr %[b], [%[b], #20]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[13] * B[4]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #52]\n\t" + "ldr %[b], [%[b], #16]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[14] * B[3]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #56]\n\t" + "ldr %[b], [%[b], #12]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[15] * B[2]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #60]\n\t" + "ldr %[b], [%[b], #8]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "mov %[r], r8\n\t" + "str r5, [%[r], #68]\n\t" + "movs %[r], #0\n\t" + "# A[15] * B[3]\n\t" + "movs r5, #0\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #60]\n\t" + "ldr %[b], [%[b], #12]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[14] * B[4]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #56]\n\t" + "ldr %[b], [%[b], #16]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[13] * B[5]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #52]\n\t" + "ldr %[b], [%[b], #20]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[12] * B[6]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #48]\n\t" + "ldr %[b], [%[b], #24]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[11] * B[7]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #44]\n\t" + "ldr %[b], [%[b], #28]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[10] * B[8]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #40]\n\t" + "ldr %[b], [%[b], #32]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[9] * B[9]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #36]\n\t" + "ldr %[b], [%[b], #36]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[8] * B[10]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #32]\n\t" + "ldr %[b], [%[b], #40]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[7] * B[11]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #28]\n\t" + "ldr %[b], [%[b], #44]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[6] * B[12]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #24]\n\t" + "ldr %[b], [%[b], #48]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[5] * B[13]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #20]\n\t" + "ldr %[b], [%[b], #52]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[4] * B[14]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #16]\n\t" + "ldr %[b], [%[b], #56]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[3] * B[15]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #12]\n\t" + "ldr %[b], [%[b], #60]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "mov %[r], r8\n\t" + "str r3, [%[r], #72]\n\t" + "movs %[r], #0\n\t" + "# A[4] * B[15]\n\t" + "movs r3, #0\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #16]\n\t" + "ldr %[b], [%[b], #60]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[5] * B[14]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #20]\n\t" + "ldr %[b], [%[b], #56]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[6] * B[13]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #24]\n\t" + "ldr %[b], [%[b], #52]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[7] * B[12]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #28]\n\t" + "ldr %[b], [%[b], #48]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[8] * B[11]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #32]\n\t" + "ldr %[b], [%[b], #44]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[9] * B[10]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #36]\n\t" + "ldr %[b], [%[b], #40]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[10] * B[9]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #40]\n\t" + "ldr %[b], [%[b], #36]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[11] * B[8]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #44]\n\t" + "ldr %[b], [%[b], #32]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[12] * B[7]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #48]\n\t" + "ldr %[b], [%[b], #28]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[13] * B[6]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #52]\n\t" + "ldr %[b], [%[b], #24]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[14] * B[5]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #56]\n\t" + "ldr %[b], [%[b], #20]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[15] * B[4]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #60]\n\t" + "ldr %[b], [%[b], #16]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "mov %[r], r8\n\t" + "str r4, [%[r], #76]\n\t" + "movs %[r], #0\n\t" + "# A[15] * B[5]\n\t" + "movs r4, #0\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #60]\n\t" + "ldr %[b], [%[b], #20]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[14] * B[6]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #56]\n\t" + "ldr %[b], [%[b], #24]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[13] * B[7]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #52]\n\t" + "ldr %[b], [%[b], #28]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[12] * B[8]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #48]\n\t" + "ldr %[b], [%[b], #32]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[11] * B[9]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #44]\n\t" + "ldr %[b], [%[b], #36]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[10] * B[10]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #40]\n\t" + "ldr %[b], [%[b], #40]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[9] * B[11]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #36]\n\t" + "ldr %[b], [%[b], #44]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[8] * B[12]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #32]\n\t" + "ldr %[b], [%[b], #48]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[7] * B[13]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #28]\n\t" + "ldr %[b], [%[b], #52]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[6] * B[14]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #24]\n\t" + "ldr %[b], [%[b], #56]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[5] * B[15]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #20]\n\t" + "ldr %[b], [%[b], #60]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "mov %[r], r8\n\t" + "str r5, [%[r], #80]\n\t" + "movs %[r], #0\n\t" + "# A[6] * B[15]\n\t" + "movs r5, #0\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #24]\n\t" + "ldr %[b], [%[b], #60]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[7] * B[14]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #28]\n\t" + "ldr %[b], [%[b], #56]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[8] * B[13]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #32]\n\t" + "ldr %[b], [%[b], #52]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[9] * B[12]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #36]\n\t" + "ldr %[b], [%[b], #48]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[10] * B[11]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #40]\n\t" + "ldr %[b], [%[b], #44]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[11] * B[10]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #44]\n\t" + "ldr %[b], [%[b], #40]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[12] * B[9]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #48]\n\t" + "ldr %[b], [%[b], #36]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[13] * B[8]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #52]\n\t" + "ldr %[b], [%[b], #32]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[14] * B[7]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #56]\n\t" + "ldr %[b], [%[b], #28]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[15] * B[6]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #60]\n\t" + "ldr %[b], [%[b], #24]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "mov %[r], r8\n\t" + "str r3, [%[r], #84]\n\t" + "movs %[r], #0\n\t" + "# A[15] * B[7]\n\t" + "movs r3, #0\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #60]\n\t" + "ldr %[b], [%[b], #28]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[14] * B[8]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #56]\n\t" + "ldr %[b], [%[b], #32]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[13] * B[9]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #52]\n\t" + "ldr %[b], [%[b], #36]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[12] * B[10]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #48]\n\t" + "ldr %[b], [%[b], #40]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[11] * B[11]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #44]\n\t" + "ldr %[b], [%[b], #44]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[10] * B[12]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #40]\n\t" + "ldr %[b], [%[b], #48]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[9] * B[13]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #36]\n\t" + "ldr %[b], [%[b], #52]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[8] * B[14]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #32]\n\t" + "ldr %[b], [%[b], #56]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[7] * B[15]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #28]\n\t" + "ldr %[b], [%[b], #60]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "mov %[r], r8\n\t" + "str r4, [%[r], #88]\n\t" + "movs %[r], #0\n\t" + "# A[8] * B[15]\n\t" + "movs r4, #0\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #32]\n\t" + "ldr %[b], [%[b], #60]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[9] * B[14]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #36]\n\t" + "ldr %[b], [%[b], #56]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[10] * B[13]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #40]\n\t" + "ldr %[b], [%[b], #52]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[11] * B[12]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #44]\n\t" + "ldr %[b], [%[b], #48]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[12] * B[11]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #48]\n\t" + "ldr %[b], [%[b], #44]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[13] * B[10]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #52]\n\t" + "ldr %[b], [%[b], #40]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[14] * B[9]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #56]\n\t" + "ldr %[b], [%[b], #36]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[15] * B[8]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #60]\n\t" + "ldr %[b], [%[b], #32]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "mov %[r], r8\n\t" + "str r5, [%[r], #92]\n\t" + "movs %[r], #0\n\t" + "# A[15] * B[9]\n\t" + "movs r5, #0\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #60]\n\t" + "ldr %[b], [%[b], #36]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[14] * B[10]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #56]\n\t" + "ldr %[b], [%[b], #40]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[13] * B[11]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #52]\n\t" + "ldr %[b], [%[b], #44]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[12] * B[12]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #48]\n\t" + "ldr %[b], [%[b], #48]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[11] * B[13]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #44]\n\t" + "ldr %[b], [%[b], #52]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[10] * B[14]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #40]\n\t" + "ldr %[b], [%[b], #56]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[9] * B[15]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #36]\n\t" + "ldr %[b], [%[b], #60]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "mov %[r], r8\n\t" + "str r3, [%[r], #96]\n\t" + "movs %[r], #0\n\t" + "# A[10] * B[15]\n\t" + "movs r3, #0\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #40]\n\t" + "ldr %[b], [%[b], #60]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[11] * B[14]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #44]\n\t" + "ldr %[b], [%[b], #56]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[12] * B[13]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #48]\n\t" + "ldr %[b], [%[b], #52]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[13] * B[12]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #52]\n\t" + "ldr %[b], [%[b], #48]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[14] * B[11]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #56]\n\t" + "ldr %[b], [%[b], #44]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[15] * B[10]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #60]\n\t" + "ldr %[b], [%[b], #40]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "mov %[r], r8\n\t" + "str r4, [%[r], #100]\n\t" + "movs %[r], #0\n\t" + "# A[15] * B[11]\n\t" + "movs r4, #0\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #60]\n\t" + "ldr %[b], [%[b], #44]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[14] * B[12]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #56]\n\t" + "ldr %[b], [%[b], #48]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[13] * B[13]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #52]\n\t" + "ldr %[b], [%[b], #52]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[12] * B[14]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #48]\n\t" + "ldr %[b], [%[b], #56]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[11] * B[15]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #44]\n\t" + "ldr %[b], [%[b], #60]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "mov %[r], r8\n\t" + "str r5, [%[r], #104]\n\t" + "movs %[r], #0\n\t" + "# A[12] * B[15]\n\t" + "movs r5, #0\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #48]\n\t" + "ldr %[b], [%[b], #60]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[13] * B[14]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #52]\n\t" + "ldr %[b], [%[b], #56]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[14] * B[13]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #56]\n\t" + "ldr %[b], [%[b], #52]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "# A[15] * B[12]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #60]\n\t" + "ldr %[b], [%[b], #48]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif + "mov %[r], r8\n\t" + "str r3, [%[r], #108]\n\t" + "movs %[r], #0\n\t" + "# A[15] * B[13]\n\t" + "movs r3, #0\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #60]\n\t" + "ldr %[b], [%[b], #52]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[14] * B[14]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #56]\n\t" + "ldr %[b], [%[b], #56]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[13] * B[15]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #52]\n\t" + "ldr %[b], [%[b], #60]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) + "adcs r5, r7\n\t" +#else + "adc r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "mov %[r], r8\n\t" + "str r4, [%[r], #112]\n\t" + "movs %[r], #0\n\t" + "# A[14] * B[15]\n\t" + "movs r4, #0\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #56]\n\t" + "ldr %[b], [%[b], #60]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[15] * B[14]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #60]\n\t" + "ldr %[b], [%[b], #56]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r7\n\t" +#else + "add r5, r5, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r6\n\t" +#else + "add r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" +#else + "adc r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "mov %[r], r8\n\t" + "str r5, [%[r], #116]\n\t" + "movs %[r], #0\n\t" + "# A[15] * B[15]\n\t" + "mov %[a], r9\n\t" + "mov %[b], r10\n\t" + "ldr %[a], [%[a], #60]\n\t" + "ldr %[b], [%[b], #60]\n\t" + "uxth r6, %[a]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r7\n\t" +#else + "add r3, r3, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[a], #16\n\t" +#else + "lsr r6, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, %[b], #16\n\t" +#else + "lsr r7, %[b], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) + "muls r7, r6\n\t" +#else + "mul r7, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r7\n\t" +#else + "add r4, r4, r7\n\t" +#endif + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #16\n\t" +#else + "lsr r7, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #16\n\t" +#else + "lsl r6, r6, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif + "mov %[r], r8\n\t" + "str r3, [%[r], #120]\n\t" + "str r4, [%[r], #124]\n\t" + "pop {r3, r4, r5, r6}\n\t" + "stm %[r]!, {r3, r4, r5, r6}\n\t" + "pop {r3, r4, r5, r6}\n\t" + "stm %[r]!, {r3, r4, r5, r6}\n\t" + "pop {r3, r4, r5, r6}\n\t" + "stm %[r]!, {r3, r4, r5, r6}\n\t" + "pop {r3, r4, r5, r6}\n\t" + "stm %[r]!, {r3, r4, r5, r6}\n\t" + : [r] "+r" (r), [a] "+r" (a), [b] "+r" (b) + : + : "memory", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10" + ); +} + +#endif /* !WOLFSSL_SP_LARGE_CODE */ +#ifndef WOLFSSL_SP_LARGE_CODE /* Square a and put result in r. (r = a * a) * * r A single precision integer. @@ -55729,7 +153949,7 @@ SP_NOINLINE static void sp_1024_sqr_16(sp_digit* r, const sp_digit* a) "mov r8, r3\n\t" "mov r11, %[r]\n\t" "movs r6, #0x80\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "negs r6, r6\n\t" #else "neg r6, r6\n\t" @@ -55738,32 +153958,36 @@ SP_NOINLINE static void sp_1024_sqr_16(sp_digit* r, const sp_digit* a) "mov r10, sp\n\t" "mov r9, %[a]\n\t" "\n" - "L_sp_1024_sqr_16_words_%=: \n\t" + "L_sp_1024_sqr_16_words_%=:\n\t" "movs %[r], #0\n\t" "movs r6, #60\n\t" "mov %[a], r8\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[a], %[a], r6\n\t" #else "sub %[a], %[a], r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r6\n\t" +#elif defined(__clang__) "sbcs r6, r6\n\t" #else "sbc r6, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "mvns r6, r6\n\t" #else "mvn r6, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands %[a], %[a], r6\n\t" +#elif defined(__clang__) "ands %[a], r6\n\t" #else "and %[a], r6\n\t" #endif "mov r2, r8\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r2, r2, %[a]\n\t" #else "sub r2, r2, %[a]\n\t" @@ -55771,207 +153995,213 @@ SP_NOINLINE static void sp_1024_sqr_16(sp_digit* r, const sp_digit* a) "add %[a], %[a], r9\n\t" "add r2, r2, r9\n\t" "\n" - "L_sp_1024_sqr_16_mul_%=: \n\t" + "L_sp_1024_sqr_16_mul_%=:\n\t" "cmp r2, %[a]\n\t" "beq L_sp_1024_sqr_16_sqr_%=\n\t" "# Multiply * 2: Start\n\t" - "ldr r6, [%[a]]\n\t" - "ldr r7, [r2]\n\t" -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsls r7, r7, #16\n\t" -#else - "lsl r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ + "ldrh r6, [%[a]]\n\t" + "ldrh r7, [r2]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) "muls r7, r6\n\t" #else "mul r7, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r7\n\t" #else "add r3, r3, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) "adcs r4, %[r]\n\t" #else "adc r4, %[r]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r7\n\t" #else "add r3, r3, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) "adcs r4, %[r]\n\t" #else "adc r4, %[r]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif "ldr r7, [r2]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r7, #16\n\t" #else "lsr r7, r7, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) "muls r6, r7\n\t" #else "mul r6, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r6, #16\n\t" #else "lsr r7, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #16\n\t" #else "lsl r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif "ldr r6, [%[a]]\n\t" "ldr r7, [r2]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, #16\n\t" #else "lsr r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r7, #16\n\t" #else "lsr r7, r7, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) "muls r7, r6\n\t" #else "mul r7, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, r7\n\t" #else "add r4, r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, r7\n\t" #else "add r4, r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif - "ldr r7, [r2]\n\t" -#ifdef __clang__ - "lsls r7, r7, #16\n\t" -#else - "lsl r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ + "ldrh r7, [r2]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) "muls r6, r7\n\t" #else "mul r6, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r6, #16\n\t" #else "lsr r7, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #16\n\t" #else "lsl r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" @@ -55979,114 +154209,101 @@ SP_NOINLINE static void sp_1024_sqr_16(sp_digit* r, const sp_digit* a) "# Multiply * 2: Done\n\t" "bal L_sp_1024_sqr_16_done_sqr_%=\n\t" "\n" - "L_sp_1024_sqr_16_sqr_%=: \n\t" + "L_sp_1024_sqr_16_sqr_%=:\n\t" + "mov r12, r2\n\t" + "ldr r2, [%[a]]\n\t" "# Square: Start\n\t" - "ldr r6, [%[a]]\n\t" -#ifdef __clang__ - "lsrs r7, r6, #16\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r2, #16\n\t" #else - "lsr r7, r6, #16\n\t" + "lsr r7, r2, #16\n\t" #endif -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ + "uxth r6, r2\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r6, r6\n\t" +#elif defined(__clang__) "muls r6, r6\n\t" #else "mul r6, r6\n\t" #endif -#ifdef __clang__ - "adds r3, r3, r6\n\t" -#else - "add r3, r3, r6\n\t" -#endif -#ifdef __clang__ - "adcs r4, %[r]\n\t" -#else - "adc r4, %[r]\n\t" -#endif -#ifdef __clang__ - "adcs r5, %[r]\n\t" -#else - "adc r5, %[r]\n\t" -#endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r7, r7, r7\n\t" +#elif defined(__clang__) "muls r7, r7\n\t" #else "mul r7, r7\n\t" #endif -#ifdef __clang__ - "adds r4, r4, r7\n\t" -#else - "add r4, r4, r7\n\t" -#endif -#ifdef __clang__ - "adcs r5, %[r]\n\t" -#else - "adc r5, %[r]\n\t" -#endif - "ldr r6, [%[a]]\n\t" -#ifdef __clang__ - "lsrs r7, r6, #16\n\t" -#else - "lsr r7, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "muls r6, r7\n\t" -#else - "mul r6, r7\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r6, #15\n\t" -#else - "lsr r7, r6, #15\n\t" -#endif -#ifdef __clang__ - "lsls r6, r6, #17\n\t" -#else - "lsl r6, r6, #17\n\t" -#endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r2, #16\n\t" +#else + "lsr r7, r2, #16\n\t" +#endif + "uxth r6, r2\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #15\n\t" +#else + "lsr r7, r6, #15\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #17\n\t" +#else + "lsl r6, r6, #17\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif "# Square: Done\n\t" + "mov r2, r12\n\t" "\n" - "L_sp_1024_sqr_16_done_sqr_%=: \n\t" -#ifdef __clang__ + "L_sp_1024_sqr_16_done_sqr_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[a], %[a], #4\n\t" #else "add %[a], %[a], #4\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r2, r2, #4\n\t" #else "sub r2, r2, #4\n\t" @@ -56102,14 +154319,14 @@ SP_NOINLINE static void sp_1024_sqr_16(sp_digit* r, const sp_digit* a) "cmp %[a], r7\n\t" "ble L_sp_1024_sqr_16_mul_%=\n\t" "\n" - "L_sp_1024_sqr_16_done_mul_%=: \n\t" + "L_sp_1024_sqr_16_done_mul_%=:\n\t" "mov %[r], r10\n\t" "mov r7, r8\n\t" "str r3, [%[r], r7]\n\t" "movs r3, r4\n\t" "movs r4, r5\n\t" "movs r5, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r7, r7, #4\n\t" #else "add r7, r7, #4\n\t" @@ -56124,10 +154341,10 @@ SP_NOINLINE static void sp_1024_sqr_16(sp_digit* r, const sp_digit* a) "mov %[a], r10\n\t" "movs r3, #0x7c\n\t" "\n" - "L_sp_1024_sqr_16_store_%=: \n\t" + "L_sp_1024_sqr_16_store_%=:\n\t" "ldr r6, [%[a], r3]\n\t" "str r6, [%[r], r3]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r3, r3, #4\n\t" #else "sub r3, r3, #4\n\t" @@ -56137,10 +154354,26366 @@ SP_NOINLINE static void sp_1024_sqr_16(sp_digit* r, const sp_digit* a) "add sp, sp, r6\n\t" : [r] "+r" (r), [a] "+r" (a) : - : "memory", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11" + : "memory", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12" ); } +#else +/* Square a and put result in r. (r = a * a) + * + * r A single precision integer. + * a A single precision integer. + */ +SP_NOINLINE static void sp_1024_sqr_16(sp_digit* r, const sp_digit* a) +{ + __asm__ __volatile__ ( + "sub sp, sp, #0x40\n\t" + "mov r8, %[r]\n\t" + "mov r9, %[a]\n\t" + "movs %[r], #0\n\t" + "ldm %[a]!, {r2, r3, r4, r5}\n\t" + "mov r10, r2\n\t" + "mov r11, r3\n\t" + "mov r12, r4\n\t" + "mov lr, r5\n\t" + "mov %[a], r9\n\t" + "# A[0] * A[0]\n\t" + "movs r4, #0\n\t" + "mov r7, r10\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" + "movs r2, r5\n\t" + "movs r3, r6\n\t" +#ifdef WOLFSSL_KEIL + "muls r2, r2, r2\n\t" +#elif defined(__clang__) + "muls r2, r2\n\t" +#else + "mul r2, r2\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r3, r3, r3\n\t" +#elif defined(__clang__) + "muls r3, r3\n\t" +#else + "mul r3, r3\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #15\n\t" +#else + "lsr r6, r5, #15\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #17\n\t" +#else + "lsl r5, r5, #17\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif + "str r2, [sp]\n\t" + "# A[1] * A[0]\n\t" + "movs r2, #0\n\t" + "mov %[a], r11\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "str r3, [sp, #4]\n\t" + "# A[2] * A[0]\n\t" + "movs r3, #0\n\t" + "mov %[a], r9\n\t" + "mov %[a], r12\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[1] * A[1]\n\t" + "mov r7, r11\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r5, r5\n\t" +#elif defined(__clang__) + "muls r5, r5\n\t" +#else + "mul r5, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r6, r6\n\t" +#elif defined(__clang__) + "muls r6, r6\n\t" +#else + "mul r6, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #15\n\t" +#else + "lsr r6, r5, #15\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #17\n\t" +#else + "lsl r5, r5, #17\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "str r4, [sp, #8]\n\t" + "# A[2] * A[1]\n\t" + "movs r4, #0\n\t" + "mov %[a], r9\n\t" + "mov %[a], r12\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[3] * A[0]\n\t" + "mov %[a], r9\n\t" + "mov r7, r10\n\t" + "mov %[a], lr\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "str r2, [sp, #12]\n\t" + "# A[4] * A[0]\n\t" + "movs r2, #0\n\t" + "mov %[a], r9\n\t" + "ldr %[a], [%[a], #16]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "# A[3] * A[1]\n\t" + "mov %[a], r9\n\t" + "mov r7, r11\n\t" + "mov %[a], lr\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "# A[2] * A[2]\n\t" + "mov r7, r12\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r5, r5\n\t" +#elif defined(__clang__) + "muls r5, r5\n\t" +#else + "mul r5, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r6, r6\n\t" +#elif defined(__clang__) + "muls r6, r6\n\t" +#else + "mul r6, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #15\n\t" +#else + "lsr r6, r5, #15\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #17\n\t" +#else + "lsl r5, r5, #17\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "str r3, [sp, #16]\n\t" + "# A[3] * A[2]\n\t" + "movs r3, #0\n\t" + "mov %[a], r9\n\t" + "mov %[a], lr\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[4] * A[1]\n\t" + "mov %[a], r9\n\t" + "mov r7, r11\n\t" + "ldr %[a], [%[a], #16]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[5] * A[0]\n\t" + "mov %[a], r9\n\t" + "mov r7, r10\n\t" + "ldr %[a], [%[a], #20]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "str r4, [sp, #20]\n\t" + "# A[6] * A[0]\n\t" + "movs r4, #0\n\t" + "mov %[a], r9\n\t" + "ldr %[a], [%[a], #24]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[5] * A[1]\n\t" + "mov %[a], r9\n\t" + "mov r7, r11\n\t" + "ldr %[a], [%[a], #20]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[4] * A[2]\n\t" + "mov %[a], r9\n\t" + "mov r7, r12\n\t" + "ldr %[a], [%[a], #16]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[3] * A[3]\n\t" + "mov r7, lr\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r5, r5\n\t" +#elif defined(__clang__) + "muls r5, r5\n\t" +#else + "mul r5, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r6, r6\n\t" +#elif defined(__clang__) + "muls r6, r6\n\t" +#else + "mul r6, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #15\n\t" +#else + "lsr r6, r5, #15\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #17\n\t" +#else + "lsl r5, r5, #17\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "str r2, [sp, #24]\n\t" + "# A[4] * A[3]\n\t" + "movs r2, #0\n\t" + "mov %[a], r9\n\t" + "ldr %[a], [%[a], #16]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "# A[5] * A[2]\n\t" + "mov %[a], r9\n\t" + "mov r7, r12\n\t" + "ldr %[a], [%[a], #20]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "# A[6] * A[1]\n\t" + "mov %[a], r9\n\t" + "mov r7, r11\n\t" + "ldr %[a], [%[a], #24]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "# A[7] * A[0]\n\t" + "mov %[a], r9\n\t" + "mov r7, r10\n\t" + "ldr %[a], [%[a], #28]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "str r3, [sp, #28]\n\t" + "# A[8] * A[0]\n\t" + "movs r3, #0\n\t" + "mov %[a], r9\n\t" + "ldr %[a], [%[a], #32]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[7] * A[1]\n\t" + "mov %[a], r9\n\t" + "mov r7, r11\n\t" + "ldr %[a], [%[a], #28]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[6] * A[2]\n\t" + "mov %[a], r9\n\t" + "mov r7, r12\n\t" + "ldr %[a], [%[a], #24]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[5] * A[3]\n\t" + "mov %[a], r9\n\t" + "mov r7, lr\n\t" + "ldr %[a], [%[a], #20]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[4] * A[4]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #16]\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r5, r5\n\t" +#elif defined(__clang__) + "muls r5, r5\n\t" +#else + "mul r5, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r6, r6\n\t" +#elif defined(__clang__) + "muls r6, r6\n\t" +#else + "mul r6, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #15\n\t" +#else + "lsr r6, r5, #15\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #17\n\t" +#else + "lsl r5, r5, #17\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "str r4, [sp, #32]\n\t" + "# A[5] * A[4]\n\t" + "movs r4, #0\n\t" + "ldr %[a], [%[a], #20]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[6] * A[3]\n\t" + "mov %[a], r9\n\t" + "mov r7, lr\n\t" + "ldr %[a], [%[a], #24]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[7] * A[2]\n\t" + "mov %[a], r9\n\t" + "mov r7, r12\n\t" + "ldr %[a], [%[a], #28]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[8] * A[1]\n\t" + "mov %[a], r9\n\t" + "mov r7, r11\n\t" + "ldr %[a], [%[a], #32]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[9] * A[0]\n\t" + "mov %[a], r9\n\t" + "mov r7, r10\n\t" + "ldr %[a], [%[a], #36]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "str r2, [sp, #36]\n\t" + "# A[10] * A[0]\n\t" + "movs r2, #0\n\t" + "mov %[a], r9\n\t" + "ldr %[a], [%[a], #40]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "# A[9] * A[1]\n\t" + "mov %[a], r9\n\t" + "mov r7, r11\n\t" + "ldr %[a], [%[a], #36]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "# A[8] * A[2]\n\t" + "mov %[a], r9\n\t" + "mov r7, r12\n\t" + "ldr %[a], [%[a], #32]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "# A[7] * A[3]\n\t" + "mov %[a], r9\n\t" + "mov r7, lr\n\t" + "ldr %[a], [%[a], #28]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "# A[6] * A[4]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #16]\n\t" + "ldr %[a], [%[a], #24]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "# A[5] * A[5]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #20]\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r5, r5\n\t" +#elif defined(__clang__) + "muls r5, r5\n\t" +#else + "mul r5, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r6, r6\n\t" +#elif defined(__clang__) + "muls r6, r6\n\t" +#else + "mul r6, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #15\n\t" +#else + "lsr r6, r5, #15\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #17\n\t" +#else + "lsl r5, r5, #17\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "str r3, [sp, #40]\n\t" + "# A[6] * A[5]\n\t" + "movs r3, #0\n\t" + "ldr %[a], [%[a], #24]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[7] * A[4]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #16]\n\t" + "ldr %[a], [%[a], #28]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[8] * A[3]\n\t" + "mov %[a], r9\n\t" + "mov r7, lr\n\t" + "ldr %[a], [%[a], #32]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[9] * A[2]\n\t" + "mov %[a], r9\n\t" + "mov r7, r12\n\t" + "ldr %[a], [%[a], #36]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[10] * A[1]\n\t" + "mov %[a], r9\n\t" + "mov r7, r11\n\t" + "ldr %[a], [%[a], #40]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[11] * A[0]\n\t" + "mov %[a], r9\n\t" + "mov r7, r10\n\t" + "ldr %[a], [%[a], #44]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "str r4, [sp, #44]\n\t" + "# A[12] * A[0]\n\t" + "movs r4, #0\n\t" + "mov %[a], r9\n\t" + "ldr %[a], [%[a], #48]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[11] * A[1]\n\t" + "mov %[a], r9\n\t" + "mov r7, r11\n\t" + "ldr %[a], [%[a], #44]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[10] * A[2]\n\t" + "mov %[a], r9\n\t" + "mov r7, r12\n\t" + "ldr %[a], [%[a], #40]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[9] * A[3]\n\t" + "mov %[a], r9\n\t" + "mov r7, lr\n\t" + "ldr %[a], [%[a], #36]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[8] * A[4]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #16]\n\t" + "ldr %[a], [%[a], #32]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[7] * A[5]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #20]\n\t" + "ldr %[a], [%[a], #28]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[6] * A[6]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #24]\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r5, r5\n\t" +#elif defined(__clang__) + "muls r5, r5\n\t" +#else + "mul r5, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r6, r6\n\t" +#elif defined(__clang__) + "muls r6, r6\n\t" +#else + "mul r6, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #15\n\t" +#else + "lsr r6, r5, #15\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #17\n\t" +#else + "lsl r5, r5, #17\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "str r2, [sp, #48]\n\t" + "# A[7] * A[6]\n\t" + "movs r2, #0\n\t" + "ldr %[a], [%[a], #28]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "# A[8] * A[5]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #20]\n\t" + "ldr %[a], [%[a], #32]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "# A[9] * A[4]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #16]\n\t" + "ldr %[a], [%[a], #36]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "# A[10] * A[3]\n\t" + "mov %[a], r9\n\t" + "mov r7, lr\n\t" + "ldr %[a], [%[a], #40]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "# A[11] * A[2]\n\t" + "mov %[a], r9\n\t" + "mov r7, r12\n\t" + "ldr %[a], [%[a], #44]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "# A[12] * A[1]\n\t" + "mov %[a], r9\n\t" + "mov r7, r11\n\t" + "ldr %[a], [%[a], #48]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "# A[13] * A[0]\n\t" + "mov %[a], r9\n\t" + "mov r7, r10\n\t" + "ldr %[a], [%[a], #52]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "str r3, [sp, #52]\n\t" + "# A[14] * A[0]\n\t" + "movs r3, #0\n\t" + "mov %[a], r9\n\t" + "ldr %[a], [%[a], #56]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[13] * A[1]\n\t" + "mov %[a], r9\n\t" + "mov r7, r11\n\t" + "ldr %[a], [%[a], #52]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[12] * A[2]\n\t" + "mov %[a], r9\n\t" + "mov r7, r12\n\t" + "ldr %[a], [%[a], #48]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[11] * A[3]\n\t" + "mov %[a], r9\n\t" + "mov r7, lr\n\t" + "ldr %[a], [%[a], #44]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[10] * A[4]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #16]\n\t" + "ldr %[a], [%[a], #40]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[9] * A[5]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #20]\n\t" + "ldr %[a], [%[a], #36]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[8] * A[6]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #24]\n\t" + "ldr %[a], [%[a], #32]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[7] * A[7]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #28]\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r5, r5\n\t" +#elif defined(__clang__) + "muls r5, r5\n\t" +#else + "mul r5, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r6, r6\n\t" +#elif defined(__clang__) + "muls r6, r6\n\t" +#else + "mul r6, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #15\n\t" +#else + "lsr r6, r5, #15\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #17\n\t" +#else + "lsl r5, r5, #17\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "str r4, [sp, #56]\n\t" + "# A[8] * A[7]\n\t" + "movs r4, #0\n\t" + "ldr %[a], [%[a], #32]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[9] * A[6]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #24]\n\t" + "ldr %[a], [%[a], #36]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[10] * A[5]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #20]\n\t" + "ldr %[a], [%[a], #40]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[11] * A[4]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #16]\n\t" + "ldr %[a], [%[a], #44]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[12] * A[3]\n\t" + "mov %[a], r9\n\t" + "mov r7, lr\n\t" + "ldr %[a], [%[a], #48]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[13] * A[2]\n\t" + "mov %[a], r9\n\t" + "mov r7, r12\n\t" + "ldr %[a], [%[a], #52]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[14] * A[1]\n\t" + "mov %[a], r9\n\t" + "mov r7, r11\n\t" + "ldr %[a], [%[a], #56]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[15] * A[0]\n\t" + "mov %[a], r9\n\t" + "mov r7, r10\n\t" + "ldr %[a], [%[a], #60]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "str r2, [sp, #60]\n\t" + "# A[15] * A[1]\n\t" + "movs r2, #0\n\t" + "mov %[a], r9\n\t" + "mov r7, r11\n\t" + "ldr %[a], [%[a], #60]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "# A[14] * A[2]\n\t" + "mov %[a], r9\n\t" + "mov r7, r12\n\t" + "ldr %[a], [%[a], #56]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "# A[13] * A[3]\n\t" + "mov %[a], r9\n\t" + "mov r7, lr\n\t" + "ldr %[a], [%[a], #52]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "# A[12] * A[4]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #16]\n\t" + "ldr %[a], [%[a], #48]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "# A[11] * A[5]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #20]\n\t" + "ldr %[a], [%[a], #44]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "# A[10] * A[6]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #24]\n\t" + "ldr %[a], [%[a], #40]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "# A[9] * A[7]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #28]\n\t" + "ldr %[a], [%[a], #36]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "# A[8] * A[8]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #32]\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r5, r5\n\t" +#elif defined(__clang__) + "muls r5, r5\n\t" +#else + "mul r5, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r6, r6\n\t" +#elif defined(__clang__) + "muls r6, r6\n\t" +#else + "mul r6, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #15\n\t" +#else + "lsr r6, r5, #15\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #17\n\t" +#else + "lsl r5, r5, #17\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "mov %[r], r8\n\t" + "str r3, [%[r], #64]\n\t" + "movs %[r], #0\n\t" + "movs %[a], #48\n\t" + "add %[a], %[a], r9\n\t" + "ldm %[a]!, {r5, r6}\n\t" + "mov r10, r5\n\t" + "mov r11, r6\n\t" + "ldm %[a]!, {r5, r6}\n\t" + "mov r12, r5\n\t" + "mov lr, r6\n\t" + "mov %[a], r9\n\t" + "# A[9] * A[8]\n\t" + "movs r3, #0\n\t" + "ldr %[a], [%[a], #36]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[10] * A[7]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #28]\n\t" + "ldr %[a], [%[a], #40]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[11] * A[6]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #24]\n\t" + "ldr %[a], [%[a], #44]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[12] * A[5]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #20]\n\t" + "mov %[a], r10\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[13] * A[4]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #16]\n\t" + "mov %[a], r11\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[14] * A[3]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #12]\n\t" + "mov %[a], r12\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[15] * A[2]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #8]\n\t" + "mov %[a], lr\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "mov %[r], r8\n\t" + "str r4, [%[r], #68]\n\t" + "movs %[r], #0\n\t" + "# A[15] * A[3]\n\t" + "movs r4, #0\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #12]\n\t" + "mov %[a], lr\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[14] * A[4]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #16]\n\t" + "mov %[a], r12\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[13] * A[5]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #20]\n\t" + "mov %[a], r11\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[12] * A[6]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #24]\n\t" + "mov %[a], r10\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[11] * A[7]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #28]\n\t" + "ldr %[a], [%[a], #44]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[10] * A[8]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #32]\n\t" + "ldr %[a], [%[a], #40]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[9] * A[9]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #36]\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r5, r5\n\t" +#elif defined(__clang__) + "muls r5, r5\n\t" +#else + "mul r5, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r6, r6\n\t" +#elif defined(__clang__) + "muls r6, r6\n\t" +#else + "mul r6, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #15\n\t" +#else + "lsr r6, r5, #15\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #17\n\t" +#else + "lsl r5, r5, #17\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "mov %[r], r8\n\t" + "str r2, [%[r], #72]\n\t" + "movs %[r], #0\n\t" + "# A[10] * A[9]\n\t" + "movs r2, #0\n\t" + "ldr %[a], [%[a], #40]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "# A[11] * A[8]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #32]\n\t" + "ldr %[a], [%[a], #44]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "# A[12] * A[7]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #28]\n\t" + "mov %[a], r10\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "# A[13] * A[6]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #24]\n\t" + "mov %[a], r11\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "# A[14] * A[5]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #20]\n\t" + "mov %[a], r12\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "# A[15] * A[4]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #16]\n\t" + "mov %[a], lr\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "mov %[r], r8\n\t" + "str r3, [%[r], #76]\n\t" + "movs %[r], #0\n\t" + "# A[15] * A[5]\n\t" + "movs r3, #0\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #20]\n\t" + "mov %[a], lr\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[14] * A[6]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #24]\n\t" + "mov %[a], r12\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[13] * A[7]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #28]\n\t" + "mov %[a], r11\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[12] * A[8]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #32]\n\t" + "mov %[a], r10\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[11] * A[9]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #36]\n\t" + "ldr %[a], [%[a], #44]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[10] * A[10]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #40]\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r5, r5\n\t" +#elif defined(__clang__) + "muls r5, r5\n\t" +#else + "mul r5, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r6, r6\n\t" +#elif defined(__clang__) + "muls r6, r6\n\t" +#else + "mul r6, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #15\n\t" +#else + "lsr r6, r5, #15\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #17\n\t" +#else + "lsl r5, r5, #17\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "mov %[r], r8\n\t" + "str r4, [%[r], #80]\n\t" + "movs %[r], #0\n\t" + "# A[11] * A[10]\n\t" + "movs r4, #0\n\t" + "ldr %[a], [%[a], #44]\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[12] * A[9]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #36]\n\t" + "mov %[a], r10\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[13] * A[8]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #32]\n\t" + "mov %[a], r11\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[14] * A[7]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #28]\n\t" + "mov %[a], r12\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[15] * A[6]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #24]\n\t" + "mov %[a], lr\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "mov %[r], r8\n\t" + "str r2, [%[r], #84]\n\t" + "movs %[r], #0\n\t" + "# A[15] * A[7]\n\t" + "movs r2, #0\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #28]\n\t" + "mov %[a], lr\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "# A[14] * A[8]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #32]\n\t" + "mov %[a], r12\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "# A[13] * A[9]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #36]\n\t" + "mov %[a], r11\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "# A[12] * A[10]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #40]\n\t" + "mov %[a], r10\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "# A[11] * A[11]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #44]\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r5, r5\n\t" +#elif defined(__clang__) + "muls r5, r5\n\t" +#else + "mul r5, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r6, r6\n\t" +#elif defined(__clang__) + "muls r6, r6\n\t" +#else + "mul r6, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #15\n\t" +#else + "lsr r6, r5, #15\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #17\n\t" +#else + "lsl r5, r5, #17\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "mov %[r], r8\n\t" + "str r3, [%[r], #88]\n\t" + "movs %[r], #0\n\t" + "# A[12] * A[11]\n\t" + "movs r3, #0\n\t" + "mov %[a], r10\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[13] * A[10]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #40]\n\t" + "mov %[a], r11\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[14] * A[9]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #36]\n\t" + "mov %[a], r12\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[15] * A[8]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #32]\n\t" + "mov %[a], lr\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "mov %[r], r8\n\t" + "str r4, [%[r], #92]\n\t" + "movs %[r], #0\n\t" + "# A[15] * A[9]\n\t" + "movs r4, #0\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #36]\n\t" + "mov %[a], lr\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[14] * A[10]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #40]\n\t" + "mov %[a], r12\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[13] * A[11]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #44]\n\t" + "mov %[a], r11\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[12] * A[12]\n\t" + "mov r7, r10\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r5, r5\n\t" +#elif defined(__clang__) + "muls r5, r5\n\t" +#else + "mul r5, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r6, r6\n\t" +#elif defined(__clang__) + "muls r6, r6\n\t" +#else + "mul r6, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #15\n\t" +#else + "lsr r6, r5, #15\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #17\n\t" +#else + "lsl r5, r5, #17\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "mov %[r], r8\n\t" + "str r2, [%[r], #96]\n\t" + "movs %[r], #0\n\t" + "# A[13] * A[12]\n\t" + "movs r2, #0\n\t" + "mov %[a], r9\n\t" + "mov %[a], r11\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "# A[14] * A[11]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #44]\n\t" + "mov %[a], r12\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "# A[15] * A[10]\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #40]\n\t" + "mov %[a], lr\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "mov %[r], r8\n\t" + "str r3, [%[r], #100]\n\t" + "movs %[r], #0\n\t" + "# A[15] * A[11]\n\t" + "movs r3, #0\n\t" + "mov %[a], r9\n\t" + "ldr r7, [%[a], #44]\n\t" + "mov %[a], lr\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[14] * A[12]\n\t" + "mov %[a], r9\n\t" + "mov r7, r10\n\t" + "mov %[a], r12\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "# A[13] * A[13]\n\t" + "mov r7, r11\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r5, r5\n\t" +#elif defined(__clang__) + "muls r5, r5\n\t" +#else + "mul r5, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r6, r6\n\t" +#elif defined(__clang__) + "muls r6, r6\n\t" +#else + "mul r6, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #15\n\t" +#else + "lsr r6, r5, #15\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #17\n\t" +#else + "lsl r5, r5, #17\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "mov %[r], r8\n\t" + "str r4, [%[r], #104]\n\t" + "movs %[r], #0\n\t" + "# A[14] * A[13]\n\t" + "movs r4, #0\n\t" + "mov %[a], r9\n\t" + "mov %[a], r12\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "# A[15] * A[12]\n\t" + "mov %[a], r9\n\t" + "mov r7, r10\n\t" + "mov %[a], lr\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif + "mov %[r], r8\n\t" + "str r2, [%[r], #108]\n\t" + "movs %[r], #0\n\t" + "# A[15] * A[13]\n\t" + "movs r2, #0\n\t" + "mov %[a], r9\n\t" + "mov r7, r11\n\t" + "mov %[a], lr\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) + "adcs r4, %[r]\n\t" +#else + "adc r4, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "# A[14] * A[14]\n\t" + "mov r7, r12\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r5, r5\n\t" +#elif defined(__clang__) + "muls r5, r5\n\t" +#else + "mul r5, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r6, r6\n\t" +#elif defined(__clang__) + "muls r6, r6\n\t" +#else + "mul r6, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #15\n\t" +#else + "lsr r6, r5, #15\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #17\n\t" +#else + "lsl r5, r5, #17\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif + "mov %[r], r8\n\t" + "str r3, [%[r], #112]\n\t" + "movs %[r], #0\n\t" + "# A[15] * A[14]\n\t" + "movs r3, #0\n\t" + "mov %[a], r9\n\t" + "mov %[a], lr\n\t" + "uxth r5, %[a]\n\t" + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, %[r]\n\t" +#elif defined(__clang__) + "adcs r2, %[r]\n\t" +#else + "adc r2, %[r]\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, %[a], #16\n\t" +#else + "lsr r5, %[a], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r6\n\t" +#else + "add r2, r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "uxth r6, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r2, r2, r6\n\t" +#elif defined(__clang__) + "adcs r2, r6\n\t" +#else + "adc r2, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, %[r]\n\t" +#elif defined(__clang__) + "adcs r3, %[r]\n\t" +#else + "adc r3, %[r]\n\t" +#endif + "mov %[r], r8\n\t" + "str r4, [%[r], #116]\n\t" + "movs %[r], #0\n\t" + "# A[15] * A[15]\n\t" + "mov %[a], r9\n\t" + "mov r7, lr\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r5, r5\n\t" +#elif defined(__clang__) + "muls r5, r5\n\t" +#else + "mul r5, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r6, r6\n\t" +#elif defined(__clang__) + "muls r6, r6\n\t" +#else + "mul r6, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r7, #16\n\t" +#else + "lsr r6, r7, #16\n\t" +#endif + "uxth r5, r7\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #15\n\t" +#else + "lsr r6, r5, #15\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #17\n\t" +#else + "lsl r5, r5, #17\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r2, r2, r5\n\t" +#else + "add r2, r2, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif + "mov %[r], r8\n\t" + "str r2, [%[r], #120]\n\t" + "str r3, [%[r], #124]\n\t" + "pop {r2, r3, r4, r5}\n\t" + "stm %[r]!, {r2, r3, r4, r5}\n\t" + "pop {r2, r3, r4, r5}\n\t" + "stm %[r]!, {r2, r3, r4, r5}\n\t" + "pop {r2, r3, r4, r5}\n\t" + "stm %[r]!, {r2, r3, r4, r5}\n\t" + "pop {r2, r3, r4, r5}\n\t" + "stm %[r]!, {r2, r3, r4, r5}\n\t" + : [r] "+r" (r), [a] "+r" (a) + : + : "memory", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12", "lr" + ); +} + +#endif /* !WOLFSSL_SP_LARGE_CODE */ /* Add b to a into r. (r = a + b) * * r A single precision integer. @@ -56151,144 +180724,151 @@ SP_NOINLINE static sp_digit sp_1024_add_16(sp_digit* r, const sp_digit* a, const sp_digit* b) { __asm__ __volatile__ ( - "ldr r4, [%[a]]\n\t" - "ldr r5, [%[b]]\n\t" -#ifdef __clang__ - "adds r4, r4, r5\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" #else - "add r4, r4, r5\n\t" + "add r3, r3, r5\n\t" #endif - "str r4, [%[r]]\n\t" - "ldr r4, [%[a], #4]\n\t" - "ldr r5, [%[b], #4]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #4]\n\t" - "ldr r4, [%[a], #8]\n\t" - "ldr r5, [%[b], #8]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #8]\n\t" - "ldr r4, [%[a], #12]\n\t" - "ldr r5, [%[b], #12]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #12]\n\t" - "ldr r4, [%[a], #16]\n\t" - "ldr r5, [%[b], #16]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #16]\n\t" - "ldr r4, [%[a], #20]\n\t" - "ldr r5, [%[b], #20]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #20]\n\t" - "ldr r4, [%[a], #24]\n\t" - "ldr r5, [%[b], #24]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #24]\n\t" - "ldr r4, [%[a], #28]\n\t" - "ldr r5, [%[b], #28]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #28]\n\t" - "ldr r4, [%[a], #32]\n\t" - "ldr r5, [%[b], #32]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #32]\n\t" - "ldr r4, [%[a], #36]\n\t" - "ldr r5, [%[b], #36]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #36]\n\t" - "ldr r4, [%[a], #40]\n\t" - "ldr r5, [%[b], #40]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #40]\n\t" - "ldr r4, [%[a], #44]\n\t" - "ldr r5, [%[b], #44]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #44]\n\t" - "ldr r4, [%[a], #48]\n\t" - "ldr r5, [%[b], #48]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #48]\n\t" - "ldr r4, [%[a], #52]\n\t" - "ldr r5, [%[b], #52]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #52]\n\t" - "ldr r4, [%[a], #56]\n\t" - "ldr r5, [%[b], #56]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #56]\n\t" - "ldr r4, [%[a], #60]\n\t" - "ldr r5, [%[b], #60]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #60]\n\t" - "movs r3, #0\n\t" -#ifdef __clang__ - "adcs r3, r3\n\t" + "stm %[r]!, {r3, r4}\n\t" + "movs %[r], #0\n\t" +#ifdef WOLFSSL_KEIL + "adcs %[r], %[r], %[r]\n\t" +#elif defined(__clang__) + "adcs %[r], %[r]\n\t" #else - "adc r3, r3\n\t" + "adc %[r], %[r]\n\t" #endif - "movs %[r], r3\n\t" : [r] "+r" (r), [a] "+r" (a), [b] "+r" (b) : - : "memory", "r3", "r4", "r5" + : "memory", "r3", "r4", "r5", "r6" ); return (uint32_t)(size_t)r; } @@ -56302,272 +180882,302 @@ SP_NOINLINE static sp_digit sp_1024_sub_in_place_32(sp_digit* a, const sp_digit* b) { __asm__ __volatile__ ( - "movs r2, #0\n\t" - "ldr r3, [%[a]]\n\t" - "ldr r4, [%[a], #4]\n\t" - "ldr r5, [%[b]]\n\t" - "ldr r6, [%[b], #4]\n\t" -#ifdef __clang__ - "subs r3, r3, r5\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "subs r2, r2, r4\n\t" #else - "sub r3, r3, r5\n\t" + "sub r2, r2, r4\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" -#else - "sbc r4, r6\n\t" -#endif - "str r3, [%[a]]\n\t" - "str r4, [%[a], #4]\n\t" - "ldr r3, [%[a], #8]\n\t" - "ldr r4, [%[a], #12]\n\t" - "ldr r5, [%[b], #8]\n\t" - "ldr r6, [%[b], #12]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #8]\n\t" - "str r4, [%[a], #12]\n\t" - "ldr r3, [%[a], #16]\n\t" - "ldr r4, [%[a], #20]\n\t" - "ldr r5, [%[b], #16]\n\t" - "ldr r6, [%[b], #20]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #16]\n\t" - "str r4, [%[a], #20]\n\t" - "ldr r3, [%[a], #24]\n\t" - "ldr r4, [%[a], #28]\n\t" - "ldr r5, [%[b], #24]\n\t" - "ldr r6, [%[b], #28]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #24]\n\t" - "str r4, [%[a], #28]\n\t" - "ldr r3, [%[a], #32]\n\t" - "ldr r4, [%[a], #36]\n\t" - "ldr r5, [%[b], #32]\n\t" - "ldr r6, [%[b], #36]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #32]\n\t" - "str r4, [%[a], #36]\n\t" - "ldr r3, [%[a], #40]\n\t" - "ldr r4, [%[a], #44]\n\t" - "ldr r5, [%[b], #40]\n\t" - "ldr r6, [%[b], #44]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #40]\n\t" - "str r4, [%[a], #44]\n\t" - "ldr r3, [%[a], #48]\n\t" - "ldr r4, [%[a], #52]\n\t" - "ldr r5, [%[b], #48]\n\t" - "ldr r6, [%[b], #52]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #48]\n\t" - "str r4, [%[a], #52]\n\t" - "ldr r3, [%[a], #56]\n\t" - "ldr r4, [%[a], #60]\n\t" - "ldr r5, [%[b], #56]\n\t" - "ldr r6, [%[b], #60]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #56]\n\t" - "str r4, [%[a], #60]\n\t" - "ldr r3, [%[a], #64]\n\t" - "ldr r4, [%[a], #68]\n\t" - "ldr r5, [%[b], #64]\n\t" - "ldr r6, [%[b], #68]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #64]\n\t" - "str r4, [%[a], #68]\n\t" - "ldr r3, [%[a], #72]\n\t" - "ldr r4, [%[a], #76]\n\t" - "ldr r5, [%[b], #72]\n\t" - "ldr r6, [%[b], #76]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #72]\n\t" - "str r4, [%[a], #76]\n\t" - "ldr r3, [%[a], #80]\n\t" - "ldr r4, [%[a], #84]\n\t" - "ldr r5, [%[b], #80]\n\t" - "ldr r6, [%[b], #84]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #80]\n\t" - "str r4, [%[a], #84]\n\t" - "ldr r3, [%[a], #88]\n\t" - "ldr r4, [%[a], #92]\n\t" - "ldr r5, [%[b], #88]\n\t" - "ldr r6, [%[b], #92]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #88]\n\t" - "str r4, [%[a], #92]\n\t" - "ldr r3, [%[a], #96]\n\t" - "ldr r4, [%[a], #100]\n\t" - "ldr r5, [%[b], #96]\n\t" - "ldr r6, [%[b], #100]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #96]\n\t" - "str r4, [%[a], #100]\n\t" - "ldr r3, [%[a], #104]\n\t" - "ldr r4, [%[a], #108]\n\t" - "ldr r5, [%[b], #104]\n\t" - "ldr r6, [%[b], #108]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #104]\n\t" - "str r4, [%[a], #108]\n\t" - "ldr r3, [%[a], #112]\n\t" - "ldr r4, [%[a], #116]\n\t" - "ldr r5, [%[b], #112]\n\t" - "ldr r6, [%[b], #116]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #112]\n\t" - "str r4, [%[a], #116]\n\t" - "ldr r3, [%[a], #120]\n\t" - "ldr r4, [%[a], #124]\n\t" - "ldr r5, [%[b], #120]\n\t" - "ldr r6, [%[b], #124]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r4, r6\n\t" + "stm %[a]!, {r2, r3}\n\t" + "ldm %[b]!, {r4, r5}\n\t" + "ldr r2, [%[a]]\n\t" + "ldr r3, [%[a], #4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r4\n\t" +#elif defined(__clang__) + "sbcs r2, r4\n\t" #else - "sbc r4, r6\n\t" + "sbc r2, r4\n\t" #endif - "str r3, [%[a], #120]\n\t" - "str r4, [%[a], #124]\n\t" -#ifdef __clang__ - "sbcs r2, r2\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r2, r2\n\t" + "sbc r3, r5\n\t" +#endif + "stm %[a]!, {r2, r3}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs %[a], %[a], %[a]\n\t" +#elif defined(__clang__) + "sbcs %[a], %[a]\n\t" +#else + "sbc %[a], %[a]\n\t" #endif - "movs %[a], r2\n\t" : [a] "+r" (a), [b] "+r" (b) : - : "memory", "r2", "r3", "r4", "r5", "r6" + : "memory", "r2", "r3", "r4", "r5" ); return (uint32_t)(size_t)a; } @@ -56582,272 +181192,287 @@ SP_NOINLINE static sp_digit sp_1024_add_32(sp_digit* r, const sp_digit* a, const sp_digit* b) { __asm__ __volatile__ ( - "ldr r4, [%[a]]\n\t" - "ldr r5, [%[b]]\n\t" -#ifdef __clang__ - "adds r4, r4, r5\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" #else - "add r4, r4, r5\n\t" + "add r3, r3, r5\n\t" #endif - "str r4, [%[r]]\n\t" - "ldr r4, [%[a], #4]\n\t" - "ldr r5, [%[b], #4]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #4]\n\t" - "ldr r4, [%[a], #8]\n\t" - "ldr r5, [%[b], #8]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #8]\n\t" - "ldr r4, [%[a], #12]\n\t" - "ldr r5, [%[b], #12]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #12]\n\t" - "ldr r4, [%[a], #16]\n\t" - "ldr r5, [%[b], #16]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #16]\n\t" - "ldr r4, [%[a], #20]\n\t" - "ldr r5, [%[b], #20]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #20]\n\t" - "ldr r4, [%[a], #24]\n\t" - "ldr r5, [%[b], #24]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #24]\n\t" - "ldr r4, [%[a], #28]\n\t" - "ldr r5, [%[b], #28]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #28]\n\t" - "ldr r4, [%[a], #32]\n\t" - "ldr r5, [%[b], #32]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #32]\n\t" - "ldr r4, [%[a], #36]\n\t" - "ldr r5, [%[b], #36]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #36]\n\t" - "ldr r4, [%[a], #40]\n\t" - "ldr r5, [%[b], #40]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #40]\n\t" - "ldr r4, [%[a], #44]\n\t" - "ldr r5, [%[b], #44]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #44]\n\t" - "ldr r4, [%[a], #48]\n\t" - "ldr r5, [%[b], #48]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #48]\n\t" - "ldr r4, [%[a], #52]\n\t" - "ldr r5, [%[b], #52]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #52]\n\t" - "ldr r4, [%[a], #56]\n\t" - "ldr r5, [%[b], #56]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #56]\n\t" - "ldr r4, [%[a], #60]\n\t" - "ldr r5, [%[b], #60]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #60]\n\t" - "ldr r4, [%[a], #64]\n\t" - "ldr r5, [%[b], #64]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #64]\n\t" - "ldr r4, [%[a], #68]\n\t" - "ldr r5, [%[b], #68]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #68]\n\t" - "ldr r4, [%[a], #72]\n\t" - "ldr r5, [%[b], #72]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #72]\n\t" - "ldr r4, [%[a], #76]\n\t" - "ldr r5, [%[b], #76]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #76]\n\t" - "ldr r4, [%[a], #80]\n\t" - "ldr r5, [%[b], #80]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #80]\n\t" - "ldr r4, [%[a], #84]\n\t" - "ldr r5, [%[b], #84]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #84]\n\t" - "ldr r4, [%[a], #88]\n\t" - "ldr r5, [%[b], #88]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #88]\n\t" - "ldr r4, [%[a], #92]\n\t" - "ldr r5, [%[b], #92]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #92]\n\t" - "ldr r4, [%[a], #96]\n\t" - "ldr r5, [%[b], #96]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #96]\n\t" - "ldr r4, [%[a], #100]\n\t" - "ldr r5, [%[b], #100]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #100]\n\t" - "ldr r4, [%[a], #104]\n\t" - "ldr r5, [%[b], #104]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #104]\n\t" - "ldr r4, [%[a], #108]\n\t" - "ldr r5, [%[b], #108]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #108]\n\t" - "ldr r4, [%[a], #112]\n\t" - "ldr r5, [%[b], #112]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #112]\n\t" - "ldr r4, [%[a], #116]\n\t" - "ldr r5, [%[b], #116]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #116]\n\t" - "ldr r4, [%[a], #120]\n\t" - "ldr r5, [%[b], #120]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r5\n\t" +#elif defined(__clang__) + "adcs r3, r5\n\t" #else - "adc r4, r5\n\t" + "adc r3, r5\n\t" #endif - "str r4, [%[r], #120]\n\t" - "ldr r4, [%[a], #124]\n\t" - "ldr r5, [%[b], #124]\n\t" -#ifdef __clang__ - "adcs r4, r5\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "adc r4, r5\n\t" + "adc r4, r6\n\t" #endif - "str r4, [%[r], #124]\n\t" - "movs r3, #0\n\t" -#ifdef __clang__ - "adcs r3, r3\n\t" + "stm %[r]!, {r3, r4}\n\t" + "movs %[r], #0\n\t" +#ifdef WOLFSSL_KEIL + "adcs %[r], %[r], %[r]\n\t" +#elif defined(__clang__) + "adcs %[r], %[r]\n\t" #else - "adc r3, r3\n\t" + "adc %[r], %[r]\n\t" #endif - "movs %[r], r3\n\t" : [r] "+r" (r), [a] "+r" (a), [b] "+r" (b) : - : "memory", "r3", "r4", "r5" + : "memory", "r3", "r4", "r5", "r6" ); return (uint32_t)(size_t)r; } @@ -56912,9 +181537,8 @@ SP_NOINLINE static void sp_1024_mul_32(sp_digit* r, const sp_digit* a, u += sp_1024_sub_in_place_32(z1, z2); u += sp_1024_sub_in_place_32(z1, z0); u += sp_1024_add_32(r + 16, r + 16, z1); - r[48] = u; - XMEMSET(r + 48 + 1, 0, sizeof(sp_digit) * (16 - 1)); - (void)sp_1024_add_32(r + 32, r + 32, z2); + u += sp_1024_add_16(r + 32, r + 32, z2); + (void)sp_1024_add_to_word_16(r + 48, u, z2 + 16); } /* Square a and put result in r. (r = a * a) @@ -56935,13 +181559,12 @@ SP_NOINLINE static void sp_1024_sqr_32(sp_digit* r, const sp_digit* a) sp_1024_sqr_16(z2, &a[16]); sp_1024_sqr_16(z0, a); sp_1024_mask_16(r + 32, a1, 0 - u); - u += sp_1024_add_16(r + 32, r + 32, r + 32); + u += sp_1024_dbl_16(r + 32, r + 32); u += sp_1024_sub_in_place_32(z1, z2); u += sp_1024_sub_in_place_32(z1, z0); u += sp_1024_add_32(r + 16, r + 16, z1); - r[48] = u; - XMEMSET(r + 48 + 1, 0, sizeof(sp_digit) * (16 - 1)); - (void)sp_1024_add_32(r + 32, r + 32, z2); + u += sp_1024_add_16(r + 32, r + 32, z2); + (void)sp_1024_add_to_word_16(r + 48, u, z2 + 16); } #else @@ -56967,33 +181590,37 @@ SP_NOINLINE static void sp_1024_mul_32(sp_digit* r, const sp_digit* a, "add r6, r6, r9\n\t" "mov r12, r6\n\t" "\n" - "L_sp_1024_mul_32_words_%=: \n\t" + "L_sp_1024_mul_32_words_%=:\n\t" "movs %[tmp], #0\n\t" "movs r5, #0\n\t" "movs r6, #0x7c\n\t" "mov %[a], r8\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[a], %[a], r6\n\t" #else "sub %[a], %[a], r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r6\n\t" +#elif defined(__clang__) "sbcs r6, r6\n\t" #else "sbc r6, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "mvns r6, r6\n\t" #else "mvn r6, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands %[a], %[a], r6\n\t" +#elif defined(__clang__) "ands %[a], r6\n\t" #else "and %[a], r6\n\t" #endif "mov %[b], r8\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[b], %[b], %[a]\n\t" #else "sub %[b], %[b], %[a]\n\t" @@ -57001,161 +181628,153 @@ SP_NOINLINE static void sp_1024_mul_32(sp_digit* r, const sp_digit* a, "add %[a], %[a], r9\n\t" "add %[b], %[b], r10\n\t" "\n" - "L_sp_1024_mul_32_mul_%=: \n\t" + "L_sp_1024_mul_32_mul_%=:\n\t" "# Multiply Start\n\t" - "ldr r6, [%[a]]\n\t" - "ldr r7, [%[b]]\n\t" -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsls r7, r7, #16\n\t" -#else - "lsl r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ + "ldrh r6, [%[a]]\n\t" + "ldrh r7, [%[b]]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) "muls r7, r6\n\t" #else "mul r7, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r7\n\t" #else "add r3, r3, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[tmp]\n\t" +#elif defined(__clang__) "adcs r4, %[tmp]\n\t" #else "adc r4, %[tmp]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[tmp]\n\t" +#elif defined(__clang__) "adcs r5, %[tmp]\n\t" #else "adc r5, %[tmp]\n\t" #endif "ldr r7, [%[b]]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r7, #16\n\t" #else "lsr r7, r7, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) "muls r6, r7\n\t" #else "mul r6, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r6, #16\n\t" #else "lsr r7, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #16\n\t" #else "lsl r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[tmp]\n\t" +#elif defined(__clang__) "adcs r5, %[tmp]\n\t" #else "adc r5, %[tmp]\n\t" #endif "ldr r6, [%[a]]\n\t" "ldr r7, [%[b]]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, #16\n\t" #else "lsr r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r7, #16\n\t" #else "lsr r7, r7, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) "muls r7, r6\n\t" #else "mul r7, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, r7\n\t" #else "add r4, r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[tmp]\n\t" +#elif defined(__clang__) "adcs r5, %[tmp]\n\t" #else "adc r5, %[tmp]\n\t" #endif - "ldr r7, [%[b]]\n\t" -#ifdef __clang__ - "lsls r7, r7, #16\n\t" -#else - "lsl r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ + "ldrh r7, [%[b]]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) "muls r6, r7\n\t" #else "mul r6, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r6, #16\n\t" #else "lsr r7, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #16\n\t" #else "lsl r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[tmp]\n\t" +#elif defined(__clang__) "adcs r5, %[tmp]\n\t" #else "adc r5, %[tmp]\n\t" #endif "# Multiply Done\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[a], %[a], #4\n\t" #else "add %[a], %[a], #4\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[b], %[b], #4\n\t" #else "sub %[b], %[b], #4\n\t" @@ -57167,13 +181786,13 @@ SP_NOINLINE static void sp_1024_mul_32(sp_digit* r, const sp_digit* a, "cmp %[a], r6\n\t" "ble L_sp_1024_mul_32_mul_%=\n\t" "\n" - "L_sp_1024_mul_32_done_mul_%=: \n\t" + "L_sp_1024_mul_32_done_mul_%=:\n\t" "mov %[tmp], r11\n\t" "mov r7, r8\n\t" "str r3, [%[tmp], r7]\n\t" "movs r3, r4\n\t" "movs r4, r5\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r7, r7, #4\n\t" #else "add r7, r7, #4\n\t" @@ -57207,12 +181826,12 @@ SP_NOINLINE static void sp_1024_sqr_32(sp_digit* r, const sp_digit* a) "mov r8, r3\n\t" "mov r11, %[r]\n\t" "movs r6, #0xff\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r6, r6, #1\n\t" #else "add r6, r6, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "negs r6, r6\n\t" #else "neg r6, r6\n\t" @@ -57221,32 +181840,36 @@ SP_NOINLINE static void sp_1024_sqr_32(sp_digit* r, const sp_digit* a) "mov r10, sp\n\t" "mov r9, %[a]\n\t" "\n" - "L_sp_1024_sqr_32_words_%=: \n\t" + "L_sp_1024_sqr_32_words_%=:\n\t" "movs %[r], #0\n\t" "movs r6, #0x7c\n\t" "mov %[a], r8\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[a], %[a], r6\n\t" #else "sub %[a], %[a], r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r6\n\t" +#elif defined(__clang__) "sbcs r6, r6\n\t" #else "sbc r6, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "mvns r6, r6\n\t" #else "mvn r6, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands %[a], %[a], r6\n\t" +#elif defined(__clang__) "ands %[a], r6\n\t" #else "and %[a], r6\n\t" #endif "mov r2, r8\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r2, r2, %[a]\n\t" #else "sub r2, r2, %[a]\n\t" @@ -57254,207 +181877,213 @@ SP_NOINLINE static void sp_1024_sqr_32(sp_digit* r, const sp_digit* a) "add %[a], %[a], r9\n\t" "add r2, r2, r9\n\t" "\n" - "L_sp_1024_sqr_32_mul_%=: \n\t" + "L_sp_1024_sqr_32_mul_%=:\n\t" "cmp r2, %[a]\n\t" "beq L_sp_1024_sqr_32_sqr_%=\n\t" "# Multiply * 2: Start\n\t" - "ldr r6, [%[a]]\n\t" - "ldr r7, [r2]\n\t" -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsls r7, r7, #16\n\t" -#else - "lsl r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ + "ldrh r6, [%[a]]\n\t" + "ldrh r7, [r2]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) "muls r7, r6\n\t" #else "mul r7, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r7\n\t" #else "add r3, r3, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) "adcs r4, %[r]\n\t" #else "adc r4, %[r]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r7\n\t" #else "add r3, r3, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) "adcs r4, %[r]\n\t" #else "adc r4, %[r]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif "ldr r7, [r2]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r7, #16\n\t" #else "lsr r7, r7, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) "muls r6, r7\n\t" #else "mul r6, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r6, #16\n\t" #else "lsr r7, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #16\n\t" #else "lsl r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif "ldr r6, [%[a]]\n\t" "ldr r7, [r2]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, #16\n\t" #else "lsr r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r7, #16\n\t" #else "lsr r7, r7, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) "muls r7, r6\n\t" #else "mul r7, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, r7\n\t" #else "add r4, r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, r7\n\t" #else "add r4, r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif - "ldr r7, [r2]\n\t" -#ifdef __clang__ - "lsls r7, r7, #16\n\t" -#else - "lsl r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ + "ldrh r7, [r2]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) "muls r6, r7\n\t" #else "mul r6, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r6, #16\n\t" #else "lsr r7, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #16\n\t" #else "lsl r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" @@ -57462,114 +182091,101 @@ SP_NOINLINE static void sp_1024_sqr_32(sp_digit* r, const sp_digit* a) "# Multiply * 2: Done\n\t" "bal L_sp_1024_sqr_32_done_sqr_%=\n\t" "\n" - "L_sp_1024_sqr_32_sqr_%=: \n\t" + "L_sp_1024_sqr_32_sqr_%=:\n\t" + "mov r12, r2\n\t" + "ldr r2, [%[a]]\n\t" "# Square: Start\n\t" - "ldr r6, [%[a]]\n\t" -#ifdef __clang__ - "lsrs r7, r6, #16\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r2, #16\n\t" #else - "lsr r7, r6, #16\n\t" + "lsr r7, r2, #16\n\t" #endif -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ + "uxth r6, r2\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r6, r6\n\t" +#elif defined(__clang__) "muls r6, r6\n\t" #else "mul r6, r6\n\t" #endif -#ifdef __clang__ - "adds r3, r3, r6\n\t" -#else - "add r3, r3, r6\n\t" -#endif -#ifdef __clang__ - "adcs r4, %[r]\n\t" -#else - "adc r4, %[r]\n\t" -#endif -#ifdef __clang__ - "adcs r5, %[r]\n\t" -#else - "adc r5, %[r]\n\t" -#endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r7, r7, r7\n\t" +#elif defined(__clang__) "muls r7, r7\n\t" #else "mul r7, r7\n\t" #endif -#ifdef __clang__ - "adds r4, r4, r7\n\t" -#else - "add r4, r4, r7\n\t" -#endif -#ifdef __clang__ - "adcs r5, %[r]\n\t" -#else - "adc r5, %[r]\n\t" -#endif - "ldr r6, [%[a]]\n\t" -#ifdef __clang__ - "lsrs r7, r6, #16\n\t" -#else - "lsr r7, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "muls r6, r7\n\t" -#else - "mul r6, r7\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r6, #15\n\t" -#else - "lsr r7, r6, #15\n\t" -#endif -#ifdef __clang__ - "lsls r6, r6, #17\n\t" -#else - "lsl r6, r6, #17\n\t" -#endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) + "adcs r5, %[r]\n\t" +#else + "adc r5, %[r]\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r2, #16\n\t" +#else + "lsr r7, r2, #16\n\t" +#endif + "uxth r6, r2\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) + "muls r6, r7\n\t" +#else + "mul r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r7, r6, #15\n\t" +#else + "lsr r7, r6, #15\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r6, r6, #17\n\t" +#else + "lsl r6, r6, #17\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif "# Square: Done\n\t" + "mov r2, r12\n\t" "\n" - "L_sp_1024_sqr_32_done_sqr_%=: \n\t" -#ifdef __clang__ + "L_sp_1024_sqr_32_done_sqr_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[a], %[a], #4\n\t" #else "add %[a], %[a], #4\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r2, r2, #4\n\t" #else "sub r2, r2, #4\n\t" @@ -57585,14 +182201,14 @@ SP_NOINLINE static void sp_1024_sqr_32(sp_digit* r, const sp_digit* a) "cmp %[a], r7\n\t" "ble L_sp_1024_sqr_32_mul_%=\n\t" "\n" - "L_sp_1024_sqr_32_done_mul_%=: \n\t" + "L_sp_1024_sqr_32_done_mul_%=:\n\t" "mov %[r], r10\n\t" "mov r7, r8\n\t" "str r3, [%[r], r7]\n\t" "movs r3, r4\n\t" "movs r4, r5\n\t" "movs r5, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r7, r7, #4\n\t" #else "add r7, r7, #4\n\t" @@ -57607,17 +182223,17 @@ SP_NOINLINE static void sp_1024_sqr_32(sp_digit* r, const sp_digit* a) "mov %[a], r10\n\t" "movs r3, #0xfc\n\t" "\n" - "L_sp_1024_sqr_32_store_%=: \n\t" + "L_sp_1024_sqr_32_store_%=:\n\t" "ldr r6, [%[a], r3]\n\t" "str r6, [%[r], r3]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r3, r3, #4\n\t" #else "sub r3, r3, #4\n\t" #endif "bge L_sp_1024_sqr_32_store_%=\n\t" "movs r6, #0xff\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r6, r6, #1\n\t" #else "add r6, r6, #1\n\t" @@ -57625,7 +182241,7 @@ SP_NOINLINE static void sp_1024_sqr_32(sp_digit* r, const sp_digit* a) "add sp, sp, r6\n\t" : [r] "+r" (r), [a] "+r" (a) : - : "memory", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11" + : "memory", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12" ); } @@ -57727,15 +182343,15 @@ SP_NOINLINE static sp_digit sp_1024_sub_in_place_32(sp_digit* a, __asm__ __volatile__ ( "movs r7, %[a]\n\t" "movs r2, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r7, r7, #0x80\n\t" #else "add r7, r7, #0x80\n\t" #endif "\n" - "L_sp_1024_sub_in_place_32_words_%=: \n\t" + "L_sp_1024_sub_in_place_32_words_%=:\n\t" "movs r5, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r5, r5, r2\n\t" #else "sub r5, r5, r2\n\t" @@ -57744,29 +182360,35 @@ SP_NOINLINE static sp_digit sp_1024_sub_in_place_32(sp_digit* a, "ldr r4, [%[a], #4]\n\t" "ldr r5, [%[b]]\n\t" "ldr r6, [%[b], #4]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) "sbcs r3, r5\n\t" #else "sbc r3, r5\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif "str r3, [%[a]]\n\t" "str r4, [%[a], #4]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r2, r2, r2\n\t" +#elif defined(__clang__) "sbcs r2, r2\n\t" #else "sbc r2, r2\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[a], %[a], #8\n\t" #else "add %[a], %[a], #8\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[b], %[b], #8\n\t" #else "add %[b], %[b], #8\n\t" @@ -57799,32 +182421,38 @@ SP_NOINLINE static sp_digit sp_1024_cond_sub_32(sp_digit* r, const sp_digit* a, "mov r8, r5\n\t" "movs r7, #0\n\t" "\n" - "L_sp_1024_cond_sub_32_words_%=: \n\t" + "L_sp_1024_cond_sub_32_words_%=:\n\t" "ldr r6, [%[b], r7]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, %[m]\n\t" +#elif defined(__clang__) "ands r6, %[m]\n\t" #else "and r6, %[m]\n\t" #endif "movs r5, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r5, r5, r4\n\t" #else "sub r5, r5, r4\n\t" #endif "ldr r5, [%[a], r7]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) "sbcs r5, r6\n\t" #else "sbc r5, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r4\n\t" +#elif defined(__clang__) "sbcs r4, r4\n\t" #else "sbc r4, r4\n\t" #endif "str r5, [%[r], r7]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r7, r7, #4\n\t" #else "add r7, r7, #4\n\t" @@ -57853,48 +182481,52 @@ SP_NOINLINE static sp_digit sp_1024_add_32(sp_digit* r, const sp_digit* a, "movs r6, %[a]\n\t" "movs r7, #0\n\t" "movs r3, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r6, r6, #0x80\n\t" #else "add r6, r6, #0x80\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r7, r7, #1\n\t" #else "sub r7, r7, #1\n\t" #endif "\n" - "L_sp_1024_add_32_word_%=: \n\t" -#ifdef __clang__ + "L_sp_1024_add_32_word_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r7\n\t" #else "add r3, r3, r7\n\t" #endif "ldr r4, [%[a]]\n\t" "ldr r5, [%[b]]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r5\n\t" +#elif defined(__clang__) "adcs r4, r5\n\t" #else "adc r4, r5\n\t" #endif "str r4, [%[r]]\n\t" "movs r3, #0\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r3\n\t" +#elif defined(__clang__) "adcs r3, r3\n\t" #else "adc r3, r3\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[a], %[a], #4\n\t" #else "add %[a], %[a], #4\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[b], %[b], #4\n\t" #else "add %[b], %[b], #4\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[r], %[r], #4\n\t" #else "add %[r], %[r], #4\n\t" @@ -57921,7 +182553,7 @@ SP_NOINLINE static void sp_1024_mul_d_32(sp_digit* r, const sp_digit* a, { __asm__ __volatile__ ( "movs r6, #0x80\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r6, r6, %[a]\n\t" #else "add r6, r6, %[a]\n\t" @@ -57931,148 +182563,142 @@ SP_NOINLINE static void sp_1024_mul_d_32(sp_digit* r, const sp_digit* a, "movs r3, #0\n\t" "movs r4, #0\n\t" "\n" - "L_sp_1024_mul_d_32_%=: \n\t" + "L_sp_1024_mul_d_32_%=:\n\t" "movs %[r], #0\n\t" "movs r5, #0\n\t" "# A[] * B\n\t" - "ldr r6, [%[a]]\n\t" -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsls r7, %[b], #16\n\t" -#else - "lsl r7, %[b], #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ + "ldrh r6, [%[a]]\n\t" + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) "muls r7, r6\n\t" #else "mul r7, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r7\n\t" #else "add r3, r3, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, %[r]\n\t" +#elif defined(__clang__) "adcs r4, %[r]\n\t" #else "adc r4, %[r]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, %[b], #16\n\t" #else "lsr r7, %[b], #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) "muls r6, r7\n\t" #else "mul r6, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r6, #16\n\t" #else "lsr r7, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #16\n\t" #else "lsl r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif "ldr r6, [%[a]]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, r6, #16\n\t" #else "lsr r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, %[b], #16\n\t" #else "lsr r7, %[b], #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r7, r6, r7\n\t" +#elif defined(__clang__) "muls r7, r6\n\t" #else "mul r7, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, r7\n\t" #else "add r4, r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" #endif -#ifdef __clang__ - "lsls r7, %[b], #16\n\t" -#else - "lsl r7, %[b], #16\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ + "uxth r7, %[b]\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r7, r6\n\t" +#elif defined(__clang__) "muls r6, r7\n\t" #else "mul r6, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r7, r6, #16\n\t" #else "lsr r7, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r6, r6, #16\n\t" #else "lsl r6, r6, #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r6\n\t" #else "add r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) "adcs r4, r7\n\t" #else "adc r4, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, %[r]\n\t" +#elif defined(__clang__) "adcs r5, %[r]\n\t" #else "adc r5, %[r]\n\t" @@ -58082,12 +182708,12 @@ SP_NOINLINE static void sp_1024_mul_d_32(sp_digit* r, const sp_digit* a, "str r3, [%[r]]\n\t" "movs r3, r4\n\t" "movs r4, r5\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[r], %[r], #4\n\t" #else "add %[r], %[r], #4\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[a], %[a], #4\n\t" #else "add %[a], %[a], #4\n\t" @@ -58116,12 +182742,12 @@ SP_NOINLINE static sp_digit div_1024_word_32(sp_digit d1, sp_digit d0, { __asm__ __volatile__ ( "movs r3, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, %[div], #1\n\t" #else "lsr r5, %[div], #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r5, r5, #1\n\t" #else "add r5, r5, #1\n\t" @@ -58130,326 +182756,307 @@ SP_NOINLINE static sp_digit div_1024_word_32(sp_digit d1, sp_digit d0, "mov r9, %[d1]\n\t" "# Do top 32\n\t" "movs r6, r5\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r6, r6, %[d1]\n\t" #else "sub r6, r6, %[d1]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r6\n\t" +#elif defined(__clang__) "sbcs r6, r6\n\t" #else "sbc r6, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r3\n\t" #else "add r3, r3, r3\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r3, r3, r6\n\t" #else "sub r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, r5\n\t" +#elif defined(__clang__) "ands r6, r5\n\t" #else "and r6, r5\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[d1], %[d1], r6\n\t" #else "sub %[d1], %[d1], r6\n\t" #endif - "\n\t" "movs r4, #29\n\t" "\n" - "L_div_1024_word_32_loop_%=: \n\t" -#ifdef __clang__ + "L_div_1024_word_32_loop_%=:\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls %[d0], %[d0], #1\n\t" #else "lsl %[d0], %[d0], #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs %[d1], %[d1], %[d1]\n\t" +#elif defined(__clang__) "adcs %[d1], %[d1]\n\t" #else "adc %[d1], %[d1]\n\t" #endif "movs r6, r5\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r6, r6, %[d1]\n\t" #else "sub r6, r6, %[d1]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r6\n\t" +#elif defined(__clang__) "sbcs r6, r6\n\t" #else "sbc r6, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r3\n\t" #else "add r3, r3, r3\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r3, r3, r6\n\t" #else "sub r3, r3, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, r5\n\t" +#elif defined(__clang__) "ands r6, r5\n\t" #else "and r6, r5\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[d1], %[d1], r6\n\t" #else "sub %[d1], %[d1], r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r4, r4, #1\n\t" #else "sub r4, r4, #1\n\t" #endif "bpl L_div_1024_word_32_loop_%=\n\t" "movs r7, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r3\n\t" #else "add r3, r3, r3\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, #1\n\t" #else "add r3, r3, #1\n\t" #endif "# r * div - Start\n\t" -#ifdef __clang__ - "lsls %[d1], r3, #16\n\t" -#else - "lsl %[d1], r3, #16\n\t" -#endif -#ifdef __clang__ - "lsls r4, %[div], #16\n\t" -#else - "lsl r4, %[div], #16\n\t" -#endif -#ifdef __clang__ - "lsrs %[d1], %[d1], #16\n\t" -#else - "lsr %[d1], %[d1], #16\n\t" -#endif -#ifdef __clang__ - "lsrs r4, r4, #16\n\t" -#else - "lsr r4, r4, #16\n\t" -#endif -#ifdef __clang__ + "uxth %[d1], r3\n\t" + "uxth r4, %[div]\n\t" +#ifdef WOLFSSL_KEIL + "muls r4, %[d1], r4\n\t" +#elif defined(__clang__) "muls r4, %[d1]\n\t" #else "mul r4, %[d1]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, %[div], #16\n\t" #else "lsr r6, %[div], #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls %[d1], r6, %[d1]\n\t" +#elif defined(__clang__) "muls %[d1], r6\n\t" #else "mul %[d1], r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, %[d1], #16\n\t" #else "lsr r5, %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls %[d1], %[d1], #16\n\t" #else "lsl %[d1], %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, %[d1]\n\t" #else "add r4, r4, %[d1]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs %[d1], r3, #16\n\t" #else "lsr %[d1], r3, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r6, %[d1], r6\n\t" +#elif defined(__clang__) "muls r6, %[d1]\n\t" #else "mul r6, %[d1]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r5, r5, r6\n\t" #else "add r5, r5, r6\n\t" #endif -#ifdef __clang__ - "lsls r6, %[div], #16\n\t" -#else - "lsl r6, %[div], #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ + "uxth r6, %[div]\n\t" +#ifdef WOLFSSL_KEIL + "muls %[d1], r6, %[d1]\n\t" +#elif defined(__clang__) "muls %[d1], r6\n\t" #else "mul %[d1], r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, %[d1], #16\n\t" #else "lsr r6, %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls %[d1], %[d1], #16\n\t" #else "lsl %[d1], %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, %[d1]\n\t" #else "add r4, r4, %[d1]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r6\n\t" +#elif defined(__clang__) "adcs r5, r6\n\t" #else "adc r5, r6\n\t" #endif "# r * div - Done\n\t" "mov %[d1], r8\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs %[d1], %[d1], r4\n\t" #else "sub %[d1], %[d1], r4\n\t" #endif "movs r4, %[d1]\n\t" "mov %[d1], r9\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs %[d1], %[d1], r5\n\t" +#elif defined(__clang__) "sbcs %[d1], r5\n\t" #else "sbc %[d1], r5\n\t" #endif "movs r5, %[d1]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r5\n\t" #else "add r3, r3, r5\n\t" #endif "# r * div - Start\n\t" -#ifdef __clang__ - "lsls %[d1], r3, #16\n\t" -#else - "lsl %[d1], r3, #16\n\t" -#endif -#ifdef __clang__ - "lsls r4, %[div], #16\n\t" -#else - "lsl r4, %[div], #16\n\t" -#endif -#ifdef __clang__ - "lsrs %[d1], %[d1], #16\n\t" -#else - "lsr %[d1], %[d1], #16\n\t" -#endif -#ifdef __clang__ - "lsrs r4, r4, #16\n\t" -#else - "lsr r4, r4, #16\n\t" -#endif -#ifdef __clang__ + "uxth %[d1], r3\n\t" + "uxth r4, %[div]\n\t" +#ifdef WOLFSSL_KEIL + "muls r4, %[d1], r4\n\t" +#elif defined(__clang__) "muls r4, %[d1]\n\t" #else "mul r4, %[d1]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, %[div], #16\n\t" #else "lsr r6, %[div], #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls %[d1], r6, %[d1]\n\t" +#elif defined(__clang__) "muls %[d1], r6\n\t" #else "mul %[d1], r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, %[d1], #16\n\t" #else "lsr r5, %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls %[d1], %[d1], #16\n\t" #else "lsl %[d1], %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, %[d1]\n\t" #else "add r4, r4, %[d1]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs %[d1], r3, #16\n\t" #else "lsr %[d1], r3, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r6, %[d1], r6\n\t" +#elif defined(__clang__) "muls r6, %[d1]\n\t" #else "mul r6, %[d1]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r5, r5, r6\n\t" #else "add r5, r5, r6\n\t" #endif -#ifdef __clang__ - "lsls r6, %[div], #16\n\t" -#else - "lsl r6, %[div], #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ + "uxth r6, %[div]\n\t" +#ifdef WOLFSSL_KEIL + "muls %[d1], r6, %[d1]\n\t" +#elif defined(__clang__) "muls %[d1], r6\n\t" #else "mul %[d1], r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, %[d1], #16\n\t" #else "lsr r6, %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls %[d1], %[d1], #16\n\t" #else "lsl %[d1], %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, %[d1]\n\t" #else "add r4, r4, %[d1]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r6\n\t" +#elif defined(__clang__) "adcs r5, r6\n\t" #else "adc r5, r6\n\t" @@ -58457,124 +183064,115 @@ SP_NOINLINE static sp_digit div_1024_word_32(sp_digit d1, sp_digit d0, "# r * div - Done\n\t" "mov %[d1], r8\n\t" "mov r6, r9\n\t" +#ifdef WOLFSSL_KEIL + "subs r4, %[d1], r4\n\t" +#else #ifdef __clang__ "subs r4, %[d1], r4\n\t" #else "sub r4, %[d1], r4\n\t" #endif -#ifdef __clang__ +#endif +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r5\n\t" +#elif defined(__clang__) "sbcs r6, r5\n\t" #else "sbc r6, r5\n\t" #endif "movs r5, r6\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r5\n\t" #else "add r3, r3, r5\n\t" #endif "# r * div - Start\n\t" -#ifdef __clang__ - "lsls %[d1], r3, #16\n\t" -#else - "lsl %[d1], r3, #16\n\t" -#endif -#ifdef __clang__ - "lsls r4, %[div], #16\n\t" -#else - "lsl r4, %[div], #16\n\t" -#endif -#ifdef __clang__ - "lsrs %[d1], %[d1], #16\n\t" -#else - "lsr %[d1], %[d1], #16\n\t" -#endif -#ifdef __clang__ - "lsrs r4, r4, #16\n\t" -#else - "lsr r4, r4, #16\n\t" -#endif -#ifdef __clang__ + "uxth %[d1], r3\n\t" + "uxth r4, %[div]\n\t" +#ifdef WOLFSSL_KEIL + "muls r4, %[d1], r4\n\t" +#elif defined(__clang__) "muls r4, %[d1]\n\t" #else "mul r4, %[d1]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, %[div], #16\n\t" #else "lsr r6, %[div], #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls %[d1], r6, %[d1]\n\t" +#elif defined(__clang__) "muls %[d1], r6\n\t" #else "mul %[d1], r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r5, %[d1], #16\n\t" #else "lsr r5, %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls %[d1], %[d1], #16\n\t" #else "lsl %[d1], %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, %[d1]\n\t" #else "add r4, r4, %[d1]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs %[d1], r3, #16\n\t" #else "lsr %[d1], r3, #16\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "muls r6, %[d1], r6\n\t" +#elif defined(__clang__) "muls r6, %[d1]\n\t" #else "mul r6, %[d1]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r5, r5, r6\n\t" #else "add r5, r5, r6\n\t" #endif -#ifdef __clang__ - "lsls r6, %[div], #16\n\t" -#else - "lsl r6, %[div], #16\n\t" -#endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" -#else - "lsr r6, r6, #16\n\t" -#endif -#ifdef __clang__ + "uxth r6, %[div]\n\t" +#ifdef WOLFSSL_KEIL + "muls %[d1], r6, %[d1]\n\t" +#elif defined(__clang__) "muls %[d1], r6\n\t" #else "mul %[d1], r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, %[d1], #16\n\t" #else "lsr r6, %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls %[d1], %[d1], #16\n\t" #else "lsl %[d1], %[d1], #16\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, %[d1]\n\t" #else "add r4, r4, %[d1]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r6\n\t" +#elif defined(__clang__) "adcs r5, r6\n\t" #else "adc r5, r6\n\t" @@ -58582,34 +183180,42 @@ SP_NOINLINE static sp_digit div_1024_word_32(sp_digit d1, sp_digit d0, "# r * div - Done\n\t" "mov %[d1], r8\n\t" "mov r6, r9\n\t" +#ifdef WOLFSSL_KEIL + "subs r4, %[d1], r4\n\t" +#else #ifdef __clang__ "subs r4, %[d1], r4\n\t" #else "sub r4, %[d1], r4\n\t" #endif -#ifdef __clang__ +#endif +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r5\n\t" +#elif defined(__clang__) "sbcs r6, r5\n\t" #else "sbc r6, r5\n\t" #endif "movs r5, r6\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r3, r3, r5\n\t" #else "add r3, r3, r5\n\t" #endif "movs r6, %[div]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r6, r6, r4\n\t" #else "sub r6, r6, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r6\n\t" +#elif defined(__clang__) "sbcs r6, r6\n\t" #else "sbc r6, r6\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r3, r3, r6\n\t" #else "sub r3, r3, r6\n\t" @@ -58664,78 +183270,90 @@ SP_NOINLINE static sp_int32 sp_1024_cmp_32(const sp_digit* a, const sp_digit* b) __asm__ __volatile__ ( "movs r2, #0\n\t" "movs r3, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "mvns r3, r3\n\t" #else "mvn r3, r3\n\t" #endif "movs r6, #0x7c\n\t" "\n" - "L_sp_1024_cmp_32_words_%=: \n\t" + "L_sp_1024_cmp_32_words_%=:\n\t" "ldr r7, [%[a], r6]\n\t" "ldr r5, [%[b], r6]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, r3\n\t" +#elif defined(__clang__) "ands r7, r3\n\t" #else "and r7, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r3\n\t" +#elif defined(__clang__) "ands r5, r3\n\t" #else "and r5, r3\n\t" #endif "movs r4, r7\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r7, r7, r5\n\t" #else "sub r7, r7, r5\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r7, r7, r7\n\t" +#elif defined(__clang__) "sbcs r7, r7\n\t" #else "sbc r7, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r2, r2, r7\n\t" #else "add r2, r2, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "mvns r7, r7\n\t" #else "mvn r7, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r3, r3, r7\n\t" +#elif defined(__clang__) "ands r3, r7\n\t" #else "and r3, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r5, r5, r4\n\t" #else "sub r5, r5, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r7, r7, r7\n\t" +#elif defined(__clang__) "sbcs r7, r7\n\t" #else "sbc r7, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r2, r2, r7\n\t" #else "sub r2, r2, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "mvns r7, r7\n\t" #else "mvn r7, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r3, r3, r7\n\t" +#elif defined(__clang__) "ands r3, r7\n\t" #else "and r3, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r6, r6, #4\n\t" #else "sub r6, r6, #4\n\t" @@ -59077,395 +183695,1081 @@ static int sp_1024_point_to_ecc_point_32(const sp_point_1024* p, ecc_point* pm) SP_NOINLINE static void sp_1024_mont_reduce_32(sp_digit* a, const sp_digit* m, sp_digit mp) { - sp_digit ca = 0; __asm__ __volatile__ ( + "movs r7, #0\n\t" "mov r8, %[mp]\n\t" - "mov r12, %[ca]\n\t" + "mov r12, r7\n\t" "mov lr, %[m]\n\t" "mov r9, %[a]\n\t" + "mov r11, %[a]\n\t" + "movs r5, #0x7c\n\t" + "movs r6, #0x80\n\t" + "add r9, r9, r5\n\t" + "add r11, r11, r6\n\t" + "\n" + "L_sp_1024_mont_reduce_32_mod_%=:\n\t" + "movs r7, #0\n\t" "movs r4, #0\n\t" - "# i = 0\n\t" - "mov r11, r4\n\t" - "\n" - "L_sp_1024_mont_reduce_32_mod_%=: \n\t" - "movs r5, #0\n\t" - "movs %[ca], #0\n\t" + "# a[i] += m[0] * mu\n\t" + "ldm %[m]!, {%[mp]}\n\t" + "ldm %[a]!, {r3}\n\t" "# mu = a[i] * mp\n\t" - "mov %[mp], r8\n\t" - "ldr %[a], [%[a]]\n\t" -#ifdef __clang__ - "muls %[mp], %[a]\n\t" + "mov r5, r8\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r3, r5\n\t" +#elif defined(__clang__) + "muls r5, r3\n\t" #else - "mul %[mp], %[a]\n\t" + "mul r5, r3\n\t" #endif - "mov %[m], lr\n\t" - "mov r10, r9\n\t" - "\n" - "L_sp_1024_mont_reduce_32_word_%=: \n\t" - "# a[i+j] += m[j] * mu\n\t" - "mov %[a], r10\n\t" - "ldr %[a], [%[a]]\n\t" - "movs %[ca], #0\n\t" - "movs r4, r5\n\t" - "movs r5, #0\n\t" - "# Multiply m[j] and mu - Start\n\t" - "ldr r7, [%[m]]\n\t" -#ifdef __clang__ - "lsls r6, %[mp], #16\n\t" + "mov r10, r5\n\t" + "# Multiply m[0] and mu - Start\n\t" + "mov r5, r10\n\t" + "uxth r6, %[mp]\n\t" + "uxth r5, r5\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" #else - "lsl r6, %[mp], #16\n\t" + "mul r6, r5\n\t" #endif -#ifdef __clang__ - "lsls r7, r7, #16\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" #else - "lsl r7, r7, #16\n\t" + "add r3, r3, r6\n\t" #endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" #else - "lsr r6, r6, #16\n\t" + "adc r4, r7\n\t" #endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "muls r7, r6\n\t" -#else - "mul r7, r6\n\t" -#endif -#ifdef __clang__ - "adds %[a], %[a], r7\n\t" -#else - "add %[a], %[a], r7\n\t" -#endif -#ifdef __clang__ - "adcs r5, %[ca]\n\t" -#else - "adc r5, %[ca]\n\t" -#endif - "ldr r7, [%[m]]\n\t" -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "muls r6, r7\n\t" -#else - "mul r6, r7\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r6, #16\n\t" -#else - "lsr r7, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "adds %[a], %[a], r6\n\t" -#else - "add %[a], %[a], r6\n\t" -#endif -#ifdef __clang__ - "adcs r5, r7\n\t" -#else - "adc r5, r7\n\t" -#endif - "ldr r7, [%[m]]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, %[mp], #16\n\t" #else "lsr r6, %[mp], #16\n\t" #endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" #else - "lsr r7, r7, #16\n\t" + "mul r5, r6\n\t" #endif -#ifdef __clang__ - "muls r7, r6\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" #else - "mul r7, r6\n\t" + "lsr r6, r5, #16\n\t" #endif -#ifdef __clang__ - "adds r5, r5, r7\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" #else - "add r5, r5, r7\n\t" + "lsl r5, r5, #16\n\t" #endif - "ldr r7, [%[m]]\n\t" -#ifdef __clang__ - "lsls r7, r7, #16\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" #else - "lsl r7, r7, #16\n\t" + "add r3, r3, r5\n\t" #endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" #else - "lsr r7, r7, #16\n\t" + "adc r4, r6\n\t" #endif -#ifdef __clang__ - "muls r6, r7\n\t" + "mov r5, r10\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[mp], #16\n\t" #else - "mul r6, r7\n\t" + "lsr r6, %[mp], #16\n\t" #endif -#ifdef __clang__ - "lsrs r7, r6, #16\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, r5, #16\n\t" #else - "lsr r7, r6, #16\n\t" + "lsr r5, r5, #16\n\t" #endif -#ifdef __clang__ - "lsls r6, r6, #16\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" #else - "lsl r6, r6, #16\n\t" + "mul r6, r5\n\t" #endif -#ifdef __clang__ - "adds %[a], %[a], r6\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" #else - "add %[a], %[a], r6\n\t" + "add r4, r4, r6\n\t" #endif -#ifdef __clang__ - "adcs r5, r7\n\t" + "uxth r6, %[mp]\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" #else - "adc r5, r7\n\t" + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "# Multiply m[0] and mu - Done\n\t" + "\n" + "L_sp_1024_mont_reduce_32_word_%=:\n\t" + "# a[i+j] += m[j] * mu\n\t" + "ldr r3, [%[a]]\n\t" + "ldm %[m]!, {%[mp]}\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r4\n\t" +#else + "add r3, r3, r4\n\t" +#endif + "movs r4, #0\n\t" +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif + "# Multiply m[j] and mu - Start\n\t" + "mov r5, r10\n\t" + "uxth r6, %[mp]\n\t" + "uxth r5, r5\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" +#else + "add r3, r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r7\n\t" +#elif defined(__clang__) + "adcs r4, r7\n\t" +#else + "adc r4, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[mp], #16\n\t" +#else + "lsr r6, %[mp], #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" +#endif + "mov r5, r10\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[mp], #16\n\t" +#else + "lsr r6, %[mp], #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, r5, #16\n\t" +#else + "lsr r5, r5, #16\n\t" +#endif +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" +#else + "mul r6, r5\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" +#else + "add r4, r4, r6\n\t" +#endif + "uxth r6, %[mp]\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" +#else + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r5\n\t" +#else + "add r3, r3, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) + "adcs r4, r6\n\t" +#else + "adc r4, r6\n\t" #endif "# Multiply m[j] and mu - Done\n\t" -#ifdef __clang__ - "adds r4, r4, %[a]\n\t" -#else - "add r4, r4, %[a]\n\t" -#endif -#ifdef __clang__ - "adcs r5, %[ca]\n\t" -#else - "adc r5, %[ca]\n\t" -#endif - "mov %[a], r10\n\t" - "str r4, [%[a]]\n\t" - "movs r6, #4\n\t" -#ifdef __clang__ - "adds %[m], %[m], #4\n\t" -#else - "add %[m], %[m], #4\n\t" -#endif - "add r10, r10, r6\n\t" - "movs r4, #0x7c\n\t" - "add r4, r4, r9\n\t" - "cmp r10, r4\n\t" + "stm %[a]!, {r3}\n\t" + "cmp %[a], r9\n\t" "blt L_sp_1024_mont_reduce_32_word_%=\n\t" "# a[i+31] += m[31] * mu\n\t" - "movs %[ca], #0\n\t" - "mov r4, r12\n\t" - "movs %[a], #0\n\t" + "ldr %[mp], [%[m]]\n\t" + "mov r3, r12\n\t" "# Multiply m[31] and mu - Start\n\t" - "ldr r7, [%[m]]\n\t" -#ifdef __clang__ - "lsls r6, %[mp], #16\n\t" + "mov r5, r10\n\t" + "uxth r6, %[mp]\n\t" + "uxth r5, r5\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" #else - "lsl r6, %[mp], #16\n\t" + "mul r6, r5\n\t" #endif -#ifdef __clang__ - "lsls r7, r7, #16\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r6\n\t" #else - "lsl r7, r7, #16\n\t" + "add r4, r4, r6\n\t" #endif -#ifdef __clang__ - "lsrs r6, r6, #16\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r7\n\t" +#elif defined(__clang__) + "adcs r3, r7\n\t" #else - "lsr r6, r6, #16\n\t" + "adc r3, r7\n\t" #endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r7\n\t" +#elif defined(__clang__) + "adcs r7, r7\n\t" #else - "lsr r7, r7, #16\n\t" + "adc r7, r7\n\t" #endif -#ifdef __clang__ - "muls r7, r6\n\t" -#else - "mul r7, r6\n\t" -#endif -#ifdef __clang__ - "adds r5, r5, r7\n\t" -#else - "add r5, r5, r7\n\t" -#endif -#ifdef __clang__ - "adcs r4, %[ca]\n\t" -#else - "adc r4, %[ca]\n\t" -#endif -#ifdef __clang__ - "adcs %[a], %[ca]\n\t" -#else - "adc %[a], %[ca]\n\t" -#endif - "ldr r7, [%[m]]\n\t" -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" -#else - "lsr r7, r7, #16\n\t" -#endif -#ifdef __clang__ - "muls r6, r7\n\t" -#else - "mul r6, r7\n\t" -#endif -#ifdef __clang__ - "lsrs r7, r6, #16\n\t" -#else - "lsr r7, r6, #16\n\t" -#endif -#ifdef __clang__ - "lsls r6, r6, #16\n\t" -#else - "lsl r6, r6, #16\n\t" -#endif -#ifdef __clang__ - "adds r5, r5, r6\n\t" -#else - "add r5, r5, r6\n\t" -#endif -#ifdef __clang__ - "adcs r4, r7\n\t" -#else - "adc r4, r7\n\t" -#endif -#ifdef __clang__ - "adcs %[a], %[ca]\n\t" -#else - "adc %[a], %[ca]\n\t" -#endif - "ldr r7, [%[m]]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r6, %[mp], #16\n\t" #else "lsr r6, %[mp], #16\n\t" #endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" #else - "lsr r7, r7, #16\n\t" + "mul r5, r6\n\t" #endif -#ifdef __clang__ - "muls r7, r6\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" #else - "mul r7, r6\n\t" + "lsr r6, r5, #16\n\t" #endif -#ifdef __clang__ - "adds r4, r4, r7\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" #else - "add r4, r4, r7\n\t" + "lsl r5, r5, #16\n\t" #endif -#ifdef __clang__ - "adcs %[a], %[ca]\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" #else - "adc %[a], %[ca]\n\t" + "add r4, r4, r5\n\t" #endif - "ldr r7, [%[m]]\n\t" -#ifdef __clang__ - "lsls r7, r7, #16\n\t" +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" #else - "lsl r7, r7, #16\n\t" + "adc r3, r6\n\t" #endif -#ifdef __clang__ - "lsrs r7, r7, #16\n\t" +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r7\n\t" +#elif defined(__clang__) + "adcs r7, r7\n\t" #else - "lsr r7, r7, #16\n\t" + "adc r7, r7\n\t" #endif -#ifdef __clang__ - "muls r6, r7\n\t" + "mov r5, r10\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, %[mp], #16\n\t" #else - "mul r6, r7\n\t" + "lsr r6, %[mp], #16\n\t" #endif -#ifdef __clang__ - "lsrs r7, r6, #16\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r5, r5, #16\n\t" #else - "lsr r7, r6, #16\n\t" + "lsr r5, r5, #16\n\t" #endif -#ifdef __clang__ - "lsls r6, r6, #16\n\t" +#ifdef WOLFSSL_KEIL + "muls r6, r5, r6\n\t" +#elif defined(__clang__) + "muls r6, r5\n\t" #else - "lsl r6, r6, #16\n\t" + "mul r6, r5\n\t" #endif -#ifdef __clang__ - "adds r5, r5, r6\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, r6\n\t" #else - "add r5, r5, r6\n\t" + "add r3, r3, r6\n\t" #endif -#ifdef __clang__ - "adcs r4, r7\n\t" +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r7\n\t" +#elif defined(__clang__) + "adcs r7, r7\n\t" #else - "adc r4, r7\n\t" + "adc r7, r7\n\t" #endif -#ifdef __clang__ - "adcs %[a], %[ca]\n\t" + "uxth r6, %[mp]\n\t" +#ifdef WOLFSSL_KEIL + "muls r5, r6, r5\n\t" +#elif defined(__clang__) + "muls r5, r6\n\t" #else - "adc %[a], %[ca]\n\t" + "mul r5, r6\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsrs r6, r5, #16\n\t" +#else + "lsr r6, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "lsls r5, r5, #16\n\t" +#else + "lsl r5, r5, #16\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r4, r4, r5\n\t" +#else + "add r4, r4, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r6\n\t" +#elif defined(__clang__) + "adcs r3, r6\n\t" +#else + "adc r3, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r7\n\t" +#elif defined(__clang__) + "adcs r7, r7\n\t" +#else + "adc r7, r7\n\t" #endif "# Multiply m[31] and mu - Done\n\t" - "movs %[ca], %[a]\n\t" - "mov %[a], r10\n\t" - "ldr r7, [%[a], #4]\n\t" - "ldr %[a], [%[a]]\n\t" - "movs r6, #0\n\t" -#ifdef __clang__ - "adds r5, r5, %[a]\n\t" + "ldr r5, [%[a]]\n\t" + "ldr r6, [%[a], #4]\n\t" + "movs %[mp], #0\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r5, r5, r4\n\t" #else - "add r5, r5, %[a]\n\t" + "add r5, r5, r4\n\t" #endif -#ifdef __clang__ - "adcs r7, r4\n\t" +#ifdef WOLFSSL_KEIL + "adcs r6, r6, r3\n\t" +#elif defined(__clang__) + "adcs r6, r3\n\t" #else - "adc r7, r4\n\t" + "adc r6, r3\n\t" #endif -#ifdef __clang__ - "adcs %[ca], r6\n\t" +#ifdef WOLFSSL_KEIL + "adcs r7, r7, %[mp]\n\t" +#elif defined(__clang__) + "adcs r7, %[mp]\n\t" #else - "adc %[ca], r6\n\t" + "adc r7, %[mp]\n\t" #endif - "mov %[a], r10\n\t" - "str r5, [%[a]]\n\t" - "str r7, [%[a], #4]\n\t" + "stm %[a]!, {r5, r6}\n\t" "# i += 1\n\t" - "movs r6, #4\n\t" - "add r9, r9, r6\n\t" - "add r11, r11, r6\n\t" - "mov r12, %[ca]\n\t" - "mov %[a], r9\n\t" - "movs r4, #0x80\n\t" - "cmp r11, r4\n\t" - "blt L_sp_1024_mont_reduce_32_mod_%=\n\t" - "ldr r6, [%[m]]\n\t" -#ifdef __clang__ - "negs %[ca], %[ca]\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "subs %[a], %[a], #4\n\t" #else - "neg %[ca], %[ca]\n\t" + "sub %[a], %[a], #4\n\t" #endif -#ifdef __clang__ - "subs r6, r6, r7\n\t" + "movs r3, #0x7c\n\t" + "mov r9, %[a]\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "subs %[a], %[a], r3\n\t" #else - "sub r6, r6, r7\n\t" -#endif -#ifdef __clang__ - "sbcs r6, r6\n\t" -#else - "sbc r6, r6\n\t" -#endif -#ifdef __clang__ - "orrs %[ca], r6\n\t" -#else - "orr %[ca], r6\n\t" + "sub %[a], %[a], r3\n\t" #endif + "mov r12, r7\n\t" "mov %[m], lr\n\t" - : [a] "+r" (a), [m] "+r" (m), [mp] "+r" (mp), [ca] "+r" (ca) + "cmp r11, %[a]\n\t" + "bgt L_sp_1024_mont_reduce_32_mod_%=\n\t" + "ldr r5, [%[m], #124]\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "negs r7, r7\n\t" +#else + "neg r7, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "subs r5, r5, r6\n\t" +#else + "sub r5, r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r5\n\t" +#elif defined(__clang__) + "sbcs r5, r5\n\t" +#else + "sbc r5, r5\n\t" +#endif +#ifdef WOLFSSL_KEIL + "orrs r7, r7, r5\n\t" +#elif defined(__clang__) + "orrs r7, r5\n\t" +#else + "orr r7, r5\n\t" +#endif + "# Subtract masked modulus\n\t" + "movs r4, #0x80\n\t" + "movs %[mp], #0\n\t" + "movs r3, #0\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "subs %[a], %[a], r4\n\t" +#else + "sub %[a], %[a], r4\n\t" +#endif +#ifndef WOLFSSL_SP_LARGE_CODE + "\n" + "L_sp_1024_mont_reduce_32_sub_mask_%=:\n\t" + "ldm %[m]!, {r6}\n\t" + "movs r5, #0\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "subs r5, r5, %[mp]\n\t" +#else + "sub r5, r5, %[mp]\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif +#ifdef WOLFSSL_KEIL + "sbcs %[mp], %[mp], %[mp]\n\t" +#elif defined(__clang__) + "sbcs %[mp], %[mp]\n\t" +#else + "sbc %[mp], %[mp]\n\t" +#endif + "stm %[a]!, {r5}\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "adds r3, r3, #4\n\t" +#else + "add r3, r3, #4\n\t" +#endif + "cmp r3, r4\n\t" + "blt L_sp_1024_mont_reduce_32_sub_mask_%=\n\t" +#else /* WOLFSSL_SP_LARGE_CODE */ + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "subs r5, r5, r6\n\t" +#else + "sub r5, r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" + "ldm %[m]!, {r6}\n\t" +#ifdef WOLFSSL_KEIL + "ands r6, r6, r7\n\t" +#elif defined(__clang__) + "ands r6, r7\n\t" +#else + "and r6, r7\n\t" +#endif + "ldr r5, [%[a], r4]\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r6\n\t" +#elif defined(__clang__) + "sbcs r5, r6\n\t" +#else + "sbc r5, r6\n\t" +#endif + "stm %[a]!, {r5}\n\t" +#endif /* WOLFSSL_SP_LARGE_CODE */ + : [a] "+r" (a), [m] "+r" (m), [mp] "+r" (mp) : - : "memory", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12", "lr" + : "memory", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12", "lr" ); - sp_1024_cond_sub_32(a - 32, a, m, ca); } /* Multiply two Montogmery form numbers mod the modulus (prime). @@ -59620,12 +184924,14 @@ SP_NOINLINE static void sp_1024_mont_add_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #4]\n\t" "ldr r6, [%[b]]\n\t" "ldr r7, [%[b], #4]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, r6\n\t" #else "add r4, r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" @@ -59636,12 +184942,16 @@ SP_NOINLINE static void sp_1024_mont_add_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #12]\n\t" "ldr r6, [%[b], #8]\n\t" "ldr r7, [%[b], #12]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) "adcs r4, r6\n\t" #else "adc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" @@ -59652,12 +184962,16 @@ SP_NOINLINE static void sp_1024_mont_add_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #20]\n\t" "ldr r6, [%[b], #16]\n\t" "ldr r7, [%[b], #20]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) "adcs r4, r6\n\t" #else "adc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" @@ -59668,12 +184982,16 @@ SP_NOINLINE static void sp_1024_mont_add_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #28]\n\t" "ldr r6, [%[b], #24]\n\t" "ldr r7, [%[b], #28]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) "adcs r4, r6\n\t" #else "adc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" @@ -59684,12 +185002,16 @@ SP_NOINLINE static void sp_1024_mont_add_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #36]\n\t" "ldr r6, [%[b], #32]\n\t" "ldr r7, [%[b], #36]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) "adcs r4, r6\n\t" #else "adc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" @@ -59700,12 +185022,16 @@ SP_NOINLINE static void sp_1024_mont_add_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #44]\n\t" "ldr r6, [%[b], #40]\n\t" "ldr r7, [%[b], #44]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) "adcs r4, r6\n\t" #else "adc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" @@ -59716,12 +185042,16 @@ SP_NOINLINE static void sp_1024_mont_add_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #52]\n\t" "ldr r6, [%[b], #48]\n\t" "ldr r7, [%[b], #52]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) "adcs r4, r6\n\t" #else "adc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" @@ -59732,12 +185062,16 @@ SP_NOINLINE static void sp_1024_mont_add_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #60]\n\t" "ldr r6, [%[b], #56]\n\t" "ldr r7, [%[b], #60]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) "adcs r4, r6\n\t" #else "adc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" @@ -59748,12 +185082,16 @@ SP_NOINLINE static void sp_1024_mont_add_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #68]\n\t" "ldr r6, [%[b], #64]\n\t" "ldr r7, [%[b], #68]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) "adcs r4, r6\n\t" #else "adc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" @@ -59764,12 +185102,16 @@ SP_NOINLINE static void sp_1024_mont_add_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #76]\n\t" "ldr r6, [%[b], #72]\n\t" "ldr r7, [%[b], #76]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) "adcs r4, r6\n\t" #else "adc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" @@ -59780,12 +185122,16 @@ SP_NOINLINE static void sp_1024_mont_add_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #84]\n\t" "ldr r6, [%[b], #80]\n\t" "ldr r7, [%[b], #84]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) "adcs r4, r6\n\t" #else "adc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" @@ -59796,12 +185142,16 @@ SP_NOINLINE static void sp_1024_mont_add_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #92]\n\t" "ldr r6, [%[b], #88]\n\t" "ldr r7, [%[b], #92]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) "adcs r4, r6\n\t" #else "adc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" @@ -59812,12 +185162,16 @@ SP_NOINLINE static void sp_1024_mont_add_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #100]\n\t" "ldr r6, [%[b], #96]\n\t" "ldr r7, [%[b], #100]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) "adcs r4, r6\n\t" #else "adc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" @@ -59828,12 +185182,16 @@ SP_NOINLINE static void sp_1024_mont_add_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #108]\n\t" "ldr r6, [%[b], #104]\n\t" "ldr r7, [%[b], #108]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) "adcs r4, r6\n\t" #else "adc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" @@ -59844,12 +185202,16 @@ SP_NOINLINE static void sp_1024_mont_add_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #116]\n\t" "ldr r6, [%[b], #112]\n\t" "ldr r7, [%[b], #116]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) "adcs r4, r6\n\t" #else "adc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" @@ -59860,12 +185222,16 @@ SP_NOINLINE static void sp_1024_mont_add_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #124]\n\t" "ldr r6, [%[b], #120]\n\t" "ldr r7, [%[b], #124]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) "adcs r4, r6\n\t" #else "adc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" @@ -59874,27 +185240,33 @@ SP_NOINLINE static void sp_1024_mont_add_32(sp_digit* r, const sp_digit* a, "str r5, [%[r], #124]\n\t" "movs %[b], #0\n\t" "ldr r7, [%[m], #124]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs %[b], %[b], %[b]\n\t" +#elif defined(__clang__) "adcs %[b], %[b]\n\t" #else "adc %[b], %[b]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r7, r7, r5\n\t" #else "sub r7, r7, r5\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "negs %[b], %[b]\n\t" #else "neg %[b], %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r7, r7, r7\n\t" +#elif defined(__clang__) "sbcs r7, r7\n\t" #else "sbc r7, r7\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs %[b], %[b], r7\n\t" +#elif defined(__clang__) "orrs %[b], r7\n\t" #else "orr %[b], r7\n\t" @@ -59903,22 +185275,28 @@ SP_NOINLINE static void sp_1024_mont_add_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #4]\n\t" "ldr r6, [%[m]]\n\t" "ldr r7, [%[m], #4]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, %[b]\n\t" +#elif defined(__clang__) "ands r6, %[b]\n\t" #else "and r6, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, %[b]\n\t" +#elif defined(__clang__) "ands r7, %[b]\n\t" #else "and r7, %[b]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r4, r4, r6\n\t" #else "sub r4, r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -59929,22 +185307,30 @@ SP_NOINLINE static void sp_1024_mont_add_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #12]\n\t" "ldr r6, [%[m], #8]\n\t" "ldr r7, [%[m], #12]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, %[b]\n\t" +#elif defined(__clang__) "ands r6, %[b]\n\t" #else "and r6, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, %[b]\n\t" +#elif defined(__clang__) "ands r7, %[b]\n\t" #else "and r7, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -59955,22 +185341,30 @@ SP_NOINLINE static void sp_1024_mont_add_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #20]\n\t" "ldr r6, [%[m], #16]\n\t" "ldr r7, [%[m], #20]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, %[b]\n\t" +#elif defined(__clang__) "ands r6, %[b]\n\t" #else "and r6, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, %[b]\n\t" +#elif defined(__clang__) "ands r7, %[b]\n\t" #else "and r7, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -59981,22 +185375,30 @@ SP_NOINLINE static void sp_1024_mont_add_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #28]\n\t" "ldr r6, [%[m], #24]\n\t" "ldr r7, [%[m], #28]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, %[b]\n\t" +#elif defined(__clang__) "ands r6, %[b]\n\t" #else "and r6, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, %[b]\n\t" +#elif defined(__clang__) "ands r7, %[b]\n\t" #else "and r7, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -60007,22 +185409,30 @@ SP_NOINLINE static void sp_1024_mont_add_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #36]\n\t" "ldr r6, [%[m], #32]\n\t" "ldr r7, [%[m], #36]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, %[b]\n\t" +#elif defined(__clang__) "ands r6, %[b]\n\t" #else "and r6, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, %[b]\n\t" +#elif defined(__clang__) "ands r7, %[b]\n\t" #else "and r7, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -60033,22 +185443,30 @@ SP_NOINLINE static void sp_1024_mont_add_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #44]\n\t" "ldr r6, [%[m], #40]\n\t" "ldr r7, [%[m], #44]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, %[b]\n\t" +#elif defined(__clang__) "ands r6, %[b]\n\t" #else "and r6, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, %[b]\n\t" +#elif defined(__clang__) "ands r7, %[b]\n\t" #else "and r7, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -60059,22 +185477,30 @@ SP_NOINLINE static void sp_1024_mont_add_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #52]\n\t" "ldr r6, [%[m], #48]\n\t" "ldr r7, [%[m], #52]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, %[b]\n\t" +#elif defined(__clang__) "ands r6, %[b]\n\t" #else "and r6, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, %[b]\n\t" +#elif defined(__clang__) "ands r7, %[b]\n\t" #else "and r7, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -60085,22 +185511,30 @@ SP_NOINLINE static void sp_1024_mont_add_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #60]\n\t" "ldr r6, [%[m], #56]\n\t" "ldr r7, [%[m], #60]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, %[b]\n\t" +#elif defined(__clang__) "ands r6, %[b]\n\t" #else "and r6, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, %[b]\n\t" +#elif defined(__clang__) "ands r7, %[b]\n\t" #else "and r7, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -60111,22 +185545,30 @@ SP_NOINLINE static void sp_1024_mont_add_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #68]\n\t" "ldr r6, [%[m], #64]\n\t" "ldr r7, [%[m], #68]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, %[b]\n\t" +#elif defined(__clang__) "ands r6, %[b]\n\t" #else "and r6, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, %[b]\n\t" +#elif defined(__clang__) "ands r7, %[b]\n\t" #else "and r7, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -60137,22 +185579,30 @@ SP_NOINLINE static void sp_1024_mont_add_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #76]\n\t" "ldr r6, [%[m], #72]\n\t" "ldr r7, [%[m], #76]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, %[b]\n\t" +#elif defined(__clang__) "ands r6, %[b]\n\t" #else "and r6, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, %[b]\n\t" +#elif defined(__clang__) "ands r7, %[b]\n\t" #else "and r7, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -60163,22 +185613,30 @@ SP_NOINLINE static void sp_1024_mont_add_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #84]\n\t" "ldr r6, [%[m], #80]\n\t" "ldr r7, [%[m], #84]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, %[b]\n\t" +#elif defined(__clang__) "ands r6, %[b]\n\t" #else "and r6, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, %[b]\n\t" +#elif defined(__clang__) "ands r7, %[b]\n\t" #else "and r7, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -60189,22 +185647,30 @@ SP_NOINLINE static void sp_1024_mont_add_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #92]\n\t" "ldr r6, [%[m], #88]\n\t" "ldr r7, [%[m], #92]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, %[b]\n\t" +#elif defined(__clang__) "ands r6, %[b]\n\t" #else "and r6, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, %[b]\n\t" +#elif defined(__clang__) "ands r7, %[b]\n\t" #else "and r7, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -60215,22 +185681,30 @@ SP_NOINLINE static void sp_1024_mont_add_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #100]\n\t" "ldr r6, [%[m], #96]\n\t" "ldr r7, [%[m], #100]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, %[b]\n\t" +#elif defined(__clang__) "ands r6, %[b]\n\t" #else "and r6, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, %[b]\n\t" +#elif defined(__clang__) "ands r7, %[b]\n\t" #else "and r7, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -60241,22 +185715,30 @@ SP_NOINLINE static void sp_1024_mont_add_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #108]\n\t" "ldr r6, [%[m], #104]\n\t" "ldr r7, [%[m], #108]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, %[b]\n\t" +#elif defined(__clang__) "ands r6, %[b]\n\t" #else "and r6, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, %[b]\n\t" +#elif defined(__clang__) "ands r7, %[b]\n\t" #else "and r7, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -60267,22 +185749,30 @@ SP_NOINLINE static void sp_1024_mont_add_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #116]\n\t" "ldr r6, [%[m], #112]\n\t" "ldr r7, [%[m], #116]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, %[b]\n\t" +#elif defined(__clang__) "ands r6, %[b]\n\t" #else "and r6, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, %[b]\n\t" +#elif defined(__clang__) "ands r7, %[b]\n\t" #else "and r7, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -60293,22 +185783,30 @@ SP_NOINLINE static void sp_1024_mont_add_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #124]\n\t" "ldr r6, [%[m], #120]\n\t" "ldr r7, [%[m], #124]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, %[b]\n\t" +#elif defined(__clang__) "ands r6, %[b]\n\t" #else "and r6, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, %[b]\n\t" +#elif defined(__clang__) "ands r7, %[b]\n\t" #else "and r7, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -60335,22 +185833,28 @@ SP_NOINLINE static void sp_1024_mont_dbl_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #4]\n\t" "ldr r6, [%[a], #8]\n\t" "ldr r7, [%[a], #12]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, r4\n\t" #else "add r4, r4, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r5\n\t" +#elif defined(__clang__) "adcs r5, r5\n\t" #else "adc r5, r5\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r6, r6, r6\n\t" +#elif defined(__clang__) "adcs r6, r6\n\t" #else "adc r6, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r7\n\t" +#elif defined(__clang__) "adcs r7, r7\n\t" #else "adc r7, r7\n\t" @@ -60363,22 +185867,30 @@ SP_NOINLINE static void sp_1024_mont_dbl_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #20]\n\t" "ldr r6, [%[a], #24]\n\t" "ldr r7, [%[a], #28]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r4\n\t" +#elif defined(__clang__) "adcs r4, r4\n\t" #else "adc r4, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r5\n\t" +#elif defined(__clang__) "adcs r5, r5\n\t" #else "adc r5, r5\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r6, r6, r6\n\t" +#elif defined(__clang__) "adcs r6, r6\n\t" #else "adc r6, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r7\n\t" +#elif defined(__clang__) "adcs r7, r7\n\t" #else "adc r7, r7\n\t" @@ -60391,22 +185903,30 @@ SP_NOINLINE static void sp_1024_mont_dbl_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #36]\n\t" "ldr r6, [%[a], #40]\n\t" "ldr r7, [%[a], #44]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r4\n\t" +#elif defined(__clang__) "adcs r4, r4\n\t" #else "adc r4, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r5\n\t" +#elif defined(__clang__) "adcs r5, r5\n\t" #else "adc r5, r5\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r6, r6, r6\n\t" +#elif defined(__clang__) "adcs r6, r6\n\t" #else "adc r6, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r7\n\t" +#elif defined(__clang__) "adcs r7, r7\n\t" #else "adc r7, r7\n\t" @@ -60419,22 +185939,30 @@ SP_NOINLINE static void sp_1024_mont_dbl_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #52]\n\t" "ldr r6, [%[a], #56]\n\t" "ldr r7, [%[a], #60]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r4\n\t" +#elif defined(__clang__) "adcs r4, r4\n\t" #else "adc r4, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r5\n\t" +#elif defined(__clang__) "adcs r5, r5\n\t" #else "adc r5, r5\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r6, r6, r6\n\t" +#elif defined(__clang__) "adcs r6, r6\n\t" #else "adc r6, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r7\n\t" +#elif defined(__clang__) "adcs r7, r7\n\t" #else "adc r7, r7\n\t" @@ -60447,22 +185975,30 @@ SP_NOINLINE static void sp_1024_mont_dbl_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #68]\n\t" "ldr r6, [%[a], #72]\n\t" "ldr r7, [%[a], #76]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r4\n\t" +#elif defined(__clang__) "adcs r4, r4\n\t" #else "adc r4, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r5\n\t" +#elif defined(__clang__) "adcs r5, r5\n\t" #else "adc r5, r5\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r6, r6, r6\n\t" +#elif defined(__clang__) "adcs r6, r6\n\t" #else "adc r6, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r7\n\t" +#elif defined(__clang__) "adcs r7, r7\n\t" #else "adc r7, r7\n\t" @@ -60475,22 +186011,30 @@ SP_NOINLINE static void sp_1024_mont_dbl_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #84]\n\t" "ldr r6, [%[a], #88]\n\t" "ldr r7, [%[a], #92]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r4\n\t" +#elif defined(__clang__) "adcs r4, r4\n\t" #else "adc r4, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r5\n\t" +#elif defined(__clang__) "adcs r5, r5\n\t" #else "adc r5, r5\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r6, r6, r6\n\t" +#elif defined(__clang__) "adcs r6, r6\n\t" #else "adc r6, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r7\n\t" +#elif defined(__clang__) "adcs r7, r7\n\t" #else "adc r7, r7\n\t" @@ -60503,22 +186047,30 @@ SP_NOINLINE static void sp_1024_mont_dbl_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #100]\n\t" "ldr r6, [%[a], #104]\n\t" "ldr r7, [%[a], #108]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r4\n\t" +#elif defined(__clang__) "adcs r4, r4\n\t" #else "adc r4, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r5\n\t" +#elif defined(__clang__) "adcs r5, r5\n\t" #else "adc r5, r5\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r6, r6, r6\n\t" +#elif defined(__clang__) "adcs r6, r6\n\t" #else "adc r6, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r7\n\t" +#elif defined(__clang__) "adcs r7, r7\n\t" #else "adc r7, r7\n\t" @@ -60531,22 +186083,30 @@ SP_NOINLINE static void sp_1024_mont_dbl_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #116]\n\t" "ldr r6, [%[a], #120]\n\t" "ldr r7, [%[a], #124]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r4\n\t" +#elif defined(__clang__) "adcs r4, r4\n\t" #else "adc r4, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r5\n\t" +#elif defined(__clang__) "adcs r5, r5\n\t" #else "adc r5, r5\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r6, r6, r6\n\t" +#elif defined(__clang__) "adcs r6, r6\n\t" #else "adc r6, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r7\n\t" +#elif defined(__clang__) "adcs r7, r7\n\t" #else "adc r7, r7\n\t" @@ -60557,27 +186117,33 @@ SP_NOINLINE static void sp_1024_mont_dbl_32(sp_digit* r, const sp_digit* a, "str r7, [%[r], #124]\n\t" "movs r3, #0\n\t" "ldr r4, [%[m], #124]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r3\n\t" +#elif defined(__clang__) "adcs r3, r3\n\t" #else "adc r3, r3\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r4, r4, r7\n\t" #else "sub r4, r4, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "negs r3, r3\n\t" #else "neg r3, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r4\n\t" +#elif defined(__clang__) "sbcs r4, r4\n\t" #else "sbc r4, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r4\n\t" +#elif defined(__clang__) "orrs r3, r4\n\t" #else "orr r3, r4\n\t" @@ -60586,22 +186152,28 @@ SP_NOINLINE static void sp_1024_mont_dbl_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #4]\n\t" "ldr r6, [%[m]]\n\t" "ldr r7, [%[m], #4]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, r3\n\t" +#elif defined(__clang__) "ands r6, r3\n\t" #else "and r6, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, r3\n\t" +#elif defined(__clang__) "ands r7, r3\n\t" #else "and r7, r3\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r4, r4, r6\n\t" #else "sub r4, r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -60612,22 +186184,30 @@ SP_NOINLINE static void sp_1024_mont_dbl_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #12]\n\t" "ldr r6, [%[m], #8]\n\t" "ldr r7, [%[m], #12]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, r3\n\t" +#elif defined(__clang__) "ands r6, r3\n\t" #else "and r6, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, r3\n\t" +#elif defined(__clang__) "ands r7, r3\n\t" #else "and r7, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -60638,22 +186218,30 @@ SP_NOINLINE static void sp_1024_mont_dbl_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #20]\n\t" "ldr r6, [%[m], #16]\n\t" "ldr r7, [%[m], #20]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, r3\n\t" +#elif defined(__clang__) "ands r6, r3\n\t" #else "and r6, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, r3\n\t" +#elif defined(__clang__) "ands r7, r3\n\t" #else "and r7, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -60664,22 +186252,30 @@ SP_NOINLINE static void sp_1024_mont_dbl_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #28]\n\t" "ldr r6, [%[m], #24]\n\t" "ldr r7, [%[m], #28]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, r3\n\t" +#elif defined(__clang__) "ands r6, r3\n\t" #else "and r6, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, r3\n\t" +#elif defined(__clang__) "ands r7, r3\n\t" #else "and r7, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -60690,22 +186286,30 @@ SP_NOINLINE static void sp_1024_mont_dbl_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #36]\n\t" "ldr r6, [%[m], #32]\n\t" "ldr r7, [%[m], #36]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, r3\n\t" +#elif defined(__clang__) "ands r6, r3\n\t" #else "and r6, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, r3\n\t" +#elif defined(__clang__) "ands r7, r3\n\t" #else "and r7, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -60716,22 +186320,30 @@ SP_NOINLINE static void sp_1024_mont_dbl_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #44]\n\t" "ldr r6, [%[m], #40]\n\t" "ldr r7, [%[m], #44]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, r3\n\t" +#elif defined(__clang__) "ands r6, r3\n\t" #else "and r6, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, r3\n\t" +#elif defined(__clang__) "ands r7, r3\n\t" #else "and r7, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -60742,22 +186354,30 @@ SP_NOINLINE static void sp_1024_mont_dbl_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #52]\n\t" "ldr r6, [%[m], #48]\n\t" "ldr r7, [%[m], #52]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, r3\n\t" +#elif defined(__clang__) "ands r6, r3\n\t" #else "and r6, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, r3\n\t" +#elif defined(__clang__) "ands r7, r3\n\t" #else "and r7, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -60768,22 +186388,30 @@ SP_NOINLINE static void sp_1024_mont_dbl_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #60]\n\t" "ldr r6, [%[m], #56]\n\t" "ldr r7, [%[m], #60]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, r3\n\t" +#elif defined(__clang__) "ands r6, r3\n\t" #else "and r6, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, r3\n\t" +#elif defined(__clang__) "ands r7, r3\n\t" #else "and r7, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -60794,22 +186422,30 @@ SP_NOINLINE static void sp_1024_mont_dbl_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #68]\n\t" "ldr r6, [%[m], #64]\n\t" "ldr r7, [%[m], #68]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, r3\n\t" +#elif defined(__clang__) "ands r6, r3\n\t" #else "and r6, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, r3\n\t" +#elif defined(__clang__) "ands r7, r3\n\t" #else "and r7, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -60820,22 +186456,30 @@ SP_NOINLINE static void sp_1024_mont_dbl_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #76]\n\t" "ldr r6, [%[m], #72]\n\t" "ldr r7, [%[m], #76]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, r3\n\t" +#elif defined(__clang__) "ands r6, r3\n\t" #else "and r6, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, r3\n\t" +#elif defined(__clang__) "ands r7, r3\n\t" #else "and r7, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -60846,22 +186490,30 @@ SP_NOINLINE static void sp_1024_mont_dbl_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #84]\n\t" "ldr r6, [%[m], #80]\n\t" "ldr r7, [%[m], #84]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, r3\n\t" +#elif defined(__clang__) "ands r6, r3\n\t" #else "and r6, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, r3\n\t" +#elif defined(__clang__) "ands r7, r3\n\t" #else "and r7, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -60872,22 +186524,30 @@ SP_NOINLINE static void sp_1024_mont_dbl_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #92]\n\t" "ldr r6, [%[m], #88]\n\t" "ldr r7, [%[m], #92]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, r3\n\t" +#elif defined(__clang__) "ands r6, r3\n\t" #else "and r6, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, r3\n\t" +#elif defined(__clang__) "ands r7, r3\n\t" #else "and r7, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -60898,22 +186558,30 @@ SP_NOINLINE static void sp_1024_mont_dbl_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #100]\n\t" "ldr r6, [%[m], #96]\n\t" "ldr r7, [%[m], #100]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, r3\n\t" +#elif defined(__clang__) "ands r6, r3\n\t" #else "and r6, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, r3\n\t" +#elif defined(__clang__) "ands r7, r3\n\t" #else "and r7, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -60924,22 +186592,30 @@ SP_NOINLINE static void sp_1024_mont_dbl_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #108]\n\t" "ldr r6, [%[m], #104]\n\t" "ldr r7, [%[m], #108]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, r3\n\t" +#elif defined(__clang__) "ands r6, r3\n\t" #else "and r6, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, r3\n\t" +#elif defined(__clang__) "ands r7, r3\n\t" #else "and r7, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -60950,22 +186626,30 @@ SP_NOINLINE static void sp_1024_mont_dbl_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #116]\n\t" "ldr r6, [%[m], #112]\n\t" "ldr r7, [%[m], #116]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, r3\n\t" +#elif defined(__clang__) "ands r6, r3\n\t" #else "and r6, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, r3\n\t" +#elif defined(__clang__) "ands r7, r3\n\t" #else "and r7, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -60976,22 +186660,30 @@ SP_NOINLINE static void sp_1024_mont_dbl_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #124]\n\t" "ldr r6, [%[m], #120]\n\t" "ldr r7, [%[m], #124]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, r3\n\t" +#elif defined(__clang__) "ands r6, r3\n\t" #else "and r6, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, r3\n\t" +#elif defined(__clang__) "ands r7, r3\n\t" #else "and r7, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -61018,22 +186710,28 @@ SP_NOINLINE static void sp_1024_mont_tpl_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #4]\n\t" "ldr r6, [%[a], #8]\n\t" "ldr r7, [%[a], #12]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, r4\n\t" #else "add r4, r4, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r5\n\t" +#elif defined(__clang__) "adcs r5, r5\n\t" #else "adc r5, r5\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r6, r6, r6\n\t" +#elif defined(__clang__) "adcs r6, r6\n\t" #else "adc r6, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r7\n\t" +#elif defined(__clang__) "adcs r7, r7\n\t" #else "adc r7, r7\n\t" @@ -61046,22 +186744,30 @@ SP_NOINLINE static void sp_1024_mont_tpl_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #20]\n\t" "ldr r6, [%[a], #24]\n\t" "ldr r7, [%[a], #28]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r4\n\t" +#elif defined(__clang__) "adcs r4, r4\n\t" #else "adc r4, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r5\n\t" +#elif defined(__clang__) "adcs r5, r5\n\t" #else "adc r5, r5\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r6, r6, r6\n\t" +#elif defined(__clang__) "adcs r6, r6\n\t" #else "adc r6, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r7\n\t" +#elif defined(__clang__) "adcs r7, r7\n\t" #else "adc r7, r7\n\t" @@ -61074,22 +186780,30 @@ SP_NOINLINE static void sp_1024_mont_tpl_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #36]\n\t" "ldr r6, [%[a], #40]\n\t" "ldr r7, [%[a], #44]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r4\n\t" +#elif defined(__clang__) "adcs r4, r4\n\t" #else "adc r4, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r5\n\t" +#elif defined(__clang__) "adcs r5, r5\n\t" #else "adc r5, r5\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r6, r6, r6\n\t" +#elif defined(__clang__) "adcs r6, r6\n\t" #else "adc r6, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r7\n\t" +#elif defined(__clang__) "adcs r7, r7\n\t" #else "adc r7, r7\n\t" @@ -61102,22 +186816,30 @@ SP_NOINLINE static void sp_1024_mont_tpl_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #52]\n\t" "ldr r6, [%[a], #56]\n\t" "ldr r7, [%[a], #60]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r4\n\t" +#elif defined(__clang__) "adcs r4, r4\n\t" #else "adc r4, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r5\n\t" +#elif defined(__clang__) "adcs r5, r5\n\t" #else "adc r5, r5\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r6, r6, r6\n\t" +#elif defined(__clang__) "adcs r6, r6\n\t" #else "adc r6, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r7\n\t" +#elif defined(__clang__) "adcs r7, r7\n\t" #else "adc r7, r7\n\t" @@ -61130,22 +186852,30 @@ SP_NOINLINE static void sp_1024_mont_tpl_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #68]\n\t" "ldr r6, [%[a], #72]\n\t" "ldr r7, [%[a], #76]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r4\n\t" +#elif defined(__clang__) "adcs r4, r4\n\t" #else "adc r4, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r5\n\t" +#elif defined(__clang__) "adcs r5, r5\n\t" #else "adc r5, r5\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r6, r6, r6\n\t" +#elif defined(__clang__) "adcs r6, r6\n\t" #else "adc r6, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r7\n\t" +#elif defined(__clang__) "adcs r7, r7\n\t" #else "adc r7, r7\n\t" @@ -61158,22 +186888,30 @@ SP_NOINLINE static void sp_1024_mont_tpl_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #84]\n\t" "ldr r6, [%[a], #88]\n\t" "ldr r7, [%[a], #92]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r4\n\t" +#elif defined(__clang__) "adcs r4, r4\n\t" #else "adc r4, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r5\n\t" +#elif defined(__clang__) "adcs r5, r5\n\t" #else "adc r5, r5\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r6, r6, r6\n\t" +#elif defined(__clang__) "adcs r6, r6\n\t" #else "adc r6, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r7\n\t" +#elif defined(__clang__) "adcs r7, r7\n\t" #else "adc r7, r7\n\t" @@ -61186,22 +186924,30 @@ SP_NOINLINE static void sp_1024_mont_tpl_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #100]\n\t" "ldr r6, [%[a], #104]\n\t" "ldr r7, [%[a], #108]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r4\n\t" +#elif defined(__clang__) "adcs r4, r4\n\t" #else "adc r4, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r5\n\t" +#elif defined(__clang__) "adcs r5, r5\n\t" #else "adc r5, r5\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r6, r6, r6\n\t" +#elif defined(__clang__) "adcs r6, r6\n\t" #else "adc r6, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r7\n\t" +#elif defined(__clang__) "adcs r7, r7\n\t" #else "adc r7, r7\n\t" @@ -61214,22 +186960,30 @@ SP_NOINLINE static void sp_1024_mont_tpl_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #116]\n\t" "ldr r6, [%[a], #120]\n\t" "ldr r7, [%[a], #124]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r4\n\t" +#elif defined(__clang__) "adcs r4, r4\n\t" #else "adc r4, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r5\n\t" +#elif defined(__clang__) "adcs r5, r5\n\t" #else "adc r5, r5\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r6, r6, r6\n\t" +#elif defined(__clang__) "adcs r6, r6\n\t" #else "adc r6, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r7\n\t" +#elif defined(__clang__) "adcs r7, r7\n\t" #else "adc r7, r7\n\t" @@ -61240,27 +186994,33 @@ SP_NOINLINE static void sp_1024_mont_tpl_32(sp_digit* r, const sp_digit* a, "str r7, [%[r], #124]\n\t" "movs r3, #0\n\t" "ldr r4, [%[m], #124]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r3\n\t" +#elif defined(__clang__) "adcs r3, r3\n\t" #else "adc r3, r3\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r4, r4, r7\n\t" #else "sub r4, r4, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "negs r3, r3\n\t" #else "neg r3, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r4\n\t" +#elif defined(__clang__) "sbcs r4, r4\n\t" #else "sbc r4, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r4\n\t" +#elif defined(__clang__) "orrs r3, r4\n\t" #else "orr r3, r4\n\t" @@ -61269,22 +187029,28 @@ SP_NOINLINE static void sp_1024_mont_tpl_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #4]\n\t" "ldr r6, [%[m]]\n\t" "ldr r7, [%[m], #4]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, r3\n\t" +#elif defined(__clang__) "ands r6, r3\n\t" #else "and r6, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, r3\n\t" +#elif defined(__clang__) "ands r7, r3\n\t" #else "and r7, r3\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r4, r4, r6\n\t" #else "sub r4, r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -61295,22 +187061,30 @@ SP_NOINLINE static void sp_1024_mont_tpl_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #12]\n\t" "ldr r6, [%[m], #8]\n\t" "ldr r7, [%[m], #12]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, r3\n\t" +#elif defined(__clang__) "ands r6, r3\n\t" #else "and r6, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, r3\n\t" +#elif defined(__clang__) "ands r7, r3\n\t" #else "and r7, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -61321,22 +187095,30 @@ SP_NOINLINE static void sp_1024_mont_tpl_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #20]\n\t" "ldr r6, [%[m], #16]\n\t" "ldr r7, [%[m], #20]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, r3\n\t" +#elif defined(__clang__) "ands r6, r3\n\t" #else "and r6, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, r3\n\t" +#elif defined(__clang__) "ands r7, r3\n\t" #else "and r7, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -61347,22 +187129,30 @@ SP_NOINLINE static void sp_1024_mont_tpl_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #28]\n\t" "ldr r6, [%[m], #24]\n\t" "ldr r7, [%[m], #28]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, r3\n\t" +#elif defined(__clang__) "ands r6, r3\n\t" #else "and r6, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, r3\n\t" +#elif defined(__clang__) "ands r7, r3\n\t" #else "and r7, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -61373,22 +187163,30 @@ SP_NOINLINE static void sp_1024_mont_tpl_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #36]\n\t" "ldr r6, [%[m], #32]\n\t" "ldr r7, [%[m], #36]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, r3\n\t" +#elif defined(__clang__) "ands r6, r3\n\t" #else "and r6, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, r3\n\t" +#elif defined(__clang__) "ands r7, r3\n\t" #else "and r7, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -61399,22 +187197,30 @@ SP_NOINLINE static void sp_1024_mont_tpl_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #44]\n\t" "ldr r6, [%[m], #40]\n\t" "ldr r7, [%[m], #44]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, r3\n\t" +#elif defined(__clang__) "ands r6, r3\n\t" #else "and r6, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, r3\n\t" +#elif defined(__clang__) "ands r7, r3\n\t" #else "and r7, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -61425,22 +187231,30 @@ SP_NOINLINE static void sp_1024_mont_tpl_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #52]\n\t" "ldr r6, [%[m], #48]\n\t" "ldr r7, [%[m], #52]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, r3\n\t" +#elif defined(__clang__) "ands r6, r3\n\t" #else "and r6, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, r3\n\t" +#elif defined(__clang__) "ands r7, r3\n\t" #else "and r7, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -61451,22 +187265,30 @@ SP_NOINLINE static void sp_1024_mont_tpl_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #60]\n\t" "ldr r6, [%[m], #56]\n\t" "ldr r7, [%[m], #60]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, r3\n\t" +#elif defined(__clang__) "ands r6, r3\n\t" #else "and r6, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, r3\n\t" +#elif defined(__clang__) "ands r7, r3\n\t" #else "and r7, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -61477,22 +187299,30 @@ SP_NOINLINE static void sp_1024_mont_tpl_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #68]\n\t" "ldr r6, [%[m], #64]\n\t" "ldr r7, [%[m], #68]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, r3\n\t" +#elif defined(__clang__) "ands r6, r3\n\t" #else "and r6, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, r3\n\t" +#elif defined(__clang__) "ands r7, r3\n\t" #else "and r7, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -61503,22 +187333,30 @@ SP_NOINLINE static void sp_1024_mont_tpl_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #76]\n\t" "ldr r6, [%[m], #72]\n\t" "ldr r7, [%[m], #76]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, r3\n\t" +#elif defined(__clang__) "ands r6, r3\n\t" #else "and r6, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, r3\n\t" +#elif defined(__clang__) "ands r7, r3\n\t" #else "and r7, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -61529,22 +187367,30 @@ SP_NOINLINE static void sp_1024_mont_tpl_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #84]\n\t" "ldr r6, [%[m], #80]\n\t" "ldr r7, [%[m], #84]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, r3\n\t" +#elif defined(__clang__) "ands r6, r3\n\t" #else "and r6, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, r3\n\t" +#elif defined(__clang__) "ands r7, r3\n\t" #else "and r7, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -61555,22 +187401,30 @@ SP_NOINLINE static void sp_1024_mont_tpl_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #92]\n\t" "ldr r6, [%[m], #88]\n\t" "ldr r7, [%[m], #92]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, r3\n\t" +#elif defined(__clang__) "ands r6, r3\n\t" #else "and r6, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, r3\n\t" +#elif defined(__clang__) "ands r7, r3\n\t" #else "and r7, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -61581,22 +187435,30 @@ SP_NOINLINE static void sp_1024_mont_tpl_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #100]\n\t" "ldr r6, [%[m], #96]\n\t" "ldr r7, [%[m], #100]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, r3\n\t" +#elif defined(__clang__) "ands r6, r3\n\t" #else "and r6, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, r3\n\t" +#elif defined(__clang__) "ands r7, r3\n\t" #else "and r7, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -61607,22 +187469,30 @@ SP_NOINLINE static void sp_1024_mont_tpl_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #108]\n\t" "ldr r6, [%[m], #104]\n\t" "ldr r7, [%[m], #108]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, r3\n\t" +#elif defined(__clang__) "ands r6, r3\n\t" #else "and r6, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, r3\n\t" +#elif defined(__clang__) "ands r7, r3\n\t" #else "and r7, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -61633,22 +187503,30 @@ SP_NOINLINE static void sp_1024_mont_tpl_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #116]\n\t" "ldr r6, [%[m], #112]\n\t" "ldr r7, [%[m], #116]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, r3\n\t" +#elif defined(__clang__) "ands r6, r3\n\t" #else "and r6, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, r3\n\t" +#elif defined(__clang__) "ands r7, r3\n\t" #else "and r7, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -61659,22 +187537,30 @@ SP_NOINLINE static void sp_1024_mont_tpl_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #124]\n\t" "ldr r6, [%[m], #120]\n\t" "ldr r7, [%[m], #124]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, r3\n\t" +#elif defined(__clang__) "ands r6, r3\n\t" #else "and r6, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, r3\n\t" +#elif defined(__clang__) "ands r7, r3\n\t" #else "and r7, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -61685,12 +187571,14 @@ SP_NOINLINE static void sp_1024_mont_tpl_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #4]\n\t" "ldr r6, [%[r]]\n\t" "ldr r7, [%[r], #4]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r6, r6, r4\n\t" #else "add r6, r6, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r5\n\t" +#elif defined(__clang__) "adcs r7, r5\n\t" #else "adc r7, r5\n\t" @@ -61701,12 +187589,16 @@ SP_NOINLINE static void sp_1024_mont_tpl_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #12]\n\t" "ldr r6, [%[r], #8]\n\t" "ldr r7, [%[r], #12]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r6, r6, r4\n\t" +#elif defined(__clang__) "adcs r6, r4\n\t" #else "adc r6, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r5\n\t" +#elif defined(__clang__) "adcs r7, r5\n\t" #else "adc r7, r5\n\t" @@ -61717,12 +187609,16 @@ SP_NOINLINE static void sp_1024_mont_tpl_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #20]\n\t" "ldr r6, [%[r], #16]\n\t" "ldr r7, [%[r], #20]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r6, r6, r4\n\t" +#elif defined(__clang__) "adcs r6, r4\n\t" #else "adc r6, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r5\n\t" +#elif defined(__clang__) "adcs r7, r5\n\t" #else "adc r7, r5\n\t" @@ -61733,12 +187629,16 @@ SP_NOINLINE static void sp_1024_mont_tpl_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #28]\n\t" "ldr r6, [%[r], #24]\n\t" "ldr r7, [%[r], #28]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r6, r6, r4\n\t" +#elif defined(__clang__) "adcs r6, r4\n\t" #else "adc r6, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r5\n\t" +#elif defined(__clang__) "adcs r7, r5\n\t" #else "adc r7, r5\n\t" @@ -61749,12 +187649,16 @@ SP_NOINLINE static void sp_1024_mont_tpl_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #36]\n\t" "ldr r6, [%[r], #32]\n\t" "ldr r7, [%[r], #36]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r6, r6, r4\n\t" +#elif defined(__clang__) "adcs r6, r4\n\t" #else "adc r6, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r5\n\t" +#elif defined(__clang__) "adcs r7, r5\n\t" #else "adc r7, r5\n\t" @@ -61765,12 +187669,16 @@ SP_NOINLINE static void sp_1024_mont_tpl_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #44]\n\t" "ldr r6, [%[r], #40]\n\t" "ldr r7, [%[r], #44]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r6, r6, r4\n\t" +#elif defined(__clang__) "adcs r6, r4\n\t" #else "adc r6, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r5\n\t" +#elif defined(__clang__) "adcs r7, r5\n\t" #else "adc r7, r5\n\t" @@ -61781,12 +187689,16 @@ SP_NOINLINE static void sp_1024_mont_tpl_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #52]\n\t" "ldr r6, [%[r], #48]\n\t" "ldr r7, [%[r], #52]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r6, r6, r4\n\t" +#elif defined(__clang__) "adcs r6, r4\n\t" #else "adc r6, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r5\n\t" +#elif defined(__clang__) "adcs r7, r5\n\t" #else "adc r7, r5\n\t" @@ -61797,12 +187709,16 @@ SP_NOINLINE static void sp_1024_mont_tpl_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #60]\n\t" "ldr r6, [%[r], #56]\n\t" "ldr r7, [%[r], #60]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r6, r6, r4\n\t" +#elif defined(__clang__) "adcs r6, r4\n\t" #else "adc r6, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r5\n\t" +#elif defined(__clang__) "adcs r7, r5\n\t" #else "adc r7, r5\n\t" @@ -61813,12 +187729,16 @@ SP_NOINLINE static void sp_1024_mont_tpl_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #68]\n\t" "ldr r6, [%[r], #64]\n\t" "ldr r7, [%[r], #68]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r6, r6, r4\n\t" +#elif defined(__clang__) "adcs r6, r4\n\t" #else "adc r6, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r5\n\t" +#elif defined(__clang__) "adcs r7, r5\n\t" #else "adc r7, r5\n\t" @@ -61829,12 +187749,16 @@ SP_NOINLINE static void sp_1024_mont_tpl_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #76]\n\t" "ldr r6, [%[r], #72]\n\t" "ldr r7, [%[r], #76]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r6, r6, r4\n\t" +#elif defined(__clang__) "adcs r6, r4\n\t" #else "adc r6, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r5\n\t" +#elif defined(__clang__) "adcs r7, r5\n\t" #else "adc r7, r5\n\t" @@ -61845,12 +187769,16 @@ SP_NOINLINE static void sp_1024_mont_tpl_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #84]\n\t" "ldr r6, [%[r], #80]\n\t" "ldr r7, [%[r], #84]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r6, r6, r4\n\t" +#elif defined(__clang__) "adcs r6, r4\n\t" #else "adc r6, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r5\n\t" +#elif defined(__clang__) "adcs r7, r5\n\t" #else "adc r7, r5\n\t" @@ -61861,12 +187789,16 @@ SP_NOINLINE static void sp_1024_mont_tpl_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #92]\n\t" "ldr r6, [%[r], #88]\n\t" "ldr r7, [%[r], #92]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r6, r6, r4\n\t" +#elif defined(__clang__) "adcs r6, r4\n\t" #else "adc r6, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r5\n\t" +#elif defined(__clang__) "adcs r7, r5\n\t" #else "adc r7, r5\n\t" @@ -61877,12 +187809,16 @@ SP_NOINLINE static void sp_1024_mont_tpl_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #100]\n\t" "ldr r6, [%[r], #96]\n\t" "ldr r7, [%[r], #100]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r6, r6, r4\n\t" +#elif defined(__clang__) "adcs r6, r4\n\t" #else "adc r6, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r5\n\t" +#elif defined(__clang__) "adcs r7, r5\n\t" #else "adc r7, r5\n\t" @@ -61893,12 +187829,16 @@ SP_NOINLINE static void sp_1024_mont_tpl_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #108]\n\t" "ldr r6, [%[r], #104]\n\t" "ldr r7, [%[r], #108]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r6, r6, r4\n\t" +#elif defined(__clang__) "adcs r6, r4\n\t" #else "adc r6, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r5\n\t" +#elif defined(__clang__) "adcs r7, r5\n\t" #else "adc r7, r5\n\t" @@ -61909,12 +187849,16 @@ SP_NOINLINE static void sp_1024_mont_tpl_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #116]\n\t" "ldr r6, [%[r], #112]\n\t" "ldr r7, [%[r], #116]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r6, r6, r4\n\t" +#elif defined(__clang__) "adcs r6, r4\n\t" #else "adc r6, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r5\n\t" +#elif defined(__clang__) "adcs r7, r5\n\t" #else "adc r7, r5\n\t" @@ -61925,12 +187869,16 @@ SP_NOINLINE static void sp_1024_mont_tpl_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #124]\n\t" "ldr r6, [%[r], #120]\n\t" "ldr r7, [%[r], #124]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r6, r6, r4\n\t" +#elif defined(__clang__) "adcs r6, r4\n\t" #else "adc r6, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r7, r7, r5\n\t" +#elif defined(__clang__) "adcs r7, r5\n\t" #else "adc r7, r5\n\t" @@ -61939,27 +187887,33 @@ SP_NOINLINE static void sp_1024_mont_tpl_32(sp_digit* r, const sp_digit* a, "str r7, [%[r], #124]\n\t" "movs r3, #0\n\t" "ldr r5, [%[m], #124]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r3, r3, r3\n\t" +#elif defined(__clang__) "adcs r3, r3\n\t" #else "adc r3, r3\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r5, r5, r7\n\t" #else "sub r5, r5, r7\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "negs r3, r3\n\t" #else "neg r3, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r5\n\t" +#elif defined(__clang__) "sbcs r5, r5\n\t" #else "sbc r5, r5\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r5\n\t" +#elif defined(__clang__) "orrs r3, r5\n\t" #else "orr r3, r5\n\t" @@ -61968,22 +187922,28 @@ SP_NOINLINE static void sp_1024_mont_tpl_32(sp_digit* r, const sp_digit* a, "ldr r7, [%[r], #4]\n\t" "ldr r4, [%[m]]\n\t" "ldr r5, [%[m], #4]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r4, r4, r3\n\t" +#elif defined(__clang__) "ands r4, r3\n\t" #else "and r4, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r3\n\t" +#elif defined(__clang__) "ands r5, r3\n\t" #else "and r5, r3\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r6, r6, r4\n\t" #else "sub r6, r6, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r7, r7, r5\n\t" +#elif defined(__clang__) "sbcs r7, r5\n\t" #else "sbc r7, r5\n\t" @@ -61994,22 +187954,30 @@ SP_NOINLINE static void sp_1024_mont_tpl_32(sp_digit* r, const sp_digit* a, "ldr r7, [%[r], #12]\n\t" "ldr r4, [%[m], #8]\n\t" "ldr r5, [%[m], #12]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r4, r4, r3\n\t" +#elif defined(__clang__) "ands r4, r3\n\t" #else "and r4, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r3\n\t" +#elif defined(__clang__) "ands r5, r3\n\t" #else "and r5, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r4\n\t" +#elif defined(__clang__) "sbcs r6, r4\n\t" #else "sbc r6, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r7, r7, r5\n\t" +#elif defined(__clang__) "sbcs r7, r5\n\t" #else "sbc r7, r5\n\t" @@ -62020,22 +187988,30 @@ SP_NOINLINE static void sp_1024_mont_tpl_32(sp_digit* r, const sp_digit* a, "ldr r7, [%[r], #20]\n\t" "ldr r4, [%[m], #16]\n\t" "ldr r5, [%[m], #20]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r4, r4, r3\n\t" +#elif defined(__clang__) "ands r4, r3\n\t" #else "and r4, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r3\n\t" +#elif defined(__clang__) "ands r5, r3\n\t" #else "and r5, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r4\n\t" +#elif defined(__clang__) "sbcs r6, r4\n\t" #else "sbc r6, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r7, r7, r5\n\t" +#elif defined(__clang__) "sbcs r7, r5\n\t" #else "sbc r7, r5\n\t" @@ -62046,22 +188022,30 @@ SP_NOINLINE static void sp_1024_mont_tpl_32(sp_digit* r, const sp_digit* a, "ldr r7, [%[r], #28]\n\t" "ldr r4, [%[m], #24]\n\t" "ldr r5, [%[m], #28]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r4, r4, r3\n\t" +#elif defined(__clang__) "ands r4, r3\n\t" #else "and r4, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r3\n\t" +#elif defined(__clang__) "ands r5, r3\n\t" #else "and r5, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r4\n\t" +#elif defined(__clang__) "sbcs r6, r4\n\t" #else "sbc r6, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r7, r7, r5\n\t" +#elif defined(__clang__) "sbcs r7, r5\n\t" #else "sbc r7, r5\n\t" @@ -62072,22 +188056,30 @@ SP_NOINLINE static void sp_1024_mont_tpl_32(sp_digit* r, const sp_digit* a, "ldr r7, [%[r], #36]\n\t" "ldr r4, [%[m], #32]\n\t" "ldr r5, [%[m], #36]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r4, r4, r3\n\t" +#elif defined(__clang__) "ands r4, r3\n\t" #else "and r4, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r3\n\t" +#elif defined(__clang__) "ands r5, r3\n\t" #else "and r5, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r4\n\t" +#elif defined(__clang__) "sbcs r6, r4\n\t" #else "sbc r6, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r7, r7, r5\n\t" +#elif defined(__clang__) "sbcs r7, r5\n\t" #else "sbc r7, r5\n\t" @@ -62098,22 +188090,30 @@ SP_NOINLINE static void sp_1024_mont_tpl_32(sp_digit* r, const sp_digit* a, "ldr r7, [%[r], #44]\n\t" "ldr r4, [%[m], #40]\n\t" "ldr r5, [%[m], #44]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r4, r4, r3\n\t" +#elif defined(__clang__) "ands r4, r3\n\t" #else "and r4, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r3\n\t" +#elif defined(__clang__) "ands r5, r3\n\t" #else "and r5, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r4\n\t" +#elif defined(__clang__) "sbcs r6, r4\n\t" #else "sbc r6, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r7, r7, r5\n\t" +#elif defined(__clang__) "sbcs r7, r5\n\t" #else "sbc r7, r5\n\t" @@ -62124,22 +188124,30 @@ SP_NOINLINE static void sp_1024_mont_tpl_32(sp_digit* r, const sp_digit* a, "ldr r7, [%[r], #52]\n\t" "ldr r4, [%[m], #48]\n\t" "ldr r5, [%[m], #52]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r4, r4, r3\n\t" +#elif defined(__clang__) "ands r4, r3\n\t" #else "and r4, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r3\n\t" +#elif defined(__clang__) "ands r5, r3\n\t" #else "and r5, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r4\n\t" +#elif defined(__clang__) "sbcs r6, r4\n\t" #else "sbc r6, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r7, r7, r5\n\t" +#elif defined(__clang__) "sbcs r7, r5\n\t" #else "sbc r7, r5\n\t" @@ -62150,22 +188158,30 @@ SP_NOINLINE static void sp_1024_mont_tpl_32(sp_digit* r, const sp_digit* a, "ldr r7, [%[r], #60]\n\t" "ldr r4, [%[m], #56]\n\t" "ldr r5, [%[m], #60]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r4, r4, r3\n\t" +#elif defined(__clang__) "ands r4, r3\n\t" #else "and r4, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r3\n\t" +#elif defined(__clang__) "ands r5, r3\n\t" #else "and r5, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r4\n\t" +#elif defined(__clang__) "sbcs r6, r4\n\t" #else "sbc r6, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r7, r7, r5\n\t" +#elif defined(__clang__) "sbcs r7, r5\n\t" #else "sbc r7, r5\n\t" @@ -62176,22 +188192,30 @@ SP_NOINLINE static void sp_1024_mont_tpl_32(sp_digit* r, const sp_digit* a, "ldr r7, [%[r], #68]\n\t" "ldr r4, [%[m], #64]\n\t" "ldr r5, [%[m], #68]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r4, r4, r3\n\t" +#elif defined(__clang__) "ands r4, r3\n\t" #else "and r4, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r3\n\t" +#elif defined(__clang__) "ands r5, r3\n\t" #else "and r5, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r4\n\t" +#elif defined(__clang__) "sbcs r6, r4\n\t" #else "sbc r6, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r7, r7, r5\n\t" +#elif defined(__clang__) "sbcs r7, r5\n\t" #else "sbc r7, r5\n\t" @@ -62202,22 +188226,30 @@ SP_NOINLINE static void sp_1024_mont_tpl_32(sp_digit* r, const sp_digit* a, "ldr r7, [%[r], #76]\n\t" "ldr r4, [%[m], #72]\n\t" "ldr r5, [%[m], #76]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r4, r4, r3\n\t" +#elif defined(__clang__) "ands r4, r3\n\t" #else "and r4, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r3\n\t" +#elif defined(__clang__) "ands r5, r3\n\t" #else "and r5, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r4\n\t" +#elif defined(__clang__) "sbcs r6, r4\n\t" #else "sbc r6, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r7, r7, r5\n\t" +#elif defined(__clang__) "sbcs r7, r5\n\t" #else "sbc r7, r5\n\t" @@ -62228,22 +188260,30 @@ SP_NOINLINE static void sp_1024_mont_tpl_32(sp_digit* r, const sp_digit* a, "ldr r7, [%[r], #84]\n\t" "ldr r4, [%[m], #80]\n\t" "ldr r5, [%[m], #84]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r4, r4, r3\n\t" +#elif defined(__clang__) "ands r4, r3\n\t" #else "and r4, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r3\n\t" +#elif defined(__clang__) "ands r5, r3\n\t" #else "and r5, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r4\n\t" +#elif defined(__clang__) "sbcs r6, r4\n\t" #else "sbc r6, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r7, r7, r5\n\t" +#elif defined(__clang__) "sbcs r7, r5\n\t" #else "sbc r7, r5\n\t" @@ -62254,22 +188294,30 @@ SP_NOINLINE static void sp_1024_mont_tpl_32(sp_digit* r, const sp_digit* a, "ldr r7, [%[r], #92]\n\t" "ldr r4, [%[m], #88]\n\t" "ldr r5, [%[m], #92]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r4, r4, r3\n\t" +#elif defined(__clang__) "ands r4, r3\n\t" #else "and r4, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r3\n\t" +#elif defined(__clang__) "ands r5, r3\n\t" #else "and r5, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r4\n\t" +#elif defined(__clang__) "sbcs r6, r4\n\t" #else "sbc r6, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r7, r7, r5\n\t" +#elif defined(__clang__) "sbcs r7, r5\n\t" #else "sbc r7, r5\n\t" @@ -62280,22 +188328,30 @@ SP_NOINLINE static void sp_1024_mont_tpl_32(sp_digit* r, const sp_digit* a, "ldr r7, [%[r], #100]\n\t" "ldr r4, [%[m], #96]\n\t" "ldr r5, [%[m], #100]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r4, r4, r3\n\t" +#elif defined(__clang__) "ands r4, r3\n\t" #else "and r4, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r3\n\t" +#elif defined(__clang__) "ands r5, r3\n\t" #else "and r5, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r4\n\t" +#elif defined(__clang__) "sbcs r6, r4\n\t" #else "sbc r6, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r7, r7, r5\n\t" +#elif defined(__clang__) "sbcs r7, r5\n\t" #else "sbc r7, r5\n\t" @@ -62306,22 +188362,30 @@ SP_NOINLINE static void sp_1024_mont_tpl_32(sp_digit* r, const sp_digit* a, "ldr r7, [%[r], #108]\n\t" "ldr r4, [%[m], #104]\n\t" "ldr r5, [%[m], #108]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r4, r4, r3\n\t" +#elif defined(__clang__) "ands r4, r3\n\t" #else "and r4, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r3\n\t" +#elif defined(__clang__) "ands r5, r3\n\t" #else "and r5, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r4\n\t" +#elif defined(__clang__) "sbcs r6, r4\n\t" #else "sbc r6, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r7, r7, r5\n\t" +#elif defined(__clang__) "sbcs r7, r5\n\t" #else "sbc r7, r5\n\t" @@ -62332,22 +188396,30 @@ SP_NOINLINE static void sp_1024_mont_tpl_32(sp_digit* r, const sp_digit* a, "ldr r7, [%[r], #116]\n\t" "ldr r4, [%[m], #112]\n\t" "ldr r5, [%[m], #116]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r4, r4, r3\n\t" +#elif defined(__clang__) "ands r4, r3\n\t" #else "and r4, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r3\n\t" +#elif defined(__clang__) "ands r5, r3\n\t" #else "and r5, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r4\n\t" +#elif defined(__clang__) "sbcs r6, r4\n\t" #else "sbc r6, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r7, r7, r5\n\t" +#elif defined(__clang__) "sbcs r7, r5\n\t" #else "sbc r7, r5\n\t" @@ -62358,22 +188430,30 @@ SP_NOINLINE static void sp_1024_mont_tpl_32(sp_digit* r, const sp_digit* a, "ldr r7, [%[r], #124]\n\t" "ldr r4, [%[m], #120]\n\t" "ldr r5, [%[m], #124]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r4, r4, r3\n\t" +#elif defined(__clang__) "ands r4, r3\n\t" #else "and r4, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r5, r5, r3\n\t" +#elif defined(__clang__) "ands r5, r3\n\t" #else "and r5, r3\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r6, r6, r4\n\t" +#elif defined(__clang__) "sbcs r6, r4\n\t" #else "sbc r6, r4\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r7, r7, r5\n\t" +#elif defined(__clang__) "sbcs r7, r5\n\t" #else "sbc r7, r5\n\t" @@ -62401,12 +188481,14 @@ SP_NOINLINE static void sp_1024_mont_sub_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #4]\n\t" "ldr r6, [%[b]]\n\t" "ldr r7, [%[b], #4]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r4, r4, r6\n\t" #else "sub r4, r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -62417,12 +188499,16 @@ SP_NOINLINE static void sp_1024_mont_sub_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #12]\n\t" "ldr r6, [%[b], #8]\n\t" "ldr r7, [%[b], #12]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -62433,12 +188519,16 @@ SP_NOINLINE static void sp_1024_mont_sub_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #20]\n\t" "ldr r6, [%[b], #16]\n\t" "ldr r7, [%[b], #20]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -62449,12 +188539,16 @@ SP_NOINLINE static void sp_1024_mont_sub_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #28]\n\t" "ldr r6, [%[b], #24]\n\t" "ldr r7, [%[b], #28]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -62465,12 +188559,16 @@ SP_NOINLINE static void sp_1024_mont_sub_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #36]\n\t" "ldr r6, [%[b], #32]\n\t" "ldr r7, [%[b], #36]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -62481,12 +188579,16 @@ SP_NOINLINE static void sp_1024_mont_sub_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #44]\n\t" "ldr r6, [%[b], #40]\n\t" "ldr r7, [%[b], #44]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -62497,12 +188599,16 @@ SP_NOINLINE static void sp_1024_mont_sub_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #52]\n\t" "ldr r6, [%[b], #48]\n\t" "ldr r7, [%[b], #52]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -62513,12 +188619,16 @@ SP_NOINLINE static void sp_1024_mont_sub_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #60]\n\t" "ldr r6, [%[b], #56]\n\t" "ldr r7, [%[b], #60]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -62529,12 +188639,16 @@ SP_NOINLINE static void sp_1024_mont_sub_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #68]\n\t" "ldr r6, [%[b], #64]\n\t" "ldr r7, [%[b], #68]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -62545,12 +188659,16 @@ SP_NOINLINE static void sp_1024_mont_sub_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #76]\n\t" "ldr r6, [%[b], #72]\n\t" "ldr r7, [%[b], #76]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -62561,12 +188679,16 @@ SP_NOINLINE static void sp_1024_mont_sub_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #84]\n\t" "ldr r6, [%[b], #80]\n\t" "ldr r7, [%[b], #84]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -62577,12 +188699,16 @@ SP_NOINLINE static void sp_1024_mont_sub_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #92]\n\t" "ldr r6, [%[b], #88]\n\t" "ldr r7, [%[b], #92]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -62593,12 +188719,16 @@ SP_NOINLINE static void sp_1024_mont_sub_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #100]\n\t" "ldr r6, [%[b], #96]\n\t" "ldr r7, [%[b], #100]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -62609,12 +188739,16 @@ SP_NOINLINE static void sp_1024_mont_sub_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #108]\n\t" "ldr r6, [%[b], #104]\n\t" "ldr r7, [%[b], #108]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -62625,12 +188759,16 @@ SP_NOINLINE static void sp_1024_mont_sub_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #116]\n\t" "ldr r6, [%[b], #112]\n\t" "ldr r7, [%[b], #116]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" @@ -62641,19 +188779,25 @@ SP_NOINLINE static void sp_1024_mont_sub_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[a], #124]\n\t" "ldr r6, [%[b], #120]\n\t" "ldr r7, [%[b], #124]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r5, r5, r7\n\t" +#elif defined(__clang__) "sbcs r5, r7\n\t" #else "sbc r5, r7\n\t" #endif "str r4, [%[r], #120]\n\t" "str r5, [%[r], #124]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs %[b], %[b], %[b]\n\t" +#elif defined(__clang__) "sbcs %[b], %[b]\n\t" #else "sbc %[b], %[b]\n\t" @@ -62662,22 +188806,28 @@ SP_NOINLINE static void sp_1024_mont_sub_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #4]\n\t" "ldr r6, [%[m]]\n\t" "ldr r7, [%[m], #4]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, %[b]\n\t" +#elif defined(__clang__) "ands r6, %[b]\n\t" #else "and r6, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, %[b]\n\t" +#elif defined(__clang__) "ands r7, %[b]\n\t" #else "and r7, %[b]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, r6\n\t" #else "add r4, r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" @@ -62688,22 +188838,30 @@ SP_NOINLINE static void sp_1024_mont_sub_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #12]\n\t" "ldr r6, [%[m], #8]\n\t" "ldr r7, [%[m], #12]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, %[b]\n\t" +#elif defined(__clang__) "ands r6, %[b]\n\t" #else "and r6, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, %[b]\n\t" +#elif defined(__clang__) "ands r7, %[b]\n\t" #else "and r7, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) "adcs r4, r6\n\t" #else "adc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" @@ -62714,22 +188872,30 @@ SP_NOINLINE static void sp_1024_mont_sub_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #20]\n\t" "ldr r6, [%[m], #16]\n\t" "ldr r7, [%[m], #20]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, %[b]\n\t" +#elif defined(__clang__) "ands r6, %[b]\n\t" #else "and r6, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, %[b]\n\t" +#elif defined(__clang__) "ands r7, %[b]\n\t" #else "and r7, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) "adcs r4, r6\n\t" #else "adc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" @@ -62740,22 +188906,30 @@ SP_NOINLINE static void sp_1024_mont_sub_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #28]\n\t" "ldr r6, [%[m], #24]\n\t" "ldr r7, [%[m], #28]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, %[b]\n\t" +#elif defined(__clang__) "ands r6, %[b]\n\t" #else "and r6, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, %[b]\n\t" +#elif defined(__clang__) "ands r7, %[b]\n\t" #else "and r7, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) "adcs r4, r6\n\t" #else "adc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" @@ -62766,22 +188940,30 @@ SP_NOINLINE static void sp_1024_mont_sub_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #36]\n\t" "ldr r6, [%[m], #32]\n\t" "ldr r7, [%[m], #36]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, %[b]\n\t" +#elif defined(__clang__) "ands r6, %[b]\n\t" #else "and r6, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, %[b]\n\t" +#elif defined(__clang__) "ands r7, %[b]\n\t" #else "and r7, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) "adcs r4, r6\n\t" #else "adc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" @@ -62792,22 +188974,30 @@ SP_NOINLINE static void sp_1024_mont_sub_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #44]\n\t" "ldr r6, [%[m], #40]\n\t" "ldr r7, [%[m], #44]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, %[b]\n\t" +#elif defined(__clang__) "ands r6, %[b]\n\t" #else "and r6, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, %[b]\n\t" +#elif defined(__clang__) "ands r7, %[b]\n\t" #else "and r7, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) "adcs r4, r6\n\t" #else "adc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" @@ -62818,22 +189008,30 @@ SP_NOINLINE static void sp_1024_mont_sub_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #52]\n\t" "ldr r6, [%[m], #48]\n\t" "ldr r7, [%[m], #52]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, %[b]\n\t" +#elif defined(__clang__) "ands r6, %[b]\n\t" #else "and r6, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, %[b]\n\t" +#elif defined(__clang__) "ands r7, %[b]\n\t" #else "and r7, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) "adcs r4, r6\n\t" #else "adc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" @@ -62844,22 +189042,30 @@ SP_NOINLINE static void sp_1024_mont_sub_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #60]\n\t" "ldr r6, [%[m], #56]\n\t" "ldr r7, [%[m], #60]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, %[b]\n\t" +#elif defined(__clang__) "ands r6, %[b]\n\t" #else "and r6, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, %[b]\n\t" +#elif defined(__clang__) "ands r7, %[b]\n\t" #else "and r7, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) "adcs r4, r6\n\t" #else "adc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" @@ -62870,22 +189076,30 @@ SP_NOINLINE static void sp_1024_mont_sub_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #68]\n\t" "ldr r6, [%[m], #64]\n\t" "ldr r7, [%[m], #68]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, %[b]\n\t" +#elif defined(__clang__) "ands r6, %[b]\n\t" #else "and r6, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, %[b]\n\t" +#elif defined(__clang__) "ands r7, %[b]\n\t" #else "and r7, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) "adcs r4, r6\n\t" #else "adc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" @@ -62896,22 +189110,30 @@ SP_NOINLINE static void sp_1024_mont_sub_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #76]\n\t" "ldr r6, [%[m], #72]\n\t" "ldr r7, [%[m], #76]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, %[b]\n\t" +#elif defined(__clang__) "ands r6, %[b]\n\t" #else "and r6, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, %[b]\n\t" +#elif defined(__clang__) "ands r7, %[b]\n\t" #else "and r7, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) "adcs r4, r6\n\t" #else "adc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" @@ -62922,22 +189144,30 @@ SP_NOINLINE static void sp_1024_mont_sub_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #84]\n\t" "ldr r6, [%[m], #80]\n\t" "ldr r7, [%[m], #84]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, %[b]\n\t" +#elif defined(__clang__) "ands r6, %[b]\n\t" #else "and r6, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, %[b]\n\t" +#elif defined(__clang__) "ands r7, %[b]\n\t" #else "and r7, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) "adcs r4, r6\n\t" #else "adc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" @@ -62948,22 +189178,30 @@ SP_NOINLINE static void sp_1024_mont_sub_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #92]\n\t" "ldr r6, [%[m], #88]\n\t" "ldr r7, [%[m], #92]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, %[b]\n\t" +#elif defined(__clang__) "ands r6, %[b]\n\t" #else "and r6, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, %[b]\n\t" +#elif defined(__clang__) "ands r7, %[b]\n\t" #else "and r7, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) "adcs r4, r6\n\t" #else "adc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" @@ -62974,22 +189212,30 @@ SP_NOINLINE static void sp_1024_mont_sub_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #100]\n\t" "ldr r6, [%[m], #96]\n\t" "ldr r7, [%[m], #100]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, %[b]\n\t" +#elif defined(__clang__) "ands r6, %[b]\n\t" #else "and r6, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, %[b]\n\t" +#elif defined(__clang__) "ands r7, %[b]\n\t" #else "and r7, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) "adcs r4, r6\n\t" #else "adc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" @@ -63000,22 +189246,30 @@ SP_NOINLINE static void sp_1024_mont_sub_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #108]\n\t" "ldr r6, [%[m], #104]\n\t" "ldr r7, [%[m], #108]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, %[b]\n\t" +#elif defined(__clang__) "ands r6, %[b]\n\t" #else "and r6, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, %[b]\n\t" +#elif defined(__clang__) "ands r7, %[b]\n\t" #else "and r7, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) "adcs r4, r6\n\t" #else "adc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" @@ -63026,22 +189280,30 @@ SP_NOINLINE static void sp_1024_mont_sub_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #116]\n\t" "ldr r6, [%[m], #112]\n\t" "ldr r7, [%[m], #116]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, %[b]\n\t" +#elif defined(__clang__) "ands r6, %[b]\n\t" #else "and r6, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, %[b]\n\t" +#elif defined(__clang__) "ands r7, %[b]\n\t" #else "and r7, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) "adcs r4, r6\n\t" #else "adc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" @@ -63052,22 +189314,30 @@ SP_NOINLINE static void sp_1024_mont_sub_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #124]\n\t" "ldr r6, [%[m], #120]\n\t" "ldr r7, [%[m], #124]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, %[b]\n\t" +#elif defined(__clang__) "ands r6, %[b]\n\t" #else "and r6, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, %[b]\n\t" +#elif defined(__clang__) "ands r7, %[b]\n\t" #else "and r7, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) "adcs r4, r6\n\t" #else "adc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" @@ -63075,7 +189345,9 @@ SP_NOINLINE static void sp_1024_mont_sub_32(sp_digit* r, const sp_digit* a, "str r4, [%[r], #120]\n\t" "str r5, [%[r], #124]\n\t" "movs r6, #0\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs %[b], %[b], r6\n\t" +#elif defined(__clang__) "adcs %[b], r6\n\t" #else "adc %[b], r6\n\t" @@ -63084,22 +189356,28 @@ SP_NOINLINE static void sp_1024_mont_sub_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #4]\n\t" "ldr r6, [%[m]]\n\t" "ldr r7, [%[m], #4]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, %[b]\n\t" +#elif defined(__clang__) "ands r6, %[b]\n\t" #else "and r6, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, %[b]\n\t" +#elif defined(__clang__) "ands r7, %[b]\n\t" #else "and r7, %[b]\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r4, r4, r6\n\t" #else "add r4, r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" @@ -63110,22 +189388,30 @@ SP_NOINLINE static void sp_1024_mont_sub_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #12]\n\t" "ldr r6, [%[m], #8]\n\t" "ldr r7, [%[m], #12]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, %[b]\n\t" +#elif defined(__clang__) "ands r6, %[b]\n\t" #else "and r6, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, %[b]\n\t" +#elif defined(__clang__) "ands r7, %[b]\n\t" #else "and r7, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) "adcs r4, r6\n\t" #else "adc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" @@ -63136,22 +189422,30 @@ SP_NOINLINE static void sp_1024_mont_sub_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #20]\n\t" "ldr r6, [%[m], #16]\n\t" "ldr r7, [%[m], #20]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, %[b]\n\t" +#elif defined(__clang__) "ands r6, %[b]\n\t" #else "and r6, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, %[b]\n\t" +#elif defined(__clang__) "ands r7, %[b]\n\t" #else "and r7, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) "adcs r4, r6\n\t" #else "adc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" @@ -63162,22 +189456,30 @@ SP_NOINLINE static void sp_1024_mont_sub_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #28]\n\t" "ldr r6, [%[m], #24]\n\t" "ldr r7, [%[m], #28]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, %[b]\n\t" +#elif defined(__clang__) "ands r6, %[b]\n\t" #else "and r6, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, %[b]\n\t" +#elif defined(__clang__) "ands r7, %[b]\n\t" #else "and r7, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) "adcs r4, r6\n\t" #else "adc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" @@ -63188,22 +189490,30 @@ SP_NOINLINE static void sp_1024_mont_sub_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #36]\n\t" "ldr r6, [%[m], #32]\n\t" "ldr r7, [%[m], #36]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, %[b]\n\t" +#elif defined(__clang__) "ands r6, %[b]\n\t" #else "and r6, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, %[b]\n\t" +#elif defined(__clang__) "ands r7, %[b]\n\t" #else "and r7, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) "adcs r4, r6\n\t" #else "adc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" @@ -63214,22 +189524,30 @@ SP_NOINLINE static void sp_1024_mont_sub_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #44]\n\t" "ldr r6, [%[m], #40]\n\t" "ldr r7, [%[m], #44]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, %[b]\n\t" +#elif defined(__clang__) "ands r6, %[b]\n\t" #else "and r6, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, %[b]\n\t" +#elif defined(__clang__) "ands r7, %[b]\n\t" #else "and r7, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) "adcs r4, r6\n\t" #else "adc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" @@ -63240,22 +189558,30 @@ SP_NOINLINE static void sp_1024_mont_sub_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #52]\n\t" "ldr r6, [%[m], #48]\n\t" "ldr r7, [%[m], #52]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, %[b]\n\t" +#elif defined(__clang__) "ands r6, %[b]\n\t" #else "and r6, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, %[b]\n\t" +#elif defined(__clang__) "ands r7, %[b]\n\t" #else "and r7, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) "adcs r4, r6\n\t" #else "adc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" @@ -63266,22 +189592,30 @@ SP_NOINLINE static void sp_1024_mont_sub_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #60]\n\t" "ldr r6, [%[m], #56]\n\t" "ldr r7, [%[m], #60]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, %[b]\n\t" +#elif defined(__clang__) "ands r6, %[b]\n\t" #else "and r6, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, %[b]\n\t" +#elif defined(__clang__) "ands r7, %[b]\n\t" #else "and r7, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) "adcs r4, r6\n\t" #else "adc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" @@ -63292,22 +189626,30 @@ SP_NOINLINE static void sp_1024_mont_sub_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #68]\n\t" "ldr r6, [%[m], #64]\n\t" "ldr r7, [%[m], #68]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, %[b]\n\t" +#elif defined(__clang__) "ands r6, %[b]\n\t" #else "and r6, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, %[b]\n\t" +#elif defined(__clang__) "ands r7, %[b]\n\t" #else "and r7, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) "adcs r4, r6\n\t" #else "adc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" @@ -63318,22 +189660,30 @@ SP_NOINLINE static void sp_1024_mont_sub_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #76]\n\t" "ldr r6, [%[m], #72]\n\t" "ldr r7, [%[m], #76]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, %[b]\n\t" +#elif defined(__clang__) "ands r6, %[b]\n\t" #else "and r6, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, %[b]\n\t" +#elif defined(__clang__) "ands r7, %[b]\n\t" #else "and r7, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) "adcs r4, r6\n\t" #else "adc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" @@ -63344,22 +189694,30 @@ SP_NOINLINE static void sp_1024_mont_sub_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #84]\n\t" "ldr r6, [%[m], #80]\n\t" "ldr r7, [%[m], #84]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, %[b]\n\t" +#elif defined(__clang__) "ands r6, %[b]\n\t" #else "and r6, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, %[b]\n\t" +#elif defined(__clang__) "ands r7, %[b]\n\t" #else "and r7, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) "adcs r4, r6\n\t" #else "adc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" @@ -63370,22 +189728,30 @@ SP_NOINLINE static void sp_1024_mont_sub_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #92]\n\t" "ldr r6, [%[m], #88]\n\t" "ldr r7, [%[m], #92]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, %[b]\n\t" +#elif defined(__clang__) "ands r6, %[b]\n\t" #else "and r6, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, %[b]\n\t" +#elif defined(__clang__) "ands r7, %[b]\n\t" #else "and r7, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) "adcs r4, r6\n\t" #else "adc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" @@ -63396,22 +189762,30 @@ SP_NOINLINE static void sp_1024_mont_sub_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #100]\n\t" "ldr r6, [%[m], #96]\n\t" "ldr r7, [%[m], #100]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, %[b]\n\t" +#elif defined(__clang__) "ands r6, %[b]\n\t" #else "and r6, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, %[b]\n\t" +#elif defined(__clang__) "ands r7, %[b]\n\t" #else "and r7, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) "adcs r4, r6\n\t" #else "adc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" @@ -63422,22 +189796,30 @@ SP_NOINLINE static void sp_1024_mont_sub_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #108]\n\t" "ldr r6, [%[m], #104]\n\t" "ldr r7, [%[m], #108]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, %[b]\n\t" +#elif defined(__clang__) "ands r6, %[b]\n\t" #else "and r6, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, %[b]\n\t" +#elif defined(__clang__) "ands r7, %[b]\n\t" #else "and r7, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) "adcs r4, r6\n\t" #else "adc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" @@ -63448,22 +189830,30 @@ SP_NOINLINE static void sp_1024_mont_sub_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #116]\n\t" "ldr r6, [%[m], #112]\n\t" "ldr r7, [%[m], #116]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, %[b]\n\t" +#elif defined(__clang__) "ands r6, %[b]\n\t" #else "and r6, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, %[b]\n\t" +#elif defined(__clang__) "ands r7, %[b]\n\t" #else "and r7, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) "adcs r4, r6\n\t" #else "adc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" @@ -63474,22 +189864,30 @@ SP_NOINLINE static void sp_1024_mont_sub_32(sp_digit* r, const sp_digit* a, "ldr r5, [%[r], #124]\n\t" "ldr r6, [%[m], #120]\n\t" "ldr r7, [%[m], #124]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, %[b]\n\t" +#elif defined(__clang__) "ands r6, %[b]\n\t" #else "and r6, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r7, r7, %[b]\n\t" +#elif defined(__clang__) "ands r7, %[b]\n\t" #else "and r7, %[b]\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r6\n\t" +#elif defined(__clang__) "adcs r4, r6\n\t" #else "adc r4, r6\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r7\n\t" +#elif defined(__clang__) "adcs r5, r7\n\t" #else "adc r5, r7\n\t" @@ -63519,38 +189917,44 @@ SP_NOINLINE static sp_digit sp_1024_cond_add_32(sp_digit* r, const sp_digit* a, "mov r8, r5\n\t" "movs r7, #0\n\t" "\n" - "L_sp_1024_cond_add_32_words_%=: \n\t" + "L_sp_1024_cond_add_32_words_%=:\n\t" "ldr r6, [%[b], r7]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "ands r6, r6, %[m]\n\t" +#elif defined(__clang__) "ands r6, %[m]\n\t" #else "and r6, %[m]\n\t" #endif "movs r5, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r5, r5, #1\n\t" #else "sub r5, r5, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r5, r5, r4\n\t" #else "add r5, r5, r4\n\t" #endif "ldr r5, [%[a], r7]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r5, r5, r6\n\t" +#elif defined(__clang__) "adcs r5, r6\n\t" #else "adc r5, r6\n\t" #endif "movs r4, #0\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "adcs r4, r4, r4\n\t" +#elif defined(__clang__) "adcs r4, r4\n\t" #else "adc r4, r4\n\t" #endif "str r5, [%[r], r7]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r7, r7, #4\n\t" #else "add r7, r7, #4\n\t" @@ -63575,532 +189979,594 @@ static void sp_1024_rshift1_32(sp_digit* r, const sp_digit* a) __asm__ __volatile__ ( "ldr r2, [%[a]]\n\t" "ldr r3, [%[a], #4]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r2, r2, #1\n\t" #else "lsr r2, r2, #1\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r3, #31\n\t" #else "lsl r5, r3, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r3, r3, #1\n\t" #else "lsr r3, r3, #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r2, r2, r5\n\t" +#elif defined(__clang__) "orrs r2, r5\n\t" #else "orr r2, r5\n\t" #endif "ldr r4, [%[a], #8]\n\t" "str r2, [%[r]]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r4, #31\n\t" #else "lsl r5, r4, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r4, r4, #1\n\t" #else "lsr r4, r4, #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r5\n\t" +#elif defined(__clang__) "orrs r3, r5\n\t" #else "orr r3, r5\n\t" #endif "ldr r2, [%[a], #12]\n\t" "str r3, [%[r], #4]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r2, #31\n\t" #else "lsl r5, r2, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r2, r2, #1\n\t" #else "lsr r2, r2, #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r5\n\t" +#elif defined(__clang__) "orrs r4, r5\n\t" #else "orr r4, r5\n\t" #endif "ldr r3, [%[a], #16]\n\t" "str r4, [%[r], #8]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r3, #31\n\t" #else "lsl r5, r3, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r3, r3, #1\n\t" #else "lsr r3, r3, #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r2, r2, r5\n\t" +#elif defined(__clang__) "orrs r2, r5\n\t" #else "orr r2, r5\n\t" #endif "ldr r4, [%[a], #20]\n\t" "str r2, [%[r], #12]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r4, #31\n\t" #else "lsl r5, r4, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r4, r4, #1\n\t" #else "lsr r4, r4, #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r5\n\t" +#elif defined(__clang__) "orrs r3, r5\n\t" #else "orr r3, r5\n\t" #endif "ldr r2, [%[a], #24]\n\t" "str r3, [%[r], #16]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r2, #31\n\t" #else "lsl r5, r2, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r2, r2, #1\n\t" #else "lsr r2, r2, #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r5\n\t" +#elif defined(__clang__) "orrs r4, r5\n\t" #else "orr r4, r5\n\t" #endif "ldr r3, [%[a], #28]\n\t" "str r4, [%[r], #20]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r3, #31\n\t" #else "lsl r5, r3, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r3, r3, #1\n\t" #else "lsr r3, r3, #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r2, r2, r5\n\t" +#elif defined(__clang__) "orrs r2, r5\n\t" #else "orr r2, r5\n\t" #endif "ldr r4, [%[a], #32]\n\t" "str r2, [%[r], #24]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r4, #31\n\t" #else "lsl r5, r4, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r4, r4, #1\n\t" #else "lsr r4, r4, #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r5\n\t" +#elif defined(__clang__) "orrs r3, r5\n\t" #else "orr r3, r5\n\t" #endif "ldr r2, [%[a], #36]\n\t" "str r3, [%[r], #28]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r2, #31\n\t" #else "lsl r5, r2, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r2, r2, #1\n\t" #else "lsr r2, r2, #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r5\n\t" +#elif defined(__clang__) "orrs r4, r5\n\t" #else "orr r4, r5\n\t" #endif "ldr r3, [%[a], #40]\n\t" "str r4, [%[r], #32]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r3, #31\n\t" #else "lsl r5, r3, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r3, r3, #1\n\t" #else "lsr r3, r3, #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r2, r2, r5\n\t" +#elif defined(__clang__) "orrs r2, r5\n\t" #else "orr r2, r5\n\t" #endif "ldr r4, [%[a], #44]\n\t" "str r2, [%[r], #36]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r4, #31\n\t" #else "lsl r5, r4, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r4, r4, #1\n\t" #else "lsr r4, r4, #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r5\n\t" +#elif defined(__clang__) "orrs r3, r5\n\t" #else "orr r3, r5\n\t" #endif "ldr r2, [%[a], #48]\n\t" "str r3, [%[r], #40]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r2, #31\n\t" #else "lsl r5, r2, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r2, r2, #1\n\t" #else "lsr r2, r2, #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r5\n\t" +#elif defined(__clang__) "orrs r4, r5\n\t" #else "orr r4, r5\n\t" #endif "ldr r3, [%[a], #52]\n\t" "str r4, [%[r], #44]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r3, #31\n\t" #else "lsl r5, r3, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r3, r3, #1\n\t" #else "lsr r3, r3, #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r2, r2, r5\n\t" +#elif defined(__clang__) "orrs r2, r5\n\t" #else "orr r2, r5\n\t" #endif "ldr r4, [%[a], #56]\n\t" "str r2, [%[r], #48]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r4, #31\n\t" #else "lsl r5, r4, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r4, r4, #1\n\t" #else "lsr r4, r4, #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r5\n\t" +#elif defined(__clang__) "orrs r3, r5\n\t" #else "orr r3, r5\n\t" #endif "ldr r2, [%[a], #60]\n\t" "str r3, [%[r], #52]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r2, #31\n\t" #else "lsl r5, r2, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r2, r2, #1\n\t" #else "lsr r2, r2, #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r5\n\t" +#elif defined(__clang__) "orrs r4, r5\n\t" #else "orr r4, r5\n\t" #endif "ldr r3, [%[a], #64]\n\t" "str r4, [%[r], #56]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r3, #31\n\t" #else "lsl r5, r3, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r3, r3, #1\n\t" #else "lsr r3, r3, #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r2, r2, r5\n\t" +#elif defined(__clang__) "orrs r2, r5\n\t" #else "orr r2, r5\n\t" #endif "ldr r4, [%[a], #68]\n\t" "str r2, [%[r], #60]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r4, #31\n\t" #else "lsl r5, r4, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r4, r4, #1\n\t" #else "lsr r4, r4, #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r5\n\t" +#elif defined(__clang__) "orrs r3, r5\n\t" #else "orr r3, r5\n\t" #endif "ldr r2, [%[a], #72]\n\t" "str r3, [%[r], #64]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r2, #31\n\t" #else "lsl r5, r2, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r2, r2, #1\n\t" #else "lsr r2, r2, #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r5\n\t" +#elif defined(__clang__) "orrs r4, r5\n\t" #else "orr r4, r5\n\t" #endif "ldr r3, [%[a], #76]\n\t" "str r4, [%[r], #68]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r3, #31\n\t" #else "lsl r5, r3, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r3, r3, #1\n\t" #else "lsr r3, r3, #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r2, r2, r5\n\t" +#elif defined(__clang__) "orrs r2, r5\n\t" #else "orr r2, r5\n\t" #endif "ldr r4, [%[a], #80]\n\t" "str r2, [%[r], #72]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r4, #31\n\t" #else "lsl r5, r4, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r4, r4, #1\n\t" #else "lsr r4, r4, #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r5\n\t" +#elif defined(__clang__) "orrs r3, r5\n\t" #else "orr r3, r5\n\t" #endif "ldr r2, [%[a], #84]\n\t" "str r3, [%[r], #76]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r2, #31\n\t" #else "lsl r5, r2, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r2, r2, #1\n\t" #else "lsr r2, r2, #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r5\n\t" +#elif defined(__clang__) "orrs r4, r5\n\t" #else "orr r4, r5\n\t" #endif "ldr r3, [%[a], #88]\n\t" "str r4, [%[r], #80]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r3, #31\n\t" #else "lsl r5, r3, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r3, r3, #1\n\t" #else "lsr r3, r3, #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r2, r2, r5\n\t" +#elif defined(__clang__) "orrs r2, r5\n\t" #else "orr r2, r5\n\t" #endif "ldr r4, [%[a], #92]\n\t" "str r2, [%[r], #84]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r4, #31\n\t" #else "lsl r5, r4, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r4, r4, #1\n\t" #else "lsr r4, r4, #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r5\n\t" +#elif defined(__clang__) "orrs r3, r5\n\t" #else "orr r3, r5\n\t" #endif "ldr r2, [%[a], #96]\n\t" "str r3, [%[r], #88]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r2, #31\n\t" #else "lsl r5, r2, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r2, r2, #1\n\t" #else "lsr r2, r2, #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r5\n\t" +#elif defined(__clang__) "orrs r4, r5\n\t" #else "orr r4, r5\n\t" #endif "ldr r3, [%[a], #100]\n\t" "str r4, [%[r], #92]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r3, #31\n\t" #else "lsl r5, r3, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r3, r3, #1\n\t" #else "lsr r3, r3, #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r2, r2, r5\n\t" +#elif defined(__clang__) "orrs r2, r5\n\t" #else "orr r2, r5\n\t" #endif "ldr r4, [%[a], #104]\n\t" "str r2, [%[r], #96]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r4, #31\n\t" #else "lsl r5, r4, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r4, r4, #1\n\t" #else "lsr r4, r4, #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r5\n\t" +#elif defined(__clang__) "orrs r3, r5\n\t" #else "orr r3, r5\n\t" #endif "ldr r2, [%[a], #108]\n\t" "str r3, [%[r], #100]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r2, #31\n\t" #else "lsl r5, r2, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r2, r2, #1\n\t" #else "lsr r2, r2, #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r5\n\t" +#elif defined(__clang__) "orrs r4, r5\n\t" #else "orr r4, r5\n\t" #endif "ldr r3, [%[a], #112]\n\t" "str r4, [%[r], #104]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r3, #31\n\t" #else "lsl r5, r3, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r3, r3, #1\n\t" #else "lsr r3, r3, #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r2, r2, r5\n\t" +#elif defined(__clang__) "orrs r2, r5\n\t" #else "orr r2, r5\n\t" #endif "ldr r4, [%[a], #116]\n\t" "str r2, [%[r], #108]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r4, #31\n\t" #else "lsl r5, r4, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r4, r4, #1\n\t" #else "lsr r4, r4, #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r3, r3, r5\n\t" +#elif defined(__clang__) "orrs r3, r5\n\t" #else "orr r3, r5\n\t" #endif "ldr r2, [%[a], #120]\n\t" "str r3, [%[r], #112]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r2, #31\n\t" #else "lsl r5, r2, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r2, r2, #1\n\t" #else "lsr r2, r2, #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r4, r4, r5\n\t" +#elif defined(__clang__) "orrs r4, r5\n\t" #else "orr r4, r5\n\t" #endif "ldr r3, [%[a], #124]\n\t" "str r4, [%[r], #116]\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsls r5, r3, #31\n\t" #else "lsl r5, r3, #31\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "lsrs r3, r3, #1\n\t" #else "lsr r3, r3, #1\n\t" #endif -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "orrs r2, r2, r5\n\t" +#elif defined(__clang__) "orrs r2, r5\n\t" #else "orr r2, r5\n\t" @@ -64337,43 +190803,47 @@ SP_NOINLINE static sp_digit sp_1024_sub_32(sp_digit* r, const sp_digit* a, __asm__ __volatile__ ( "movs r6, %[a]\n\t" "movs r3, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds r6, r6, #0x80\n\t" #else "add r6, r6, #0x80\n\t" #endif "\n" - "L_sp_1024_sub_32_word_%=: \n\t" + "L_sp_1024_sub_32_word_%=:\n\t" "movs r5, #0\n\t" -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "subs r5, r5, r3\n\t" #else "sub r5, r5, r3\n\t" #endif "ldr r4, [%[a]]\n\t" "ldr r5, [%[b]]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r5\n\t" +#elif defined(__clang__) "sbcs r4, r5\n\t" #else "sbc r4, r5\n\t" #endif "str r4, [%[r]]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r3\n\t" +#elif defined(__clang__) "sbcs r3, r3\n\t" #else "sbc r3, r3\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[a], %[a], #4\n\t" #else "add %[a], %[a], #4\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[b], %[b], #4\n\t" #else "add %[b], %[b], #4\n\t" #endif -#ifdef __clang__ +#if defined(__clang__) || defined(WOLFSSL_KEIL) "adds %[r], %[r], #4\n\t" #else "add %[r], %[r], #4\n\t" @@ -64399,272 +190869,286 @@ SP_NOINLINE static sp_digit sp_1024_sub_32(sp_digit* r, const sp_digit* a, const sp_digit* b) { __asm__ __volatile__ ( - "movs r3, #0\n\t" - "ldr r4, [%[a]]\n\t" - "ldr r5, [%[a], #4]\n\t" - "ldr r6, [%[b]]\n\t" - "ldr r7, [%[b], #4]\n\t" -#ifdef __clang__ - "subs r4, r4, r6\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#if defined(__clang__) || defined(WOLFSSL_KEIL) + "subs r3, r3, r5\n\t" #else - "sub r4, r4, r6\n\t" + "sub r3, r3, r5\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" -#else - "sbc r5, r7\n\t" -#endif - "str r4, [%[r]]\n\t" - "str r5, [%[r], #4]\n\t" - "ldr r4, [%[a], #8]\n\t" - "ldr r5, [%[a], #12]\n\t" - "ldr r6, [%[b], #8]\n\t" - "ldr r7, [%[b], #12]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #8]\n\t" - "str r5, [%[r], #12]\n\t" - "ldr r4, [%[a], #16]\n\t" - "ldr r5, [%[a], #20]\n\t" - "ldr r6, [%[b], #16]\n\t" - "ldr r7, [%[b], #20]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #16]\n\t" - "str r5, [%[r], #20]\n\t" - "ldr r4, [%[a], #24]\n\t" - "ldr r5, [%[a], #28]\n\t" - "ldr r6, [%[b], #24]\n\t" - "ldr r7, [%[b], #28]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #24]\n\t" - "str r5, [%[r], #28]\n\t" - "ldr r4, [%[a], #32]\n\t" - "ldr r5, [%[a], #36]\n\t" - "ldr r6, [%[b], #32]\n\t" - "ldr r7, [%[b], #36]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #32]\n\t" - "str r5, [%[r], #36]\n\t" - "ldr r4, [%[a], #40]\n\t" - "ldr r5, [%[a], #44]\n\t" - "ldr r6, [%[b], #40]\n\t" - "ldr r7, [%[b], #44]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #40]\n\t" - "str r5, [%[r], #44]\n\t" - "ldr r4, [%[a], #48]\n\t" - "ldr r5, [%[a], #52]\n\t" - "ldr r6, [%[b], #48]\n\t" - "ldr r7, [%[b], #52]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #48]\n\t" - "str r5, [%[r], #52]\n\t" - "ldr r4, [%[a], #56]\n\t" - "ldr r5, [%[a], #60]\n\t" - "ldr r6, [%[b], #56]\n\t" - "ldr r7, [%[b], #60]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #56]\n\t" - "str r5, [%[r], #60]\n\t" - "ldr r4, [%[a], #64]\n\t" - "ldr r5, [%[a], #68]\n\t" - "ldr r6, [%[b], #64]\n\t" - "ldr r7, [%[b], #68]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #64]\n\t" - "str r5, [%[r], #68]\n\t" - "ldr r4, [%[a], #72]\n\t" - "ldr r5, [%[a], #76]\n\t" - "ldr r6, [%[b], #72]\n\t" - "ldr r7, [%[b], #76]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #72]\n\t" - "str r5, [%[r], #76]\n\t" - "ldr r4, [%[a], #80]\n\t" - "ldr r5, [%[a], #84]\n\t" - "ldr r6, [%[b], #80]\n\t" - "ldr r7, [%[b], #84]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #80]\n\t" - "str r5, [%[r], #84]\n\t" - "ldr r4, [%[a], #88]\n\t" - "ldr r5, [%[a], #92]\n\t" - "ldr r6, [%[b], #88]\n\t" - "ldr r7, [%[b], #92]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #88]\n\t" - "str r5, [%[r], #92]\n\t" - "ldr r4, [%[a], #96]\n\t" - "ldr r5, [%[a], #100]\n\t" - "ldr r6, [%[b], #96]\n\t" - "ldr r7, [%[b], #100]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #96]\n\t" - "str r5, [%[r], #100]\n\t" - "ldr r4, [%[a], #104]\n\t" - "ldr r5, [%[a], #108]\n\t" - "ldr r6, [%[b], #104]\n\t" - "ldr r7, [%[b], #108]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #104]\n\t" - "str r5, [%[r], #108]\n\t" - "ldr r4, [%[a], #112]\n\t" - "ldr r5, [%[a], #116]\n\t" - "ldr r6, [%[b], #112]\n\t" - "ldr r7, [%[b], #116]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #112]\n\t" - "str r5, [%[r], #116]\n\t" - "ldr r4, [%[a], #120]\n\t" - "ldr r5, [%[a], #124]\n\t" - "ldr r6, [%[b], #120]\n\t" - "ldr r7, [%[b], #124]\n\t" -#ifdef __clang__ +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) "sbcs r4, r6\n\t" #else "sbc r4, r6\n\t" #endif -#ifdef __clang__ - "sbcs r5, r7\n\t" + "stm %[r]!, {r3, r4}\n\t" + "ldm %[b]!, {r5, r6}\n\t" + "ldm %[a]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r3, r3, r5\n\t" +#elif defined(__clang__) + "sbcs r3, r5\n\t" #else - "sbc r5, r7\n\t" + "sbc r3, r5\n\t" #endif - "str r4, [%[r], #120]\n\t" - "str r5, [%[r], #124]\n\t" -#ifdef __clang__ - "sbcs r3, r3\n\t" +#ifdef WOLFSSL_KEIL + "sbcs r4, r4, r6\n\t" +#elif defined(__clang__) + "sbcs r4, r6\n\t" #else - "sbc r3, r3\n\t" + "sbc r4, r6\n\t" +#endif + "stm %[r]!, {r3, r4}\n\t" +#ifdef WOLFSSL_KEIL + "sbcs %[r], %[r], %[r]\n\t" +#elif defined(__clang__) + "sbcs %[r], %[r]\n\t" +#else + "sbc %[r], %[r]\n\t" #endif - "movs %[r], r3\n\t" : [r] "+r" (r), [a] "+r" (a), [b] "+r" (b) : - : "memory", "r3", "r4", "r5", "r6", "r7" + : "memory", "r3", "r4", "r5", "r6" ); return (uint32_t)(size_t)r; } diff --git a/wolfcrypt/src/sp_cortexm.c b/wolfcrypt/src/sp_cortexm.c index 04defbdbb..b99deec12 100644 --- a/wolfcrypt/src/sp_cortexm.c +++ b/wolfcrypt/src/sp_cortexm.c @@ -59,7 +59,7 @@ #ifdef WOLFSSL_SP_ARM_CORTEX_M_ASM #define SP_PRINT_NUM(var, name, total, words, bits) \ do { \ - int ii \ + int ii; \ fprintf(stderr, name "=0x"); \ for (ii = words - 1; ii >= 0; ii--) \ fprintf(stderr, SP_PRINT_FMT, (var)[ii]); \ diff --git a/wolfcrypt/src/sp_int.c b/wolfcrypt/src/sp_int.c index d414a057d..5ce0660eb 100644 --- a/wolfcrypt/src/sp_int.c +++ b/wolfcrypt/src/sp_int.c @@ -12340,9 +12340,6 @@ int sp_read_unsigned_bin(sp_int* a, const byte* in, word32 inSz) return err; } -#if (!defined(NO_DH) || defined(HAVE_ECC) || defined(WC_RSA_BLINDING) || \ - defined(WOLFSSL_RSA_PUBLIC_ONLY)) && (!defined(WOLFSSL_RSA_VERIFY_ONLY) || \ - defined(HAVE_ECC_KEY_EXPORT)) /* Convert the multi-precision number to an array of bytes in big-endian format. * * The array must be large enough for encoded number - use mp_unsigned_bin_size @@ -12358,8 +12355,6 @@ int sp_to_unsigned_bin(sp_int* a, byte* out) { return sp_to_unsigned_bin_len(a, out, sp_unsigned_bin_size(a)); } -#endif /* (!NO_DH || HAVE_ECC || WC_RSA_BLINDING || WOLFSSL_RSA_PUBLIC_ONLY) - && !WOLFSSL_RSA_VERIFY_ONLY */ /* Convert the multi-precision number to an array of bytes in big-endian format. * diff --git a/wolfcrypt/src/sp_x86_64.c b/wolfcrypt/src/sp_x86_64.c index 85d323b96..dea188767 100644 --- a/wolfcrypt/src/sp_x86_64.c +++ b/wolfcrypt/src/sp_x86_64.c @@ -50,7 +50,7 @@ #ifdef WOLFSSL_SP_X86_64_ASM #define SP_PRINT_NUM(var, name, total, words, bits) \ do { \ - int ii \ + int ii; \ fprintf(stderr, name "=0x"); \ for (ii = words - 1; ii >= 0; ii--) \ fprintf(stderr, SP_PRINT_FMT, (var)[ii]); \