diff --git a/wolfcrypt/src/sp_arm32.c b/wolfcrypt/src/sp_arm32.c index d500965f9..8bdc61501 100644 --- a/wolfcrypt/src/sp_arm32.c +++ b/wolfcrypt/src/sp_arm32.c @@ -4353,6 +4353,10 @@ static sp_digit div_2048_word_32(sp_digit d1, sp_digit d0, sp_digit div) "subs r4, %[d0], r4\n\t" "sbc r5, %[d1], r5\n\t" "add %[r], %[r], r5\n\t" + "umull r4, r5, %[r], %[div]\n\t" + "subs r4, %[d0], r4\n\t" + "sbc r5, %[d1], r5\n\t" + "add %[r], %[r], r5\n\t" "subs r8, %[div], r4\n\t" "sbc r8, r8, r8\n\t" "sub %[r], %[r], r8\n\t" @@ -6177,6 +6181,10 @@ static sp_digit div_2048_word_64(sp_digit d1, sp_digit d0, sp_digit div) "subs r4, %[d0], r4\n\t" "sbc r5, %[d1], r5\n\t" "add %[r], %[r], r5\n\t" + "umull r4, r5, %[r], %[div]\n\t" + "subs r4, %[d0], r4\n\t" + "sbc r5, %[d1], r5\n\t" + "add %[r], %[r], r5\n\t" "subs r8, %[div], r4\n\t" "sbc r8, r8, r8\n\t" "sub %[r], %[r], r8\n\t" @@ -14928,6 +14936,10 @@ static sp_digit div_3072_word_48(sp_digit d1, sp_digit d0, sp_digit div) "subs r4, %[d0], r4\n\t" "sbc r5, %[d1], r5\n\t" "add %[r], %[r], r5\n\t" + "umull r4, r5, %[r], %[div]\n\t" + "subs r4, %[d0], r4\n\t" + "sbc r5, %[d1], r5\n\t" + "add %[r], %[r], r5\n\t" "subs r8, %[div], r4\n\t" "sbc r8, r8, r8\n\t" "sub %[r], %[r], r8\n\t" @@ -17376,6 +17388,10 @@ static sp_digit div_3072_word_96(sp_digit d1, sp_digit d0, sp_digit div) "subs r4, %[d0], r4\n\t" "sbc r5, %[d1], r5\n\t" "add %[r], %[r], r5\n\t" + "umull r4, r5, %[r], %[div]\n\t" + "subs r4, %[d0], r4\n\t" + "sbc r5, %[d1], r5\n\t" + "add %[r], %[r], r5\n\t" "subs r8, %[div], r4\n\t" "sbc r8, r8, r8\n\t" "sub %[r], %[r], r8\n\t" @@ -69645,6 +69661,10 @@ static sp_digit div_4096_word_128(sp_digit d1, sp_digit d0, sp_digit div) "subs r4, %[d0], r4\n\t" "sbc r5, %[d1], r5\n\t" "add %[r], %[r], r5\n\t" + "umull r4, r5, %[r], %[div]\n\t" + "subs r4, %[d0], r4\n\t" + "sbc r5, %[d1], r5\n\t" + "add %[r], %[r], r5\n\t" "subs r8, %[div], r4\n\t" "sbc r8, r8, r8\n\t" "sub %[r], %[r], r8\n\t" @@ -79741,6 +79761,10 @@ static sp_digit div_256_word_8(sp_digit d1, sp_digit d0, sp_digit div) "subs r4, %[d0], r4\n\t" "sbc r5, %[d1], r5\n\t" "add %[r], %[r], r5\n\t" + "umull r4, r5, %[r], %[div]\n\t" + "subs r4, %[d0], r4\n\t" + "sbc r5, %[d1], r5\n\t" + "add %[r], %[r], r5\n\t" "subs r8, %[div], r4\n\t" "sbc r8, r8, r8\n\t" "sub %[r], %[r], r8\n\t" @@ -87913,6 +87937,10 @@ static sp_digit div_384_word_12(sp_digit d1, sp_digit d0, sp_digit div) "subs r4, %[d0], r4\n\t" "sbc r5, %[d1], r5\n\t" "add %[r], %[r], r5\n\t" + "umull r4, r5, %[r], %[div]\n\t" + "subs r4, %[d0], r4\n\t" + "sbc r5, %[d1], r5\n\t" + "add %[r], %[r], r5\n\t" "subs r8, %[div], r4\n\t" "sbc r8, r8, r8\n\t" "sub %[r], %[r], r8\n\t"