From 9eb8858fb7b182ed8dd3190789b73a150647e517 Mon Sep 17 00:00:00 2001 From: Sean Parkinson Date: Fri, 19 Jun 2026 09:36:25 +1000 Subject: [PATCH] PPC32 ASM: Use condition register Use condition registers in SHA-256 small code to speed it up. --- wolfcrypt/src/port/ppc32/ppc32-sha256-asm.S | 132 +++++------------- wolfcrypt/src/port/ppc32/ppc32-sha256-asm_c.c | 132 +++++------------- .../src/port/ppc32/ppc32-sha256-asm_cr.c | 132 +++++------------- 3 files changed, 108 insertions(+), 288 deletions(-) diff --git a/wolfcrypt/src/port/ppc32/ppc32-sha256-asm.S b/wolfcrypt/src/port/ppc32/ppc32-sha256-asm.S index 66e9de8713..5f2b2510e9 100644 --- a/wolfcrypt/src/port/ppc32/ppc32-sha256-asm.S +++ b/wolfcrypt/src/port/ppc32/ppc32-sha256-asm.S @@ -3661,6 +3661,8 @@ L_SHA256_transform_len_begin: mtctr 0 # Start of 16 rounds L_SHA256_transform_len_start: + mfctr 5 + cmpwi 7, 5, 1 # Round 0 rotlwi 0, 11, 26 rotlwi 5, 11, 21 @@ -3687,9 +3689,7 @@ L_SHA256_transform_len_start: and 0, 0, 5 xor 0, 0, 8 add 15, 15, 0 - mfctr 5 - cmpwi 0, 5, 1 - beq 0, L_SHA256_transform_len_after_blk_0 + beq 7, L_SHA256_transform_len_after_blk_0 # Calc new W[0] rotlwi 0, 17, 25 rotlwi 5, 17, 14 @@ -3731,9 +3731,7 @@ L_SHA256_transform_len_after_blk_0: and 0, 0, 5 xor 0, 0, 7 add 14, 14, 0 - mfctr 5 - cmpwi 0, 5, 1 - beq 0, L_SHA256_transform_len_after_blk_1 + beq 7, L_SHA256_transform_len_after_blk_1 # Calc new W[1] rotlwi 0, 18, 25 rotlwi 5, 18, 14 @@ -3775,9 +3773,7 @@ L_SHA256_transform_len_after_blk_1: and 0, 0, 5 xor 0, 0, 15 add 12, 12, 0 - mfctr 5 - cmpwi 0, 5, 1 - beq 0, L_SHA256_transform_len_after_blk_2 + beq 7, L_SHA256_transform_len_after_blk_2 # Calc new W[2] rotlwi 0, 19, 25 rotlwi 5, 19, 14 @@ -3819,9 +3815,7 @@ L_SHA256_transform_len_after_blk_2: and 0, 0, 5 xor 0, 0, 14 add 11, 11, 0 - mfctr 5 - cmpwi 0, 5, 1 - beq 0, L_SHA256_transform_len_after_blk_3 + beq 7, L_SHA256_transform_len_after_blk_3 # Calc new W[3] rotlwi 0, 20, 25 rotlwi 5, 20, 14 @@ -3863,9 +3857,7 @@ L_SHA256_transform_len_after_blk_3: and 0, 0, 5 xor 0, 0, 12 add 10, 10, 0 - mfctr 5 - cmpwi 0, 5, 1 - beq 0, L_SHA256_transform_len_after_blk_4 + beq 7, L_SHA256_transform_len_after_blk_4 # Calc new W[4] rotlwi 0, 21, 25 rotlwi 5, 21, 14 @@ -3907,9 +3899,7 @@ L_SHA256_transform_len_after_blk_4: and 0, 0, 5 xor 0, 0, 11 add 9, 9, 0 - mfctr 5 - cmpwi 0, 5, 1 - beq 0, L_SHA256_transform_len_after_blk_5 + beq 7, L_SHA256_transform_len_after_blk_5 # Calc new W[5] rotlwi 0, 22, 25 rotlwi 5, 22, 14 @@ -3951,9 +3941,7 @@ L_SHA256_transform_len_after_blk_5: and 0, 0, 5 xor 0, 0, 10 add 8, 8, 0 - mfctr 5 - cmpwi 0, 5, 1 - beq 0, L_SHA256_transform_len_after_blk_6 + beq 7, L_SHA256_transform_len_after_blk_6 # Calc new W[6] rotlwi 0, 23, 25 rotlwi 5, 23, 14 @@ -3995,9 +3983,7 @@ L_SHA256_transform_len_after_blk_6: and 0, 0, 5 xor 0, 0, 9 add 7, 7, 0 - mfctr 5 - cmpwi 0, 5, 1 - beq 0, L_SHA256_transform_len_after_blk_7 + beq 7, L_SHA256_transform_len_after_blk_7 # Calc new W[7] rotlwi 0, 24, 25 rotlwi 5, 24, 14 @@ -4039,9 +4025,7 @@ L_SHA256_transform_len_after_blk_7: and 0, 0, 5 xor 0, 0, 8 add 15, 15, 0 - mfctr 5 - cmpwi 0, 5, 1 - beq 0, L_SHA256_transform_len_after_blk_8 + beq 7, L_SHA256_transform_len_after_blk_8 # Calc new W[8] rotlwi 0, 25, 25 rotlwi 5, 25, 14 @@ -4083,9 +4067,7 @@ L_SHA256_transform_len_after_blk_8: and 0, 0, 5 xor 0, 0, 7 add 14, 14, 0 - mfctr 5 - cmpwi 0, 5, 1 - beq 0, L_SHA256_transform_len_after_blk_9 + beq 7, L_SHA256_transform_len_after_blk_9 # Calc new W[9] rotlwi 0, 26, 25 rotlwi 5, 26, 14 @@ -4127,9 +4109,7 @@ L_SHA256_transform_len_after_blk_9: and 0, 0, 5 xor 0, 0, 15 add 12, 12, 0 - mfctr 5 - cmpwi 0, 5, 1 - beq 0, L_SHA256_transform_len_after_blk_10 + beq 7, L_SHA256_transform_len_after_blk_10 # Calc new W[10] rotlwi 0, 27, 25 rotlwi 5, 27, 14 @@ -4171,9 +4151,7 @@ L_SHA256_transform_len_after_blk_10: and 0, 0, 5 xor 0, 0, 14 add 11, 11, 0 - mfctr 5 - cmpwi 0, 5, 1 - beq 0, L_SHA256_transform_len_after_blk_11 + beq 7, L_SHA256_transform_len_after_blk_11 # Calc new W[11] rotlwi 0, 28, 25 rotlwi 5, 28, 14 @@ -4215,9 +4193,7 @@ L_SHA256_transform_len_after_blk_11: and 0, 0, 5 xor 0, 0, 12 add 10, 10, 0 - mfctr 5 - cmpwi 0, 5, 1 - beq 0, L_SHA256_transform_len_after_blk_12 + beq 7, L_SHA256_transform_len_after_blk_12 # Calc new W[12] rotlwi 0, 29, 25 rotlwi 5, 29, 14 @@ -4259,9 +4235,7 @@ L_SHA256_transform_len_after_blk_12: and 0, 0, 5 xor 0, 0, 11 add 9, 9, 0 - mfctr 5 - cmpwi 0, 5, 1 - beq 0, L_SHA256_transform_len_after_blk_13 + beq 7, L_SHA256_transform_len_after_blk_13 # Calc new W[13] rotlwi 0, 30, 25 rotlwi 5, 30, 14 @@ -4303,9 +4277,7 @@ L_SHA256_transform_len_after_blk_13: and 0, 0, 5 xor 0, 0, 10 add 8, 8, 0 - mfctr 5 - cmpwi 0, 5, 1 - beq 0, L_SHA256_transform_len_after_blk_14 + beq 7, L_SHA256_transform_len_after_blk_14 # Calc new W[14] rotlwi 0, 31, 25 rotlwi 5, 31, 14 @@ -4347,9 +4319,7 @@ L_SHA256_transform_len_after_blk_14: and 0, 0, 5 xor 0, 0, 9 add 7, 7, 0 - mfctr 5 - cmpwi 0, 5, 1 - beq 0, L_SHA256_transform_len_after_blk_15 + beq 7, L_SHA256_transform_len_after_blk_15 # Calc new W[15] rotlwi 0, 16, 25 rotlwi 5, 16, 14 @@ -6897,6 +6867,8 @@ L_SHA256_transform_len_begin: mtctr 3 # Start of 16 rounds L_SHA256_transform_len_start: + mfctr 5 + cmpwi 7, 5, 1 # Round 0 rotlwi 3, 9, 26 rotlwi 5, 9, 21 @@ -6923,9 +6895,7 @@ L_SHA256_transform_len_start: and 3, 3, 5 xor 3, 3, 4 add 12, 12, 3 - mfctr 5 - cmpwi 3, 5, 1 - beq 3, L_SHA256_transform_len_after_blk_0 + beq 7, L_SHA256_transform_len_after_blk_0 # Calc new W[0] rotlwi 3, 15, 25 rotlwi 5, 15, 14 @@ -6967,9 +6937,7 @@ L_SHA256_transform_len_after_blk_0: and 3, 3, 5 xor 3, 3, 0 add 11, 11, 3 - mfctr 5 - cmpwi 3, 5, 1 - beq 3, L_SHA256_transform_len_after_blk_1 + beq 7, L_SHA256_transform_len_after_blk_1 # Calc new W[1] rotlwi 3, 16, 25 rotlwi 5, 16, 14 @@ -7011,9 +6979,7 @@ L_SHA256_transform_len_after_blk_1: and 3, 3, 5 xor 3, 3, 12 add 10, 10, 3 - mfctr 5 - cmpwi 3, 5, 1 - beq 3, L_SHA256_transform_len_after_blk_2 + beq 7, L_SHA256_transform_len_after_blk_2 # Calc new W[2] rotlwi 3, 17, 25 rotlwi 5, 17, 14 @@ -7055,9 +7021,7 @@ L_SHA256_transform_len_after_blk_2: and 3, 3, 5 xor 3, 3, 11 add 9, 9, 3 - mfctr 5 - cmpwi 3, 5, 1 - beq 3, L_SHA256_transform_len_after_blk_3 + beq 7, L_SHA256_transform_len_after_blk_3 # Calc new W[3] rotlwi 3, 18, 25 rotlwi 5, 18, 14 @@ -7099,9 +7063,7 @@ L_SHA256_transform_len_after_blk_3: and 3, 3, 5 xor 3, 3, 10 add 8, 8, 3 - mfctr 5 - cmpwi 3, 5, 1 - beq 3, L_SHA256_transform_len_after_blk_4 + beq 7, L_SHA256_transform_len_after_blk_4 # Calc new W[4] rotlwi 3, 19, 25 rotlwi 5, 19, 14 @@ -7143,9 +7105,7 @@ L_SHA256_transform_len_after_blk_4: and 3, 3, 5 xor 3, 3, 9 add 7, 7, 3 - mfctr 5 - cmpwi 3, 5, 1 - beq 3, L_SHA256_transform_len_after_blk_5 + beq 7, L_SHA256_transform_len_after_blk_5 # Calc new W[5] rotlwi 3, 20, 25 rotlwi 5, 20, 14 @@ -7187,9 +7147,7 @@ L_SHA256_transform_len_after_blk_5: and 3, 3, 5 xor 3, 3, 8 add 4, 4, 3 - mfctr 5 - cmpwi 3, 5, 1 - beq 3, L_SHA256_transform_len_after_blk_6 + beq 7, L_SHA256_transform_len_after_blk_6 # Calc new W[6] rotlwi 3, 21, 25 rotlwi 5, 21, 14 @@ -7231,9 +7189,7 @@ L_SHA256_transform_len_after_blk_6: and 3, 3, 5 xor 3, 3, 7 add 0, 0, 3 - mfctr 5 - cmpwi 3, 5, 1 - beq 3, L_SHA256_transform_len_after_blk_7 + beq 7, L_SHA256_transform_len_after_blk_7 # Calc new W[7] rotlwi 3, 22, 25 rotlwi 5, 22, 14 @@ -7275,9 +7231,7 @@ L_SHA256_transform_len_after_blk_7: and 3, 3, 5 xor 3, 3, 4 add 12, 12, 3 - mfctr 5 - cmpwi 3, 5, 1 - beq 3, L_SHA256_transform_len_after_blk_8 + beq 7, L_SHA256_transform_len_after_blk_8 # Calc new W[8] rotlwi 3, 23, 25 rotlwi 5, 23, 14 @@ -7319,9 +7273,7 @@ L_SHA256_transform_len_after_blk_8: and 3, 3, 5 xor 3, 3, 0 add 11, 11, 3 - mfctr 5 - cmpwi 3, 5, 1 - beq 3, L_SHA256_transform_len_after_blk_9 + beq 7, L_SHA256_transform_len_after_blk_9 # Calc new W[9] rotlwi 3, 24, 25 rotlwi 5, 24, 14 @@ -7363,9 +7315,7 @@ L_SHA256_transform_len_after_blk_9: and 3, 3, 5 xor 3, 3, 12 add 10, 10, 3 - mfctr 5 - cmpwi 3, 5, 1 - beq 3, L_SHA256_transform_len_after_blk_10 + beq 7, L_SHA256_transform_len_after_blk_10 # Calc new W[10] rotlwi 3, 25, 25 rotlwi 5, 25, 14 @@ -7407,9 +7357,7 @@ L_SHA256_transform_len_after_blk_10: and 3, 3, 5 xor 3, 3, 11 add 9, 9, 3 - mfctr 5 - cmpwi 3, 5, 1 - beq 3, L_SHA256_transform_len_after_blk_11 + beq 7, L_SHA256_transform_len_after_blk_11 # Calc new W[11] rotlwi 3, 26, 25 rotlwi 5, 26, 14 @@ -7451,9 +7399,7 @@ L_SHA256_transform_len_after_blk_11: and 3, 3, 5 xor 3, 3, 10 add 8, 8, 3 - mfctr 5 - cmpwi 3, 5, 1 - beq 3, L_SHA256_transform_len_after_blk_12 + beq 7, L_SHA256_transform_len_after_blk_12 # Calc new W[12] rotlwi 3, 27, 25 rotlwi 5, 27, 14 @@ -7495,9 +7441,7 @@ L_SHA256_transform_len_after_blk_12: and 3, 3, 5 xor 3, 3, 9 add 7, 7, 3 - mfctr 5 - cmpwi 3, 5, 1 - beq 3, L_SHA256_transform_len_after_blk_13 + beq 7, L_SHA256_transform_len_after_blk_13 # Calc new W[13] rotlwi 3, 28, 25 rotlwi 5, 28, 14 @@ -7539,9 +7483,7 @@ L_SHA256_transform_len_after_blk_13: and 3, 3, 5 xor 3, 3, 8 add 4, 4, 3 - mfctr 5 - cmpwi 3, 5, 1 - beq 3, L_SHA256_transform_len_after_blk_14 + beq 7, L_SHA256_transform_len_after_blk_14 # Calc new W[14] rotlwi 3, 29, 25 rotlwi 5, 29, 14 @@ -7583,9 +7525,7 @@ L_SHA256_transform_len_after_blk_14: and 3, 3, 5 xor 3, 3, 7 add 0, 0, 3 - mfctr 5 - cmpwi 3, 5, 1 - beq 3, L_SHA256_transform_len_after_blk_15 + beq 7, L_SHA256_transform_len_after_blk_15 # Calc new W[15] rotlwi 3, 14, 25 rotlwi 5, 14, 14 diff --git a/wolfcrypt/src/port/ppc32/ppc32-sha256-asm_c.c b/wolfcrypt/src/port/ppc32/ppc32-sha256-asm_c.c index 9630846caa..98be8f395e 100644 --- a/wolfcrypt/src/port/ppc32/ppc32-sha256-asm_c.c +++ b/wolfcrypt/src/port/ppc32/ppc32-sha256-asm_c.c @@ -3649,6 +3649,8 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, /* Start of 16 rounds */ "\n" "L_SHA256_transform_len_start_%=:\n\t" + "mfctr %[len]\n\t" + "cmpwi 7, %[len], 1\n\t" /* Round 0 */ "rotlwi 0, 11, 26\n\t" "rotlwi %[len], 11, 21\n\t" @@ -3675,9 +3677,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, "and 0, 0, %[len]\n\t" "xor 0, 0, 8\n\t" "add 15, 15, 0\n\t" - "mfctr %[len]\n\t" - "cmpwi 0, %[len], 1\n\t" - "beq 0, L_SHA256_transform_len_after_blk_0_%=\n\t" + "beq 7, L_SHA256_transform_len_after_blk_0_%=\n\t" /* Calc new W[0] */ "rotlwi 0, 17, 25\n\t" "rotlwi %[len], 17, 14\n\t" @@ -3720,9 +3720,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, "and 0, 0, %[len]\n\t" "xor 0, 0, 7\n\t" "add 14, 14, 0\n\t" - "mfctr %[len]\n\t" - "cmpwi 0, %[len], 1\n\t" - "beq 0, L_SHA256_transform_len_after_blk_1_%=\n\t" + "beq 7, L_SHA256_transform_len_after_blk_1_%=\n\t" /* Calc new W[1] */ "rotlwi 0, 18, 25\n\t" "rotlwi %[len], 18, 14\n\t" @@ -3765,9 +3763,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, "and 0, 0, %[len]\n\t" "xor 0, 0, 15\n\t" "add 12, 12, 0\n\t" - "mfctr %[len]\n\t" - "cmpwi 0, %[len], 1\n\t" - "beq 0, L_SHA256_transform_len_after_blk_2_%=\n\t" + "beq 7, L_SHA256_transform_len_after_blk_2_%=\n\t" /* Calc new W[2] */ "rotlwi 0, 19, 25\n\t" "rotlwi %[len], 19, 14\n\t" @@ -3810,9 +3806,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, "and 0, 0, %[len]\n\t" "xor 0, 0, 14\n\t" "add 11, 11, 0\n\t" - "mfctr %[len]\n\t" - "cmpwi 0, %[len], 1\n\t" - "beq 0, L_SHA256_transform_len_after_blk_3_%=\n\t" + "beq 7, L_SHA256_transform_len_after_blk_3_%=\n\t" /* Calc new W[3] */ "rotlwi 0, 20, 25\n\t" "rotlwi %[len], 20, 14\n\t" @@ -3855,9 +3849,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, "and 0, 0, %[len]\n\t" "xor 0, 0, 12\n\t" "add 10, 10, 0\n\t" - "mfctr %[len]\n\t" - "cmpwi 0, %[len], 1\n\t" - "beq 0, L_SHA256_transform_len_after_blk_4_%=\n\t" + "beq 7, L_SHA256_transform_len_after_blk_4_%=\n\t" /* Calc new W[4] */ "rotlwi 0, 21, 25\n\t" "rotlwi %[len], 21, 14\n\t" @@ -3900,9 +3892,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, "and 0, 0, %[len]\n\t" "xor 0, 0, 11\n\t" "add 9, 9, 0\n\t" - "mfctr %[len]\n\t" - "cmpwi 0, %[len], 1\n\t" - "beq 0, L_SHA256_transform_len_after_blk_5_%=\n\t" + "beq 7, L_SHA256_transform_len_after_blk_5_%=\n\t" /* Calc new W[5] */ "rotlwi 0, 22, 25\n\t" "rotlwi %[len], 22, 14\n\t" @@ -3945,9 +3935,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, "and 0, 0, %[len]\n\t" "xor 0, 0, 10\n\t" "add 8, 8, 0\n\t" - "mfctr %[len]\n\t" - "cmpwi 0, %[len], 1\n\t" - "beq 0, L_SHA256_transform_len_after_blk_6_%=\n\t" + "beq 7, L_SHA256_transform_len_after_blk_6_%=\n\t" /* Calc new W[6] */ "rotlwi 0, 23, 25\n\t" "rotlwi %[len], 23, 14\n\t" @@ -3990,9 +3978,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, "and 0, 0, %[len]\n\t" "xor 0, 0, 9\n\t" "add 7, 7, 0\n\t" - "mfctr %[len]\n\t" - "cmpwi 0, %[len], 1\n\t" - "beq 0, L_SHA256_transform_len_after_blk_7_%=\n\t" + "beq 7, L_SHA256_transform_len_after_blk_7_%=\n\t" /* Calc new W[7] */ "rotlwi 0, 24, 25\n\t" "rotlwi %[len], 24, 14\n\t" @@ -4035,9 +4021,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, "and 0, 0, %[len]\n\t" "xor 0, 0, 8\n\t" "add 15, 15, 0\n\t" - "mfctr %[len]\n\t" - "cmpwi 0, %[len], 1\n\t" - "beq 0, L_SHA256_transform_len_after_blk_8_%=\n\t" + "beq 7, L_SHA256_transform_len_after_blk_8_%=\n\t" /* Calc new W[8] */ "rotlwi 0, 25, 25\n\t" "rotlwi %[len], 25, 14\n\t" @@ -4080,9 +4064,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, "and 0, 0, %[len]\n\t" "xor 0, 0, 7\n\t" "add 14, 14, 0\n\t" - "mfctr %[len]\n\t" - "cmpwi 0, %[len], 1\n\t" - "beq 0, L_SHA256_transform_len_after_blk_9_%=\n\t" + "beq 7, L_SHA256_transform_len_after_blk_9_%=\n\t" /* Calc new W[9] */ "rotlwi 0, 26, 25\n\t" "rotlwi %[len], 26, 14\n\t" @@ -4125,9 +4107,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, "and 0, 0, %[len]\n\t" "xor 0, 0, 15\n\t" "add 12, 12, 0\n\t" - "mfctr %[len]\n\t" - "cmpwi 0, %[len], 1\n\t" - "beq 0, L_SHA256_transform_len_after_blk_10_%=\n\t" + "beq 7, L_SHA256_transform_len_after_blk_10_%=\n\t" /* Calc new W[10] */ "rotlwi 0, 27, 25\n\t" "rotlwi %[len], 27, 14\n\t" @@ -4170,9 +4150,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, "and 0, 0, %[len]\n\t" "xor 0, 0, 14\n\t" "add 11, 11, 0\n\t" - "mfctr %[len]\n\t" - "cmpwi 0, %[len], 1\n\t" - "beq 0, L_SHA256_transform_len_after_blk_11_%=\n\t" + "beq 7, L_SHA256_transform_len_after_blk_11_%=\n\t" /* Calc new W[11] */ "rotlwi 0, 28, 25\n\t" "rotlwi %[len], 28, 14\n\t" @@ -4215,9 +4193,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, "and 0, 0, %[len]\n\t" "xor 0, 0, 12\n\t" "add 10, 10, 0\n\t" - "mfctr %[len]\n\t" - "cmpwi 0, %[len], 1\n\t" - "beq 0, L_SHA256_transform_len_after_blk_12_%=\n\t" + "beq 7, L_SHA256_transform_len_after_blk_12_%=\n\t" /* Calc new W[12] */ "rotlwi 0, 29, 25\n\t" "rotlwi %[len], 29, 14\n\t" @@ -4260,9 +4236,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, "and 0, 0, %[len]\n\t" "xor 0, 0, 11\n\t" "add 9, 9, 0\n\t" - "mfctr %[len]\n\t" - "cmpwi 0, %[len], 1\n\t" - "beq 0, L_SHA256_transform_len_after_blk_13_%=\n\t" + "beq 7, L_SHA256_transform_len_after_blk_13_%=\n\t" /* Calc new W[13] */ "rotlwi 0, 30, 25\n\t" "rotlwi %[len], 30, 14\n\t" @@ -4305,9 +4279,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, "and 0, 0, %[len]\n\t" "xor 0, 0, 10\n\t" "add 8, 8, 0\n\t" - "mfctr %[len]\n\t" - "cmpwi 0, %[len], 1\n\t" - "beq 0, L_SHA256_transform_len_after_blk_14_%=\n\t" + "beq 7, L_SHA256_transform_len_after_blk_14_%=\n\t" /* Calc new W[14] */ "rotlwi 0, 31, 25\n\t" "rotlwi %[len], 31, 14\n\t" @@ -4350,9 +4322,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, "and 0, 0, %[len]\n\t" "xor 0, 0, 9\n\t" "add 7, 7, 0\n\t" - "mfctr %[len]\n\t" - "cmpwi 0, %[len], 1\n\t" - "beq 0, L_SHA256_transform_len_after_blk_15_%=\n\t" + "beq 7, L_SHA256_transform_len_after_blk_15_%=\n\t" /* Calc new W[15] */ "rotlwi 0, 16, 25\n\t" "rotlwi %[len], 16, 14\n\t" @@ -6893,6 +6863,8 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, /* Start of 16 rounds */ "\n" "L_SHA256_transform_len_start_%=:\n\t" + "mfctr %[len]\n\t" + "cmpwi 7, %[len], 1\n\t" /* Round 0 */ "rotlwi %[sha256], 9, 26\n\t" "rotlwi %[len], 9, 21\n\t" @@ -6919,9 +6891,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, "and %[sha256], %[sha256], %[len]\n\t" "xor %[sha256], %[sha256], %[data]\n\t" "add 12, 12, %[sha256]\n\t" - "mfctr %[len]\n\t" - "cmpwi %[sha256], %[len], 1\n\t" - "beq %[sha256], L_SHA256_transform_len_after_blk_0_%=\n\t" + "beq 7, L_SHA256_transform_len_after_blk_0_%=\n\t" /* Calc new W[0] */ "rotlwi %[sha256], 15, 25\n\t" "rotlwi %[len], 15, 14\n\t" @@ -6964,9 +6934,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, "and %[sha256], %[sha256], %[len]\n\t" "xor %[sha256], %[sha256], 0\n\t" "add 11, 11, %[sha256]\n\t" - "mfctr %[len]\n\t" - "cmpwi %[sha256], %[len], 1\n\t" - "beq %[sha256], L_SHA256_transform_len_after_blk_1_%=\n\t" + "beq 7, L_SHA256_transform_len_after_blk_1_%=\n\t" /* Calc new W[1] */ "rotlwi %[sha256], 16, 25\n\t" "rotlwi %[len], 16, 14\n\t" @@ -7009,9 +6977,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, "and %[sha256], %[sha256], %[len]\n\t" "xor %[sha256], %[sha256], 12\n\t" "add 10, 10, %[sha256]\n\t" - "mfctr %[len]\n\t" - "cmpwi %[sha256], %[len], 1\n\t" - "beq %[sha256], L_SHA256_transform_len_after_blk_2_%=\n\t" + "beq 7, L_SHA256_transform_len_after_blk_2_%=\n\t" /* Calc new W[2] */ "rotlwi %[sha256], 17, 25\n\t" "rotlwi %[len], 17, 14\n\t" @@ -7054,9 +7020,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, "and %[sha256], %[sha256], %[len]\n\t" "xor %[sha256], %[sha256], 11\n\t" "add 9, 9, %[sha256]\n\t" - "mfctr %[len]\n\t" - "cmpwi %[sha256], %[len], 1\n\t" - "beq %[sha256], L_SHA256_transform_len_after_blk_3_%=\n\t" + "beq 7, L_SHA256_transform_len_after_blk_3_%=\n\t" /* Calc new W[3] */ "rotlwi %[sha256], 18, 25\n\t" "rotlwi %[len], 18, 14\n\t" @@ -7099,9 +7063,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, "and %[sha256], %[sha256], %[len]\n\t" "xor %[sha256], %[sha256], 10\n\t" "add 8, 8, %[sha256]\n\t" - "mfctr %[len]\n\t" - "cmpwi %[sha256], %[len], 1\n\t" - "beq %[sha256], L_SHA256_transform_len_after_blk_4_%=\n\t" + "beq 7, L_SHA256_transform_len_after_blk_4_%=\n\t" /* Calc new W[4] */ "rotlwi %[sha256], 19, 25\n\t" "rotlwi %[len], 19, 14\n\t" @@ -7144,9 +7106,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, "and %[sha256], %[sha256], %[len]\n\t" "xor %[sha256], %[sha256], 9\n\t" "add 7, 7, %[sha256]\n\t" - "mfctr %[len]\n\t" - "cmpwi %[sha256], %[len], 1\n\t" - "beq %[sha256], L_SHA256_transform_len_after_blk_5_%=\n\t" + "beq 7, L_SHA256_transform_len_after_blk_5_%=\n\t" /* Calc new W[5] */ "rotlwi %[sha256], 20, 25\n\t" "rotlwi %[len], 20, 14\n\t" @@ -7189,9 +7149,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, "and %[sha256], %[sha256], %[len]\n\t" "xor %[sha256], %[sha256], 8\n\t" "add %[data], %[data], %[sha256]\n\t" - "mfctr %[len]\n\t" - "cmpwi %[sha256], %[len], 1\n\t" - "beq %[sha256], L_SHA256_transform_len_after_blk_6_%=\n\t" + "beq 7, L_SHA256_transform_len_after_blk_6_%=\n\t" /* Calc new W[6] */ "rotlwi %[sha256], 21, 25\n\t" "rotlwi %[len], 21, 14\n\t" @@ -7234,9 +7192,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, "and %[sha256], %[sha256], %[len]\n\t" "xor %[sha256], %[sha256], 7\n\t" "add 0, 0, %[sha256]\n\t" - "mfctr %[len]\n\t" - "cmpwi %[sha256], %[len], 1\n\t" - "beq %[sha256], L_SHA256_transform_len_after_blk_7_%=\n\t" + "beq 7, L_SHA256_transform_len_after_blk_7_%=\n\t" /* Calc new W[7] */ "rotlwi %[sha256], 22, 25\n\t" "rotlwi %[len], 22, 14\n\t" @@ -7279,9 +7235,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, "and %[sha256], %[sha256], %[len]\n\t" "xor %[sha256], %[sha256], %[data]\n\t" "add 12, 12, %[sha256]\n\t" - "mfctr %[len]\n\t" - "cmpwi %[sha256], %[len], 1\n\t" - "beq %[sha256], L_SHA256_transform_len_after_blk_8_%=\n\t" + "beq 7, L_SHA256_transform_len_after_blk_8_%=\n\t" /* Calc new W[8] */ "rotlwi %[sha256], 23, 25\n\t" "rotlwi %[len], 23, 14\n\t" @@ -7324,9 +7278,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, "and %[sha256], %[sha256], %[len]\n\t" "xor %[sha256], %[sha256], 0\n\t" "add 11, 11, %[sha256]\n\t" - "mfctr %[len]\n\t" - "cmpwi %[sha256], %[len], 1\n\t" - "beq %[sha256], L_SHA256_transform_len_after_blk_9_%=\n\t" + "beq 7, L_SHA256_transform_len_after_blk_9_%=\n\t" /* Calc new W[9] */ "rotlwi %[sha256], 24, 25\n\t" "rotlwi %[len], 24, 14\n\t" @@ -7369,9 +7321,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, "and %[sha256], %[sha256], %[len]\n\t" "xor %[sha256], %[sha256], 12\n\t" "add 10, 10, %[sha256]\n\t" - "mfctr %[len]\n\t" - "cmpwi %[sha256], %[len], 1\n\t" - "beq %[sha256], L_SHA256_transform_len_after_blk_10_%=\n\t" + "beq 7, L_SHA256_transform_len_after_blk_10_%=\n\t" /* Calc new W[10] */ "rotlwi %[sha256], 25, 25\n\t" "rotlwi %[len], 25, 14\n\t" @@ -7414,9 +7364,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, "and %[sha256], %[sha256], %[len]\n\t" "xor %[sha256], %[sha256], 11\n\t" "add 9, 9, %[sha256]\n\t" - "mfctr %[len]\n\t" - "cmpwi %[sha256], %[len], 1\n\t" - "beq %[sha256], L_SHA256_transform_len_after_blk_11_%=\n\t" + "beq 7, L_SHA256_transform_len_after_blk_11_%=\n\t" /* Calc new W[11] */ "rotlwi %[sha256], 26, 25\n\t" "rotlwi %[len], 26, 14\n\t" @@ -7459,9 +7407,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, "and %[sha256], %[sha256], %[len]\n\t" "xor %[sha256], %[sha256], 10\n\t" "add 8, 8, %[sha256]\n\t" - "mfctr %[len]\n\t" - "cmpwi %[sha256], %[len], 1\n\t" - "beq %[sha256], L_SHA256_transform_len_after_blk_12_%=\n\t" + "beq 7, L_SHA256_transform_len_after_blk_12_%=\n\t" /* Calc new W[12] */ "rotlwi %[sha256], 27, 25\n\t" "rotlwi %[len], 27, 14\n\t" @@ -7504,9 +7450,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, "and %[sha256], %[sha256], %[len]\n\t" "xor %[sha256], %[sha256], 9\n\t" "add 7, 7, %[sha256]\n\t" - "mfctr %[len]\n\t" - "cmpwi %[sha256], %[len], 1\n\t" - "beq %[sha256], L_SHA256_transform_len_after_blk_13_%=\n\t" + "beq 7, L_SHA256_transform_len_after_blk_13_%=\n\t" /* Calc new W[13] */ "rotlwi %[sha256], 28, 25\n\t" "rotlwi %[len], 28, 14\n\t" @@ -7549,9 +7493,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, "and %[sha256], %[sha256], %[len]\n\t" "xor %[sha256], %[sha256], 8\n\t" "add %[data], %[data], %[sha256]\n\t" - "mfctr %[len]\n\t" - "cmpwi %[sha256], %[len], 1\n\t" - "beq %[sha256], L_SHA256_transform_len_after_blk_14_%=\n\t" + "beq 7, L_SHA256_transform_len_after_blk_14_%=\n\t" /* Calc new W[14] */ "rotlwi %[sha256], 29, 25\n\t" "rotlwi %[len], 29, 14\n\t" @@ -7594,9 +7536,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, "and %[sha256], %[sha256], %[len]\n\t" "xor %[sha256], %[sha256], 7\n\t" "add 0, 0, %[sha256]\n\t" - "mfctr %[len]\n\t" - "cmpwi %[sha256], %[len], 1\n\t" - "beq %[sha256], L_SHA256_transform_len_after_blk_15_%=\n\t" + "beq 7, L_SHA256_transform_len_after_blk_15_%=\n\t" /* Calc new W[15] */ "rotlwi %[sha256], 14, 25\n\t" "rotlwi %[len], 14, 14\n\t" diff --git a/wolfcrypt/src/port/ppc32/ppc32-sha256-asm_cr.c b/wolfcrypt/src/port/ppc32/ppc32-sha256-asm_cr.c index 1a1d42cf33..50b40a65cc 100644 --- a/wolfcrypt/src/port/ppc32/ppc32-sha256-asm_cr.c +++ b/wolfcrypt/src/port/ppc32/ppc32-sha256-asm_cr.c @@ -3649,6 +3649,8 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, /* Start of 16 rounds */ "\n" "L_SHA256_transform_len_start_%=:\n\t" + "mfctr %[len]\n\t" + "cmpwi cr7, %[len], 1\n\t" /* Round 0 */ "rotlwi r0, r11, 26\n\t" "rotlwi %[len], r11, 21\n\t" @@ -3675,9 +3677,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, "and r0, r0, %[len]\n\t" "xor r0, r0, r8\n\t" "add r15, r15, r0\n\t" - "mfctr %[len]\n\t" - "cmpwi r0, %[len], 1\n\t" - "beq r0, L_SHA256_transform_len_after_blk_0_%=\n\t" + "beq cr7, L_SHA256_transform_len_after_blk_0_%=\n\t" /* Calc new W[0] */ "rotlwi r0, r17, 25\n\t" "rotlwi %[len], r17, 14\n\t" @@ -3720,9 +3720,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, "and r0, r0, %[len]\n\t" "xor r0, r0, r7\n\t" "add r14, r14, r0\n\t" - "mfctr %[len]\n\t" - "cmpwi r0, %[len], 1\n\t" - "beq r0, L_SHA256_transform_len_after_blk_1_%=\n\t" + "beq cr7, L_SHA256_transform_len_after_blk_1_%=\n\t" /* Calc new W[1] */ "rotlwi r0, r18, 25\n\t" "rotlwi %[len], r18, 14\n\t" @@ -3765,9 +3763,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, "and r0, r0, %[len]\n\t" "xor r0, r0, r15\n\t" "add r12, r12, r0\n\t" - "mfctr %[len]\n\t" - "cmpwi r0, %[len], 1\n\t" - "beq r0, L_SHA256_transform_len_after_blk_2_%=\n\t" + "beq cr7, L_SHA256_transform_len_after_blk_2_%=\n\t" /* Calc new W[2] */ "rotlwi r0, r19, 25\n\t" "rotlwi %[len], r19, 14\n\t" @@ -3810,9 +3806,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, "and r0, r0, %[len]\n\t" "xor r0, r0, r14\n\t" "add r11, r11, r0\n\t" - "mfctr %[len]\n\t" - "cmpwi r0, %[len], 1\n\t" - "beq r0, L_SHA256_transform_len_after_blk_3_%=\n\t" + "beq cr7, L_SHA256_transform_len_after_blk_3_%=\n\t" /* Calc new W[3] */ "rotlwi r0, r20, 25\n\t" "rotlwi %[len], r20, 14\n\t" @@ -3855,9 +3849,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, "and r0, r0, %[len]\n\t" "xor r0, r0, r12\n\t" "add r10, r10, r0\n\t" - "mfctr %[len]\n\t" - "cmpwi r0, %[len], 1\n\t" - "beq r0, L_SHA256_transform_len_after_blk_4_%=\n\t" + "beq cr7, L_SHA256_transform_len_after_blk_4_%=\n\t" /* Calc new W[4] */ "rotlwi r0, r21, 25\n\t" "rotlwi %[len], r21, 14\n\t" @@ -3900,9 +3892,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, "and r0, r0, %[len]\n\t" "xor r0, r0, r11\n\t" "add r9, r9, r0\n\t" - "mfctr %[len]\n\t" - "cmpwi r0, %[len], 1\n\t" - "beq r0, L_SHA256_transform_len_after_blk_5_%=\n\t" + "beq cr7, L_SHA256_transform_len_after_blk_5_%=\n\t" /* Calc new W[5] */ "rotlwi r0, r22, 25\n\t" "rotlwi %[len], r22, 14\n\t" @@ -3945,9 +3935,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, "and r0, r0, %[len]\n\t" "xor r0, r0, r10\n\t" "add r8, r8, r0\n\t" - "mfctr %[len]\n\t" - "cmpwi r0, %[len], 1\n\t" - "beq r0, L_SHA256_transform_len_after_blk_6_%=\n\t" + "beq cr7, L_SHA256_transform_len_after_blk_6_%=\n\t" /* Calc new W[6] */ "rotlwi r0, r23, 25\n\t" "rotlwi %[len], r23, 14\n\t" @@ -3990,9 +3978,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, "and r0, r0, %[len]\n\t" "xor r0, r0, r9\n\t" "add r7, r7, r0\n\t" - "mfctr %[len]\n\t" - "cmpwi r0, %[len], 1\n\t" - "beq r0, L_SHA256_transform_len_after_blk_7_%=\n\t" + "beq cr7, L_SHA256_transform_len_after_blk_7_%=\n\t" /* Calc new W[7] */ "rotlwi r0, r24, 25\n\t" "rotlwi %[len], r24, 14\n\t" @@ -4035,9 +4021,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, "and r0, r0, %[len]\n\t" "xor r0, r0, r8\n\t" "add r15, r15, r0\n\t" - "mfctr %[len]\n\t" - "cmpwi r0, %[len], 1\n\t" - "beq r0, L_SHA256_transform_len_after_blk_8_%=\n\t" + "beq cr7, L_SHA256_transform_len_after_blk_8_%=\n\t" /* Calc new W[8] */ "rotlwi r0, r25, 25\n\t" "rotlwi %[len], r25, 14\n\t" @@ -4080,9 +4064,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, "and r0, r0, %[len]\n\t" "xor r0, r0, r7\n\t" "add r14, r14, r0\n\t" - "mfctr %[len]\n\t" - "cmpwi r0, %[len], 1\n\t" - "beq r0, L_SHA256_transform_len_after_blk_9_%=\n\t" + "beq cr7, L_SHA256_transform_len_after_blk_9_%=\n\t" /* Calc new W[9] */ "rotlwi r0, r26, 25\n\t" "rotlwi %[len], r26, 14\n\t" @@ -4125,9 +4107,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, "and r0, r0, %[len]\n\t" "xor r0, r0, r15\n\t" "add r12, r12, r0\n\t" - "mfctr %[len]\n\t" - "cmpwi r0, %[len], 1\n\t" - "beq r0, L_SHA256_transform_len_after_blk_10_%=\n\t" + "beq cr7, L_SHA256_transform_len_after_blk_10_%=\n\t" /* Calc new W[10] */ "rotlwi r0, r27, 25\n\t" "rotlwi %[len], r27, 14\n\t" @@ -4170,9 +4150,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, "and r0, r0, %[len]\n\t" "xor r0, r0, r14\n\t" "add r11, r11, r0\n\t" - "mfctr %[len]\n\t" - "cmpwi r0, %[len], 1\n\t" - "beq r0, L_SHA256_transform_len_after_blk_11_%=\n\t" + "beq cr7, L_SHA256_transform_len_after_blk_11_%=\n\t" /* Calc new W[11] */ "rotlwi r0, r28, 25\n\t" "rotlwi %[len], r28, 14\n\t" @@ -4215,9 +4193,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, "and r0, r0, %[len]\n\t" "xor r0, r0, r12\n\t" "add r10, r10, r0\n\t" - "mfctr %[len]\n\t" - "cmpwi r0, %[len], 1\n\t" - "beq r0, L_SHA256_transform_len_after_blk_12_%=\n\t" + "beq cr7, L_SHA256_transform_len_after_blk_12_%=\n\t" /* Calc new W[12] */ "rotlwi r0, r29, 25\n\t" "rotlwi %[len], r29, 14\n\t" @@ -4260,9 +4236,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, "and r0, r0, %[len]\n\t" "xor r0, r0, r11\n\t" "add r9, r9, r0\n\t" - "mfctr %[len]\n\t" - "cmpwi r0, %[len], 1\n\t" - "beq r0, L_SHA256_transform_len_after_blk_13_%=\n\t" + "beq cr7, L_SHA256_transform_len_after_blk_13_%=\n\t" /* Calc new W[13] */ "rotlwi r0, r30, 25\n\t" "rotlwi %[len], r30, 14\n\t" @@ -4305,9 +4279,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, "and r0, r0, %[len]\n\t" "xor r0, r0, r10\n\t" "add r8, r8, r0\n\t" - "mfctr %[len]\n\t" - "cmpwi r0, %[len], 1\n\t" - "beq r0, L_SHA256_transform_len_after_blk_14_%=\n\t" + "beq cr7, L_SHA256_transform_len_after_blk_14_%=\n\t" /* Calc new W[14] */ "rotlwi r0, r31, 25\n\t" "rotlwi %[len], r31, 14\n\t" @@ -4350,9 +4322,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, "and r0, r0, %[len]\n\t" "xor r0, r0, r9\n\t" "add r7, r7, r0\n\t" - "mfctr %[len]\n\t" - "cmpwi r0, %[len], 1\n\t" - "beq r0, L_SHA256_transform_len_after_blk_15_%=\n\t" + "beq cr7, L_SHA256_transform_len_after_blk_15_%=\n\t" /* Calc new W[15] */ "rotlwi r0, r16, 25\n\t" "rotlwi %[len], r16, 14\n\t" @@ -6893,6 +6863,8 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, /* Start of 16 rounds */ "\n" "L_SHA256_transform_len_start_%=:\n\t" + "mfctr %[len]\n\t" + "cmpwi cr7, %[len], 1\n\t" /* Round 0 */ "rotlwi %[sha256], r9, 26\n\t" "rotlwi %[len], r9, 21\n\t" @@ -6919,9 +6891,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, "and %[sha256], %[sha256], %[len]\n\t" "xor %[sha256], %[sha256], %[data]\n\t" "add r12, r12, %[sha256]\n\t" - "mfctr %[len]\n\t" - "cmpwi %[sha256], %[len], 1\n\t" - "beq %[sha256], L_SHA256_transform_len_after_blk_0_%=\n\t" + "beq cr7, L_SHA256_transform_len_after_blk_0_%=\n\t" /* Calc new W[0] */ "rotlwi %[sha256], r15, 25\n\t" "rotlwi %[len], r15, 14\n\t" @@ -6964,9 +6934,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, "and %[sha256], %[sha256], %[len]\n\t" "xor %[sha256], %[sha256], r0\n\t" "add r11, r11, %[sha256]\n\t" - "mfctr %[len]\n\t" - "cmpwi %[sha256], %[len], 1\n\t" - "beq %[sha256], L_SHA256_transform_len_after_blk_1_%=\n\t" + "beq cr7, L_SHA256_transform_len_after_blk_1_%=\n\t" /* Calc new W[1] */ "rotlwi %[sha256], r16, 25\n\t" "rotlwi %[len], r16, 14\n\t" @@ -7009,9 +6977,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, "and %[sha256], %[sha256], %[len]\n\t" "xor %[sha256], %[sha256], r12\n\t" "add r10, r10, %[sha256]\n\t" - "mfctr %[len]\n\t" - "cmpwi %[sha256], %[len], 1\n\t" - "beq %[sha256], L_SHA256_transform_len_after_blk_2_%=\n\t" + "beq cr7, L_SHA256_transform_len_after_blk_2_%=\n\t" /* Calc new W[2] */ "rotlwi %[sha256], r17, 25\n\t" "rotlwi %[len], r17, 14\n\t" @@ -7054,9 +7020,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, "and %[sha256], %[sha256], %[len]\n\t" "xor %[sha256], %[sha256], r11\n\t" "add r9, r9, %[sha256]\n\t" - "mfctr %[len]\n\t" - "cmpwi %[sha256], %[len], 1\n\t" - "beq %[sha256], L_SHA256_transform_len_after_blk_3_%=\n\t" + "beq cr7, L_SHA256_transform_len_after_blk_3_%=\n\t" /* Calc new W[3] */ "rotlwi %[sha256], r18, 25\n\t" "rotlwi %[len], r18, 14\n\t" @@ -7099,9 +7063,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, "and %[sha256], %[sha256], %[len]\n\t" "xor %[sha256], %[sha256], r10\n\t" "add r8, r8, %[sha256]\n\t" - "mfctr %[len]\n\t" - "cmpwi %[sha256], %[len], 1\n\t" - "beq %[sha256], L_SHA256_transform_len_after_blk_4_%=\n\t" + "beq cr7, L_SHA256_transform_len_after_blk_4_%=\n\t" /* Calc new W[4] */ "rotlwi %[sha256], r19, 25\n\t" "rotlwi %[len], r19, 14\n\t" @@ -7144,9 +7106,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, "and %[sha256], %[sha256], %[len]\n\t" "xor %[sha256], %[sha256], r9\n\t" "add r7, r7, %[sha256]\n\t" - "mfctr %[len]\n\t" - "cmpwi %[sha256], %[len], 1\n\t" - "beq %[sha256], L_SHA256_transform_len_after_blk_5_%=\n\t" + "beq cr7, L_SHA256_transform_len_after_blk_5_%=\n\t" /* Calc new W[5] */ "rotlwi %[sha256], r20, 25\n\t" "rotlwi %[len], r20, 14\n\t" @@ -7189,9 +7149,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, "and %[sha256], %[sha256], %[len]\n\t" "xor %[sha256], %[sha256], r8\n\t" "add %[data], %[data], %[sha256]\n\t" - "mfctr %[len]\n\t" - "cmpwi %[sha256], %[len], 1\n\t" - "beq %[sha256], L_SHA256_transform_len_after_blk_6_%=\n\t" + "beq cr7, L_SHA256_transform_len_after_blk_6_%=\n\t" /* Calc new W[6] */ "rotlwi %[sha256], r21, 25\n\t" "rotlwi %[len], r21, 14\n\t" @@ -7234,9 +7192,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, "and %[sha256], %[sha256], %[len]\n\t" "xor %[sha256], %[sha256], r7\n\t" "add r0, r0, %[sha256]\n\t" - "mfctr %[len]\n\t" - "cmpwi %[sha256], %[len], 1\n\t" - "beq %[sha256], L_SHA256_transform_len_after_blk_7_%=\n\t" + "beq cr7, L_SHA256_transform_len_after_blk_7_%=\n\t" /* Calc new W[7] */ "rotlwi %[sha256], r22, 25\n\t" "rotlwi %[len], r22, 14\n\t" @@ -7279,9 +7235,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, "and %[sha256], %[sha256], %[len]\n\t" "xor %[sha256], %[sha256], %[data]\n\t" "add r12, r12, %[sha256]\n\t" - "mfctr %[len]\n\t" - "cmpwi %[sha256], %[len], 1\n\t" - "beq %[sha256], L_SHA256_transform_len_after_blk_8_%=\n\t" + "beq cr7, L_SHA256_transform_len_after_blk_8_%=\n\t" /* Calc new W[8] */ "rotlwi %[sha256], r23, 25\n\t" "rotlwi %[len], r23, 14\n\t" @@ -7324,9 +7278,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, "and %[sha256], %[sha256], %[len]\n\t" "xor %[sha256], %[sha256], r0\n\t" "add r11, r11, %[sha256]\n\t" - "mfctr %[len]\n\t" - "cmpwi %[sha256], %[len], 1\n\t" - "beq %[sha256], L_SHA256_transform_len_after_blk_9_%=\n\t" + "beq cr7, L_SHA256_transform_len_after_blk_9_%=\n\t" /* Calc new W[9] */ "rotlwi %[sha256], r24, 25\n\t" "rotlwi %[len], r24, 14\n\t" @@ -7369,9 +7321,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, "and %[sha256], %[sha256], %[len]\n\t" "xor %[sha256], %[sha256], r12\n\t" "add r10, r10, %[sha256]\n\t" - "mfctr %[len]\n\t" - "cmpwi %[sha256], %[len], 1\n\t" - "beq %[sha256], L_SHA256_transform_len_after_blk_10_%=\n\t" + "beq cr7, L_SHA256_transform_len_after_blk_10_%=\n\t" /* Calc new W[10] */ "rotlwi %[sha256], r25, 25\n\t" "rotlwi %[len], r25, 14\n\t" @@ -7414,9 +7364,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, "and %[sha256], %[sha256], %[len]\n\t" "xor %[sha256], %[sha256], r11\n\t" "add r9, r9, %[sha256]\n\t" - "mfctr %[len]\n\t" - "cmpwi %[sha256], %[len], 1\n\t" - "beq %[sha256], L_SHA256_transform_len_after_blk_11_%=\n\t" + "beq cr7, L_SHA256_transform_len_after_blk_11_%=\n\t" /* Calc new W[11] */ "rotlwi %[sha256], r26, 25\n\t" "rotlwi %[len], r26, 14\n\t" @@ -7459,9 +7407,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, "and %[sha256], %[sha256], %[len]\n\t" "xor %[sha256], %[sha256], r10\n\t" "add r8, r8, %[sha256]\n\t" - "mfctr %[len]\n\t" - "cmpwi %[sha256], %[len], 1\n\t" - "beq %[sha256], L_SHA256_transform_len_after_blk_12_%=\n\t" + "beq cr7, L_SHA256_transform_len_after_blk_12_%=\n\t" /* Calc new W[12] */ "rotlwi %[sha256], r27, 25\n\t" "rotlwi %[len], r27, 14\n\t" @@ -7504,9 +7450,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, "and %[sha256], %[sha256], %[len]\n\t" "xor %[sha256], %[sha256], r9\n\t" "add r7, r7, %[sha256]\n\t" - "mfctr %[len]\n\t" - "cmpwi %[sha256], %[len], 1\n\t" - "beq %[sha256], L_SHA256_transform_len_after_blk_13_%=\n\t" + "beq cr7, L_SHA256_transform_len_after_blk_13_%=\n\t" /* Calc new W[13] */ "rotlwi %[sha256], r28, 25\n\t" "rotlwi %[len], r28, 14\n\t" @@ -7549,9 +7493,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, "and %[sha256], %[sha256], %[len]\n\t" "xor %[sha256], %[sha256], r8\n\t" "add %[data], %[data], %[sha256]\n\t" - "mfctr %[len]\n\t" - "cmpwi %[sha256], %[len], 1\n\t" - "beq %[sha256], L_SHA256_transform_len_after_blk_14_%=\n\t" + "beq cr7, L_SHA256_transform_len_after_blk_14_%=\n\t" /* Calc new W[14] */ "rotlwi %[sha256], r29, 25\n\t" "rotlwi %[len], r29, 14\n\t" @@ -7594,9 +7536,7 @@ WC_OMIT_FRAME_POINTER void Transform_Sha256_Len(wc_Sha256* sha256, "and %[sha256], %[sha256], %[len]\n\t" "xor %[sha256], %[sha256], r7\n\t" "add r0, r0, %[sha256]\n\t" - "mfctr %[len]\n\t" - "cmpwi %[sha256], %[len], 1\n\t" - "beq %[sha256], L_SHA256_transform_len_after_blk_15_%=\n\t" + "beq cr7, L_SHA256_transform_len_after_blk_15_%=\n\t" /* Calc new W[15] */ "rotlwi %[sha256], r14, 25\n\t" "rotlwi %[len], r14, 14\n\t"