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]); \