diff --git a/include/os/freebsd/spl/sys/simd_powerpc.h b/include/os/freebsd/spl/sys/simd_powerpc.h index edaab81d15fc..cf3c712c6af2 100644 --- a/include/os/freebsd/spl/sys/simd_powerpc.h +++ b/include/os/freebsd/spl/sys/simd_powerpc.h @@ -1,86 +1,86 @@ /* * Copyright (C) 2022 Tino Reichardt * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * $FreeBSD$ */ /* * SIMD support: * * Following functions should be called to determine whether CPU feature * is supported. All functions are usable in kernel and user space. * If a SIMD algorithm is using more than one instruction set * all relevant feature test functions should be called. * * Supported features: * zfs_altivec_available() * zfs_vsx_available() * zfs_isa207_available() */ #ifndef _FREEBSD_SIMD_POWERPC_H #define _FREEBSD_SIMD_POWERPC_H #include #include #include #include -#define kfpu_allowed() 1 +#define kfpu_allowed() 0 #define kfpu_initialize(tsk) do {} while (0) #define kfpu_begin() do {} while (0) #define kfpu_end() do {} while (0) #define kfpu_init() (0) #define kfpu_fini() do {} while (0) /* * Check if Altivec is available */ static inline boolean_t zfs_altivec_available(void) { return ((cpu_features & PPC_FEATURE_HAS_ALTIVEC) != 0); } /* * Check if VSX is available */ static inline boolean_t zfs_vsx_available(void) { return ((cpu_features & PPC_FEATURE_HAS_VSX) != 0); } /* * Check if POWER ISA 2.07 is available (SHA2) */ static inline boolean_t zfs_isa207_available(void) { return ((cpu_features2 & PPC_FEATURE2_ARCH_2_07) != 0); } #endif diff --git a/lib/libspl/include/sys/simd.h b/lib/libspl/include/sys/simd.h index a106967d0725..41f9df506468 100644 --- a/lib/libspl/include/sys/simd.h +++ b/lib/libspl/include/sys/simd.h @@ -1,595 +1,595 @@ /* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or https://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2006 Sun Microsystems, Inc. All rights reserved. * Copyright (c) 2022 Tino Reichardt */ #ifndef _LIBSPL_SYS_SIMD_H #define _LIBSPL_SYS_SIMD_H #include #include /* including clashes with AT_UID and others */ #if defined(__arm__) || defined(__aarch64__) || defined(__powerpc__) #if defined(__FreeBSD__) #define AT_HWCAP 25 #define AT_HWCAP2 26 extern int elf_aux_info(int aux, void *buf, int buflen); static inline unsigned long getauxval(unsigned long key) { unsigned long val = 0UL; if (elf_aux_info((int)key, &val, sizeof (val)) != 0) return (0UL); return (val); } #elif defined(__linux__) #define AT_HWCAP 16 #define AT_HWCAP2 26 extern unsigned long getauxval(unsigned long type); #endif /* __linux__ */ #endif /* arm || aarch64 || powerpc */ #if defined(__x86) #include #define kfpu_allowed() 1 #define kfpu_begin() do {} while (0) #define kfpu_end() do {} while (0) #define kfpu_init() 0 #define kfpu_fini() ((void) 0) /* * CPUID feature tests for user-space. * * x86 registers used implicitly by CPUID */ typedef enum cpuid_regs { EAX = 0, EBX, ECX, EDX, CPUID_REG_CNT = 4 } cpuid_regs_t; /* * List of instruction sets identified by CPUID */ typedef enum cpuid_inst_sets { SSE = 0, SSE2, SSE3, SSSE3, SSE4_1, SSE4_2, OSXSAVE, AVX, AVX2, BMI1, BMI2, AVX512F, AVX512CD, AVX512DQ, AVX512BW, AVX512IFMA, AVX512VBMI, AVX512PF, AVX512ER, AVX512VL, AES, PCLMULQDQ, MOVBE, SHA_NI } cpuid_inst_sets_t; /* * Instruction set descriptor. */ typedef struct cpuid_feature_desc { uint32_t leaf; /* CPUID leaf */ uint32_t subleaf; /* CPUID sub-leaf */ uint32_t flag; /* bit mask of the feature */ cpuid_regs_t reg; /* which CPUID return register to test */ } cpuid_feature_desc_t; #define _AVX512F_BIT (1U << 16) #define _AVX512CD_BIT (_AVX512F_BIT | (1U << 28)) #define _AVX512DQ_BIT (_AVX512F_BIT | (1U << 17)) #define _AVX512BW_BIT (_AVX512F_BIT | (1U << 30)) #define _AVX512IFMA_BIT (_AVX512F_BIT | (1U << 21)) #define _AVX512VBMI_BIT (1U << 1) /* AVX512F_BIT is on another leaf */ #define _AVX512PF_BIT (_AVX512F_BIT | (1U << 26)) #define _AVX512ER_BIT (_AVX512F_BIT | (1U << 27)) #define _AVX512VL_BIT (1U << 31) /* if used also check other levels */ #define _AES_BIT (1U << 25) #define _PCLMULQDQ_BIT (1U << 1) #define _MOVBE_BIT (1U << 22) #define _SHA_NI_BIT (1U << 29) /* * Descriptions of supported instruction sets */ static const cpuid_feature_desc_t cpuid_features[] = { [SSE] = {1U, 0U, 1U << 25, EDX }, [SSE2] = {1U, 0U, 1U << 26, EDX }, [SSE3] = {1U, 0U, 1U << 0, ECX }, [SSSE3] = {1U, 0U, 1U << 9, ECX }, [SSE4_1] = {1U, 0U, 1U << 19, ECX }, [SSE4_2] = {1U, 0U, 1U << 20, ECX }, [OSXSAVE] = {1U, 0U, 1U << 27, ECX }, [AVX] = {1U, 0U, 1U << 28, ECX }, [AVX2] = {7U, 0U, 1U << 5, EBX }, [BMI1] = {7U, 0U, 1U << 3, EBX }, [BMI2] = {7U, 0U, 1U << 8, EBX }, [AVX512F] = {7U, 0U, _AVX512F_BIT, EBX }, [AVX512CD] = {7U, 0U, _AVX512CD_BIT, EBX }, [AVX512DQ] = {7U, 0U, _AVX512DQ_BIT, EBX }, [AVX512BW] = {7U, 0U, _AVX512BW_BIT, EBX }, [AVX512IFMA] = {7U, 0U, _AVX512IFMA_BIT, EBX }, [AVX512VBMI] = {7U, 0U, _AVX512VBMI_BIT, ECX }, [AVX512PF] = {7U, 0U, _AVX512PF_BIT, EBX }, [AVX512ER] = {7U, 0U, _AVX512ER_BIT, EBX }, [AVX512VL] = {7U, 0U, _AVX512ER_BIT, EBX }, [AES] = {1U, 0U, _AES_BIT, ECX }, [PCLMULQDQ] = {1U, 0U, _PCLMULQDQ_BIT, ECX }, [MOVBE] = {1U, 0U, _MOVBE_BIT, ECX }, [SHA_NI] = {7U, 0U, _SHA_NI_BIT, EBX }, }; /* * Check if OS supports AVX and AVX2 by checking XCR0 * Only call this function if CPUID indicates that AVX feature is * supported by the CPU, otherwise it might be an illegal instruction. */ static inline uint64_t xgetbv(uint32_t index) { uint32_t eax, edx; /* xgetbv - instruction byte code */ __asm__ __volatile__(".byte 0x0f; .byte 0x01; .byte 0xd0" : "=a" (eax), "=d" (edx) : "c" (index)); return ((((uint64_t)edx)<<32) | (uint64_t)eax); } /* * Check if CPU supports a feature */ static inline boolean_t __cpuid_check_feature(const cpuid_feature_desc_t *desc) { uint32_t r[CPUID_REG_CNT]; if (__get_cpuid_max(0, NULL) >= desc->leaf) { /* * __cpuid_count is needed to properly check * for AVX2. It is a macro, so return parameters * are passed by value. */ __cpuid_count(desc->leaf, desc->subleaf, r[EAX], r[EBX], r[ECX], r[EDX]); return ((r[desc->reg] & desc->flag) == desc->flag); } return (B_FALSE); } #define CPUID_FEATURE_CHECK(name, id) \ static inline boolean_t \ __cpuid_has_ ## name(void) \ { \ return (__cpuid_check_feature(&cpuid_features[id])); \ } /* * Define functions for user-space CPUID features testing */ CPUID_FEATURE_CHECK(sse, SSE); CPUID_FEATURE_CHECK(sse2, SSE2); CPUID_FEATURE_CHECK(sse3, SSE3); CPUID_FEATURE_CHECK(ssse3, SSSE3); CPUID_FEATURE_CHECK(sse4_1, SSE4_1); CPUID_FEATURE_CHECK(sse4_2, SSE4_2); CPUID_FEATURE_CHECK(avx, AVX); CPUID_FEATURE_CHECK(avx2, AVX2); CPUID_FEATURE_CHECK(osxsave, OSXSAVE); CPUID_FEATURE_CHECK(bmi1, BMI1); CPUID_FEATURE_CHECK(bmi2, BMI2); CPUID_FEATURE_CHECK(avx512f, AVX512F); CPUID_FEATURE_CHECK(avx512cd, AVX512CD); CPUID_FEATURE_CHECK(avx512dq, AVX512DQ); CPUID_FEATURE_CHECK(avx512bw, AVX512BW); CPUID_FEATURE_CHECK(avx512ifma, AVX512IFMA); CPUID_FEATURE_CHECK(avx512vbmi, AVX512VBMI); CPUID_FEATURE_CHECK(avx512pf, AVX512PF); CPUID_FEATURE_CHECK(avx512er, AVX512ER); CPUID_FEATURE_CHECK(avx512vl, AVX512VL); CPUID_FEATURE_CHECK(aes, AES); CPUID_FEATURE_CHECK(pclmulqdq, PCLMULQDQ); CPUID_FEATURE_CHECK(movbe, MOVBE); CPUID_FEATURE_CHECK(shani, SHA_NI); /* * Detect register set support */ static inline boolean_t __simd_state_enabled(const uint64_t state) { boolean_t has_osxsave; uint64_t xcr0; has_osxsave = __cpuid_has_osxsave(); if (!has_osxsave) return (B_FALSE); xcr0 = xgetbv(0); return ((xcr0 & state) == state); } #define _XSTATE_SSE_AVX (0x2 | 0x4) #define _XSTATE_AVX512 (0xE0 | _XSTATE_SSE_AVX) #define __ymm_enabled() __simd_state_enabled(_XSTATE_SSE_AVX) #define __zmm_enabled() __simd_state_enabled(_XSTATE_AVX512) /* * Check if SSE instruction set is available */ static inline boolean_t zfs_sse_available(void) { return (__cpuid_has_sse()); } /* * Check if SSE2 instruction set is available */ static inline boolean_t zfs_sse2_available(void) { return (__cpuid_has_sse2()); } /* * Check if SSE3 instruction set is available */ static inline boolean_t zfs_sse3_available(void) { return (__cpuid_has_sse3()); } /* * Check if SSSE3 instruction set is available */ static inline boolean_t zfs_ssse3_available(void) { return (__cpuid_has_ssse3()); } /* * Check if SSE4.1 instruction set is available */ static inline boolean_t zfs_sse4_1_available(void) { return (__cpuid_has_sse4_1()); } /* * Check if SSE4.2 instruction set is available */ static inline boolean_t zfs_sse4_2_available(void) { return (__cpuid_has_sse4_2()); } /* * Check if AVX instruction set is available */ static inline boolean_t zfs_avx_available(void) { return (__cpuid_has_avx() && __ymm_enabled()); } /* * Check if AVX2 instruction set is available */ static inline boolean_t zfs_avx2_available(void) { return (__cpuid_has_avx2() && __ymm_enabled()); } /* * Check if BMI1 instruction set is available */ static inline boolean_t zfs_bmi1_available(void) { return (__cpuid_has_bmi1()); } /* * Check if BMI2 instruction set is available */ static inline boolean_t zfs_bmi2_available(void) { return (__cpuid_has_bmi2()); } /* * Check if AES instruction set is available */ static inline boolean_t zfs_aes_available(void) { return (__cpuid_has_aes()); } /* * Check if PCLMULQDQ instruction set is available */ static inline boolean_t zfs_pclmulqdq_available(void) { return (__cpuid_has_pclmulqdq()); } /* * Check if MOVBE instruction is available */ static inline boolean_t zfs_movbe_available(void) { return (__cpuid_has_movbe()); } /* * Check if SHA_NI instruction is available */ static inline boolean_t zfs_shani_available(void) { return (__cpuid_has_shani()); } /* * AVX-512 family of instruction sets: * * AVX512F Foundation * AVX512CD Conflict Detection Instructions * AVX512ER Exponential and Reciprocal Instructions * AVX512PF Prefetch Instructions * * AVX512BW Byte and Word Instructions * AVX512DQ Double-word and Quadword Instructions * AVX512VL Vector Length Extensions * * AVX512IFMA Integer Fused Multiply Add (Not supported by kernel 4.4) * AVX512VBMI Vector Byte Manipulation Instructions */ /* * Check if AVX512F instruction set is available */ static inline boolean_t zfs_avx512f_available(void) { return (__cpuid_has_avx512f() && __zmm_enabled()); } /* * Check if AVX512CD instruction set is available */ static inline boolean_t zfs_avx512cd_available(void) { return (__cpuid_has_avx512cd() && __zmm_enabled()); } /* * Check if AVX512ER instruction set is available */ static inline boolean_t zfs_avx512er_available(void) { return (__cpuid_has_avx512er() && __zmm_enabled()); } /* * Check if AVX512PF instruction set is available */ static inline boolean_t zfs_avx512pf_available(void) { return (__cpuid_has_avx512pf() && __zmm_enabled()); } /* * Check if AVX512BW instruction set is available */ static inline boolean_t zfs_avx512bw_available(void) { return (__cpuid_has_avx512bw() && __zmm_enabled()); } /* * Check if AVX512DQ instruction set is available */ static inline boolean_t zfs_avx512dq_available(void) { return (__cpuid_has_avx512dq() && __zmm_enabled()); } /* * Check if AVX512VL instruction set is available */ static inline boolean_t zfs_avx512vl_available(void) { return (__cpuid_has_avx512vl() && __zmm_enabled()); } /* * Check if AVX512IFMA instruction set is available */ static inline boolean_t zfs_avx512ifma_available(void) { return (__cpuid_has_avx512ifma() && __zmm_enabled()); } /* * Check if AVX512VBMI instruction set is available */ static inline boolean_t zfs_avx512vbmi_available(void) { return (__cpuid_has_avx512f() && __cpuid_has_avx512vbmi() && __zmm_enabled()); } #elif defined(__arm__) #define kfpu_allowed() 1 #define kfpu_initialize(tsk) do {} while (0) #define kfpu_begin() do {} while (0) #define kfpu_end() do {} while (0) #define HWCAP_NEON 0x00001000 #define HWCAP2_SHA2 0x00000008 /* * Check if NEON is available */ static inline boolean_t zfs_neon_available(void) { unsigned long hwcap = getauxval(AT_HWCAP); return (hwcap & HWCAP_NEON); } /* * Check if SHA2 is available */ static inline boolean_t zfs_sha256_available(void) { unsigned long hwcap = getauxval(AT_HWCAP); return (hwcap & HWCAP2_SHA2); } #elif defined(__aarch64__) #define kfpu_allowed() 1 #define kfpu_initialize(tsk) do {} while (0) #define kfpu_begin() do {} while (0) #define kfpu_end() do {} while (0) #define HWCAP_FP 0x00000001 #define HWCAP_SHA2 0x00000040 #define HWCAP_SHA512 0x00200000 /* * Check if NEON is available */ static inline boolean_t zfs_neon_available(void) { unsigned long hwcap = getauxval(AT_HWCAP); return (hwcap & HWCAP_FP); } /* * Check if SHA2 is available */ static inline boolean_t zfs_sha256_available(void) { unsigned long hwcap = getauxval(AT_HWCAP); return (hwcap & HWCAP_SHA2); } /* * Check if SHA512 is available */ static inline boolean_t zfs_sha512_available(void) { unsigned long hwcap = getauxval(AT_HWCAP); return (hwcap & HWCAP_SHA512); } #elif defined(__powerpc__) -#define kfpu_allowed() 1 +#define kfpu_allowed() 0 #define kfpu_initialize(tsk) do {} while (0) #define kfpu_begin() do {} while (0) #define kfpu_end() do {} while (0) #define PPC_FEATURE_HAS_ALTIVEC 0x10000000 #define PPC_FEATURE_HAS_VSX 0x00000080 #define PPC_FEATURE2_ARCH_2_07 0x80000000 static inline boolean_t zfs_altivec_available(void) { unsigned long hwcap = getauxval(AT_HWCAP); return (hwcap & PPC_FEATURE_HAS_ALTIVEC); } static inline boolean_t zfs_vsx_available(void) { unsigned long hwcap = getauxval(AT_HWCAP); return (hwcap & PPC_FEATURE_HAS_VSX); } static inline boolean_t zfs_isa207_available(void) { unsigned long hwcap = getauxval(AT_HWCAP); unsigned long hwcap2 = getauxval(AT_HWCAP2); return ((hwcap & PPC_FEATURE_HAS_VSX) && (hwcap2 & PPC_FEATURE2_ARCH_2_07)); } #else #define kfpu_allowed() 0 #define kfpu_initialize(tsk) do {} while (0) #define kfpu_begin() do {} while (0) #define kfpu_end() do {} while (0) #endif #endif /* _LIBSPL_SYS_SIMD_H */ diff --git a/module/icp/asm-ppc64/sha2/sha256-p8.S b/module/icp/asm-ppc64/sha2/sha256-p8.S index 6bbfe23b6e15..dc3c4cea669c 100644 --- a/module/icp/asm-ppc64/sha2/sha256-p8.S +++ b/module/icp/asm-ppc64/sha2/sha256-p8.S @@ -1,1505 +1,1520 @@ /* * Copyright 2004-2022 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * Portions Copyright (c) 2022 Tino Reichardt * - modified assembly to fit into OpenZFS */ #if (defined(__PPC64__) && defined(__BIG_ENDIAN__)) +#if (!defined(_CALL_ELF) || _CALL_ELF == 1) .text .globl zfs_sha256_power8 .globl .zfs_sha256_power8 .type zfs_sha256_power8,@function .section ".opd","aw" .align 3 zfs_sha256_power8: .quad .zfs_sha256_power8,.TOC.@tocbase,0 .previous .align 6 .zfs_sha256_power8: +#else +.abiversion 2 +.text + +.globl zfs_sha256_power8 +.type zfs_sha256_power8,@function +.align 6 +zfs_sha256_power8: +.localentry zfs_sha256_power8,0 +#endif stdu 1,-384(1) mflr 8 li 10,207 li 11,223 stvx 24,10,1 addi 10,10,32 mfspr 12,256 stvx 25,11,1 addi 11,11,32 stvx 26,10,1 addi 10,10,32 stvx 27,11,1 addi 11,11,32 stvx 28,10,1 addi 10,10,32 stvx 29,11,1 addi 11,11,32 stvx 30,10,1 stvx 31,11,1 li 11,-4096+255 stw 12,332(1) li 10,0x10 std 26,336(1) li 26,0x20 std 27,344(1) li 27,0x30 std 28,352(1) li 28,0x40 std 29,360(1) li 29,0x50 std 30,368(1) li 30,0x60 std 31,376(1) li 31,0x70 std 8,400(1) mtspr 256,11 bl .LPICmeup addi 11,1,79 .long 0x7C001E19 .long 0x7C8A1E19 vsldoi 1,0,0,4 vsldoi 2,0,0,8 vsldoi 3,0,0,12 vsldoi 5,4,4,4 vsldoi 6,4,4,8 vsldoi 7,4,4,12 li 0,3 b .Loop .align 5 .Loop: lvx 28,0,6 .long 0x7D002699 addi 4,4,16 mr 7,6 stvx 0,0,11 stvx 1,10,11 stvx 2,26,11 stvx 3,27,11 stvx 4,28,11 stvx 5,29,11 stvx 6,30,11 stvx 7,31,11 vadduwm 7,7,28 lvx 28,10,6 vadduwm 7,7,8 vsel 29,6,5,4 vadduwm 6,6,28 vadduwm 7,7,29 .long 0x13C4FE82 vadduwm 7,7,30 vxor 29,0,1 vsel 29,1,2,29 vadduwm 3,3,7 .long 0x13C08682 vadduwm 30,30,29 vadduwm 7,7,30 lvx 28,26,7 vsldoi 9,8,8,4 vadduwm 6,6,9 vsel 29,5,4,3 vadduwm 5,5,28 vadduwm 6,6,29 .long 0x13C3FE82 vadduwm 6,6,30 vxor 29,7,0 vsel 29,0,1,29 vadduwm 2,2,6 .long 0x13C78682 vadduwm 30,30,29 vadduwm 6,6,30 lvx 28,27,7 vsldoi 10,9,9,4 vadduwm 5,5,10 vsel 29,4,3,2 vadduwm 4,4,28 vadduwm 5,5,29 .long 0x13C2FE82 vadduwm 5,5,30 vxor 29,6,7 vsel 29,7,0,29 vadduwm 1,1,5 .long 0x13C68682 vadduwm 30,30,29 vadduwm 5,5,30 lvx 28,28,7 .long 0x7D802699 addi 4,4,16 vsldoi 11,10,10,4 vadduwm 4,4,11 vsel 29,3,2,1 vadduwm 3,3,28 vadduwm 4,4,29 .long 0x13C1FE82 vadduwm 4,4,30 vxor 29,5,6 vsel 29,6,7,29 vadduwm 0,0,4 .long 0x13C58682 vadduwm 30,30,29 vadduwm 4,4,30 lvx 28,29,7 vadduwm 3,3,12 vsel 29,2,1,0 vadduwm 2,2,28 vadduwm 3,3,29 .long 0x13C0FE82 vadduwm 3,3,30 vxor 29,4,5 vsel 29,5,6,29 vadduwm 7,7,3 .long 0x13C48682 vadduwm 30,30,29 vadduwm 3,3,30 lvx 28,30,7 vsldoi 13,12,12,4 vadduwm 2,2,13 vsel 29,1,0,7 vadduwm 1,1,28 vadduwm 2,2,29 .long 0x13C7FE82 vadduwm 2,2,30 vxor 29,3,4 vsel 29,4,5,29 vadduwm 6,6,2 .long 0x13C38682 vadduwm 30,30,29 vadduwm 2,2,30 lvx 28,31,7 addi 7,7,0x80 vsldoi 14,13,13,4 vadduwm 1,1,14 vsel 29,0,7,6 vadduwm 0,0,28 vadduwm 1,1,29 .long 0x13C6FE82 vadduwm 1,1,30 vxor 29,2,3 vsel 29,3,4,29 vadduwm 5,5,1 .long 0x13C28682 vadduwm 30,30,29 vadduwm 1,1,30 lvx 28,0,7 .long 0x7E002699 addi 4,4,16 vsldoi 15,14,14,4 vadduwm 0,0,15 vsel 29,7,6,5 vadduwm 7,7,28 vadduwm 0,0,29 .long 0x13C5FE82 vadduwm 0,0,30 vxor 29,1,2 vsel 29,2,3,29 vadduwm 4,4,0 .long 0x13C18682 vadduwm 30,30,29 vadduwm 0,0,30 lvx 28,10,7 vadduwm 7,7,16 vsel 29,6,5,4 vadduwm 6,6,28 vadduwm 7,7,29 .long 0x13C4FE82 vadduwm 7,7,30 vxor 29,0,1 vsel 29,1,2,29 vadduwm 3,3,7 .long 0x13C08682 vadduwm 30,30,29 vadduwm 7,7,30 lvx 28,26,7 vsldoi 17,16,16,4 vadduwm 6,6,17 vsel 29,5,4,3 vadduwm 5,5,28 vadduwm 6,6,29 .long 0x13C3FE82 vadduwm 6,6,30 vxor 29,7,0 vsel 29,0,1,29 vadduwm 2,2,6 .long 0x13C78682 vadduwm 30,30,29 vadduwm 6,6,30 lvx 28,27,7 vsldoi 18,17,17,4 vadduwm 5,5,18 vsel 29,4,3,2 vadduwm 4,4,28 vadduwm 5,5,29 .long 0x13C2FE82 vadduwm 5,5,30 vxor 29,6,7 vsel 29,7,0,29 vadduwm 1,1,5 .long 0x13C68682 vadduwm 30,30,29 vadduwm 5,5,30 lvx 28,28,7 .long 0x7F002699 addi 4,4,16 vsldoi 19,18,18,4 vadduwm 4,4,19 vsel 29,3,2,1 vadduwm 3,3,28 vadduwm 4,4,29 .long 0x13C1FE82 vadduwm 4,4,30 vxor 29,5,6 vsel 29,6,7,29 vadduwm 0,0,4 .long 0x13C58682 vadduwm 30,30,29 vadduwm 4,4,30 lvx 28,29,7 vadduwm 3,3,24 vsel 29,2,1,0 vadduwm 2,2,28 vadduwm 3,3,29 .long 0x13C0FE82 vadduwm 3,3,30 vxor 29,4,5 vsel 29,5,6,29 vadduwm 7,7,3 .long 0x13C48682 vadduwm 30,30,29 vadduwm 3,3,30 lvx 28,30,7 vsldoi 25,24,24,4 vadduwm 2,2,25 vsel 29,1,0,7 vadduwm 1,1,28 vadduwm 2,2,29 .long 0x13C7FE82 vadduwm 2,2,30 vxor 29,3,4 vsel 29,4,5,29 vadduwm 6,6,2 .long 0x13C38682 vadduwm 30,30,29 vadduwm 2,2,30 lvx 28,31,7 addi 7,7,0x80 vsldoi 26,25,25,4 vadduwm 1,1,26 vsel 29,0,7,6 vadduwm 0,0,28 vadduwm 1,1,29 .long 0x13C6FE82 vadduwm 1,1,30 vxor 29,2,3 vsel 29,3,4,29 vadduwm 5,5,1 .long 0x13C28682 vadduwm 30,30,29 vadduwm 1,1,30 lvx 28,0,7 vsldoi 27,26,26,4 .long 0x13C90682 vadduwm 8,8,30 .long 0x13DA7E82 vadduwm 8,8,30 vadduwm 8,8,17 vadduwm 0,0,27 vsel 29,7,6,5 vadduwm 7,7,28 vadduwm 0,0,29 .long 0x13C5FE82 vadduwm 0,0,30 vxor 29,1,2 vsel 29,2,3,29 vadduwm 4,4,0 .long 0x13C18682 vadduwm 30,30,29 vadduwm 0,0,30 lvx 28,10,7 mtctr 0 b .L16_xx .align 5 .L16_xx: .long 0x13CA0682 vadduwm 9,9,30 .long 0x13DB7E82 vadduwm 9,9,30 vadduwm 9,9,18 vadduwm 7,7,8 vsel 29,6,5,4 vadduwm 6,6,28 vadduwm 7,7,29 .long 0x13C4FE82 vadduwm 7,7,30 vxor 29,0,1 vsel 29,1,2,29 vadduwm 3,3,7 .long 0x13C08682 vadduwm 30,30,29 vadduwm 7,7,30 lvx 28,26,7 .long 0x13CB0682 vadduwm 10,10,30 .long 0x13C87E82 vadduwm 10,10,30 vadduwm 10,10,19 vadduwm 6,6,9 vsel 29,5,4,3 vadduwm 5,5,28 vadduwm 6,6,29 .long 0x13C3FE82 vadduwm 6,6,30 vxor 29,7,0 vsel 29,0,1,29 vadduwm 2,2,6 .long 0x13C78682 vadduwm 30,30,29 vadduwm 6,6,30 lvx 28,27,7 .long 0x13CC0682 vadduwm 11,11,30 .long 0x13C97E82 vadduwm 11,11,30 vadduwm 11,11,24 vadduwm 5,5,10 vsel 29,4,3,2 vadduwm 4,4,28 vadduwm 5,5,29 .long 0x13C2FE82 vadduwm 5,5,30 vxor 29,6,7 vsel 29,7,0,29 vadduwm 1,1,5 .long 0x13C68682 vadduwm 30,30,29 vadduwm 5,5,30 lvx 28,28,7 .long 0x13CD0682 vadduwm 12,12,30 .long 0x13CA7E82 vadduwm 12,12,30 vadduwm 12,12,25 vadduwm 4,4,11 vsel 29,3,2,1 vadduwm 3,3,28 vadduwm 4,4,29 .long 0x13C1FE82 vadduwm 4,4,30 vxor 29,5,6 vsel 29,6,7,29 vadduwm 0,0,4 .long 0x13C58682 vadduwm 30,30,29 vadduwm 4,4,30 lvx 28,29,7 .long 0x13CE0682 vadduwm 13,13,30 .long 0x13CB7E82 vadduwm 13,13,30 vadduwm 13,13,26 vadduwm 3,3,12 vsel 29,2,1,0 vadduwm 2,2,28 vadduwm 3,3,29 .long 0x13C0FE82 vadduwm 3,3,30 vxor 29,4,5 vsel 29,5,6,29 vadduwm 7,7,3 .long 0x13C48682 vadduwm 30,30,29 vadduwm 3,3,30 lvx 28,30,7 .long 0x13CF0682 vadduwm 14,14,30 .long 0x13CC7E82 vadduwm 14,14,30 vadduwm 14,14,27 vadduwm 2,2,13 vsel 29,1,0,7 vadduwm 1,1,28 vadduwm 2,2,29 .long 0x13C7FE82 vadduwm 2,2,30 vxor 29,3,4 vsel 29,4,5,29 vadduwm 6,6,2 .long 0x13C38682 vadduwm 30,30,29 vadduwm 2,2,30 lvx 28,31,7 addi 7,7,0x80 .long 0x13D00682 vadduwm 15,15,30 .long 0x13CD7E82 vadduwm 15,15,30 vadduwm 15,15,8 vadduwm 1,1,14 vsel 29,0,7,6 vadduwm 0,0,28 vadduwm 1,1,29 .long 0x13C6FE82 vadduwm 1,1,30 vxor 29,2,3 vsel 29,3,4,29 vadduwm 5,5,1 .long 0x13C28682 vadduwm 30,30,29 vadduwm 1,1,30 lvx 28,0,7 .long 0x13D10682 vadduwm 16,16,30 .long 0x13CE7E82 vadduwm 16,16,30 vadduwm 16,16,9 vadduwm 0,0,15 vsel 29,7,6,5 vadduwm 7,7,28 vadduwm 0,0,29 .long 0x13C5FE82 vadduwm 0,0,30 vxor 29,1,2 vsel 29,2,3,29 vadduwm 4,4,0 .long 0x13C18682 vadduwm 30,30,29 vadduwm 0,0,30 lvx 28,10,7 .long 0x13D20682 vadduwm 17,17,30 .long 0x13CF7E82 vadduwm 17,17,30 vadduwm 17,17,10 vadduwm 7,7,16 vsel 29,6,5,4 vadduwm 6,6,28 vadduwm 7,7,29 .long 0x13C4FE82 vadduwm 7,7,30 vxor 29,0,1 vsel 29,1,2,29 vadduwm 3,3,7 .long 0x13C08682 vadduwm 30,30,29 vadduwm 7,7,30 lvx 28,26,7 .long 0x13D30682 vadduwm 18,18,30 .long 0x13D07E82 vadduwm 18,18,30 vadduwm 18,18,11 vadduwm 6,6,17 vsel 29,5,4,3 vadduwm 5,5,28 vadduwm 6,6,29 .long 0x13C3FE82 vadduwm 6,6,30 vxor 29,7,0 vsel 29,0,1,29 vadduwm 2,2,6 .long 0x13C78682 vadduwm 30,30,29 vadduwm 6,6,30 lvx 28,27,7 .long 0x13D80682 vadduwm 19,19,30 .long 0x13D17E82 vadduwm 19,19,30 vadduwm 19,19,12 vadduwm 5,5,18 vsel 29,4,3,2 vadduwm 4,4,28 vadduwm 5,5,29 .long 0x13C2FE82 vadduwm 5,5,30 vxor 29,6,7 vsel 29,7,0,29 vadduwm 1,1,5 .long 0x13C68682 vadduwm 30,30,29 vadduwm 5,5,30 lvx 28,28,7 .long 0x13D90682 vadduwm 24,24,30 .long 0x13D27E82 vadduwm 24,24,30 vadduwm 24,24,13 vadduwm 4,4,19 vsel 29,3,2,1 vadduwm 3,3,28 vadduwm 4,4,29 .long 0x13C1FE82 vadduwm 4,4,30 vxor 29,5,6 vsel 29,6,7,29 vadduwm 0,0,4 .long 0x13C58682 vadduwm 30,30,29 vadduwm 4,4,30 lvx 28,29,7 .long 0x13DA0682 vadduwm 25,25,30 .long 0x13D37E82 vadduwm 25,25,30 vadduwm 25,25,14 vadduwm 3,3,24 vsel 29,2,1,0 vadduwm 2,2,28 vadduwm 3,3,29 .long 0x13C0FE82 vadduwm 3,3,30 vxor 29,4,5 vsel 29,5,6,29 vadduwm 7,7,3 .long 0x13C48682 vadduwm 30,30,29 vadduwm 3,3,30 lvx 28,30,7 .long 0x13DB0682 vadduwm 26,26,30 .long 0x13D87E82 vadduwm 26,26,30 vadduwm 26,26,15 vadduwm 2,2,25 vsel 29,1,0,7 vadduwm 1,1,28 vadduwm 2,2,29 .long 0x13C7FE82 vadduwm 2,2,30 vxor 29,3,4 vsel 29,4,5,29 vadduwm 6,6,2 .long 0x13C38682 vadduwm 30,30,29 vadduwm 2,2,30 lvx 28,31,7 addi 7,7,0x80 .long 0x13C80682 vadduwm 27,27,30 .long 0x13D97E82 vadduwm 27,27,30 vadduwm 27,27,16 vadduwm 1,1,26 vsel 29,0,7,6 vadduwm 0,0,28 vadduwm 1,1,29 .long 0x13C6FE82 vadduwm 1,1,30 vxor 29,2,3 vsel 29,3,4,29 vadduwm 5,5,1 .long 0x13C28682 vadduwm 30,30,29 vadduwm 1,1,30 lvx 28,0,7 .long 0x13C90682 vadduwm 8,8,30 .long 0x13DA7E82 vadduwm 8,8,30 vadduwm 8,8,17 vadduwm 0,0,27 vsel 29,7,6,5 vadduwm 7,7,28 vadduwm 0,0,29 .long 0x13C5FE82 vadduwm 0,0,30 vxor 29,1,2 vsel 29,2,3,29 vadduwm 4,4,0 .long 0x13C18682 vadduwm 30,30,29 vadduwm 0,0,30 lvx 28,10,7 bdnz .L16_xx lvx 10,0,11 subic. 5,5,1 lvx 11,10,11 vadduwm 0,0,10 lvx 12,26,11 vadduwm 1,1,11 lvx 13,27,11 vadduwm 2,2,12 lvx 14,28,11 vadduwm 3,3,13 lvx 15,29,11 vadduwm 4,4,14 lvx 16,30,11 vadduwm 5,5,15 lvx 17,31,11 vadduwm 6,6,16 vadduwm 7,7,17 bne .Loop lvx 8,26,7 vperm 0,0,1,28 lvx 9,27,7 vperm 4,4,5,28 vperm 0,0,2,8 vperm 4,4,6,8 vperm 0,0,3,9 vperm 4,4,7,9 .long 0x7C001F19 .long 0x7C8A1F19 addi 11,1,207 mtlr 8 mtspr 256,12 lvx 24,0,11 lvx 25,10,11 lvx 26,26,11 lvx 27,27,11 lvx 28,28,11 lvx 29,29,11 lvx 30,30,11 lvx 31,31,11 ld 26,336(1) ld 27,344(1) ld 28,352(1) ld 29,360(1) ld 30,368(1) ld 31,376(1) addi 1,1,384 blr .long 0 .byte 0,12,4,1,0x80,6,3,0 .long 0 +#if (!defined(_CALL_ELF) || _CALL_ELF == 1) .size .zfs_sha256_power8,.-.zfs_sha256_power8 .size zfs_sha256_power8,.-.zfs_sha256_power8 +#else +.size zfs_sha256_power8,.-zfs_sha256_power8 +#endif .align 6 .LPICmeup: mflr 0 bcl 20,31,$+4 mflr 6 addi 6,6,56 mtlr 0 blr .long 0 .byte 0,12,0x14,0,0,0,0,0 .space 28 .long 0x428a2f98,0x428a2f98,0x428a2f98,0x428a2f98 .long 0x71374491,0x71374491,0x71374491,0x71374491 .long 0xb5c0fbcf,0xb5c0fbcf,0xb5c0fbcf,0xb5c0fbcf .long 0xe9b5dba5,0xe9b5dba5,0xe9b5dba5,0xe9b5dba5 .long 0x3956c25b,0x3956c25b,0x3956c25b,0x3956c25b .long 0x59f111f1,0x59f111f1,0x59f111f1,0x59f111f1 .long 0x923f82a4,0x923f82a4,0x923f82a4,0x923f82a4 .long 0xab1c5ed5,0xab1c5ed5,0xab1c5ed5,0xab1c5ed5 .long 0xd807aa98,0xd807aa98,0xd807aa98,0xd807aa98 .long 0x12835b01,0x12835b01,0x12835b01,0x12835b01 .long 0x243185be,0x243185be,0x243185be,0x243185be .long 0x550c7dc3,0x550c7dc3,0x550c7dc3,0x550c7dc3 .long 0x72be5d74,0x72be5d74,0x72be5d74,0x72be5d74 .long 0x80deb1fe,0x80deb1fe,0x80deb1fe,0x80deb1fe .long 0x9bdc06a7,0x9bdc06a7,0x9bdc06a7,0x9bdc06a7 .long 0xc19bf174,0xc19bf174,0xc19bf174,0xc19bf174 .long 0xe49b69c1,0xe49b69c1,0xe49b69c1,0xe49b69c1 .long 0xefbe4786,0xefbe4786,0xefbe4786,0xefbe4786 .long 0x0fc19dc6,0x0fc19dc6,0x0fc19dc6,0x0fc19dc6 .long 0x240ca1cc,0x240ca1cc,0x240ca1cc,0x240ca1cc .long 0x2de92c6f,0x2de92c6f,0x2de92c6f,0x2de92c6f .long 0x4a7484aa,0x4a7484aa,0x4a7484aa,0x4a7484aa .long 0x5cb0a9dc,0x5cb0a9dc,0x5cb0a9dc,0x5cb0a9dc .long 0x76f988da,0x76f988da,0x76f988da,0x76f988da .long 0x983e5152,0x983e5152,0x983e5152,0x983e5152 .long 0xa831c66d,0xa831c66d,0xa831c66d,0xa831c66d .long 0xb00327c8,0xb00327c8,0xb00327c8,0xb00327c8 .long 0xbf597fc7,0xbf597fc7,0xbf597fc7,0xbf597fc7 .long 0xc6e00bf3,0xc6e00bf3,0xc6e00bf3,0xc6e00bf3 .long 0xd5a79147,0xd5a79147,0xd5a79147,0xd5a79147 .long 0x06ca6351,0x06ca6351,0x06ca6351,0x06ca6351 .long 0x14292967,0x14292967,0x14292967,0x14292967 .long 0x27b70a85,0x27b70a85,0x27b70a85,0x27b70a85 .long 0x2e1b2138,0x2e1b2138,0x2e1b2138,0x2e1b2138 .long 0x4d2c6dfc,0x4d2c6dfc,0x4d2c6dfc,0x4d2c6dfc .long 0x53380d13,0x53380d13,0x53380d13,0x53380d13 .long 0x650a7354,0x650a7354,0x650a7354,0x650a7354 .long 0x766a0abb,0x766a0abb,0x766a0abb,0x766a0abb .long 0x81c2c92e,0x81c2c92e,0x81c2c92e,0x81c2c92e .long 0x92722c85,0x92722c85,0x92722c85,0x92722c85 .long 0xa2bfe8a1,0xa2bfe8a1,0xa2bfe8a1,0xa2bfe8a1 .long 0xa81a664b,0xa81a664b,0xa81a664b,0xa81a664b .long 0xc24b8b70,0xc24b8b70,0xc24b8b70,0xc24b8b70 .long 0xc76c51a3,0xc76c51a3,0xc76c51a3,0xc76c51a3 .long 0xd192e819,0xd192e819,0xd192e819,0xd192e819 .long 0xd6990624,0xd6990624,0xd6990624,0xd6990624 .long 0xf40e3585,0xf40e3585,0xf40e3585,0xf40e3585 .long 0x106aa070,0x106aa070,0x106aa070,0x106aa070 .long 0x19a4c116,0x19a4c116,0x19a4c116,0x19a4c116 .long 0x1e376c08,0x1e376c08,0x1e376c08,0x1e376c08 .long 0x2748774c,0x2748774c,0x2748774c,0x2748774c .long 0x34b0bcb5,0x34b0bcb5,0x34b0bcb5,0x34b0bcb5 .long 0x391c0cb3,0x391c0cb3,0x391c0cb3,0x391c0cb3 .long 0x4ed8aa4a,0x4ed8aa4a,0x4ed8aa4a,0x4ed8aa4a .long 0x5b9cca4f,0x5b9cca4f,0x5b9cca4f,0x5b9cca4f .long 0x682e6ff3,0x682e6ff3,0x682e6ff3,0x682e6ff3 .long 0x748f82ee,0x748f82ee,0x748f82ee,0x748f82ee .long 0x78a5636f,0x78a5636f,0x78a5636f,0x78a5636f .long 0x84c87814,0x84c87814,0x84c87814,0x84c87814 .long 0x8cc70208,0x8cc70208,0x8cc70208,0x8cc70208 .long 0x90befffa,0x90befffa,0x90befffa,0x90befffa .long 0xa4506ceb,0xa4506ceb,0xa4506ceb,0xa4506ceb .long 0xbef9a3f7,0xbef9a3f7,0xbef9a3f7,0xbef9a3f7 .long 0xc67178f2,0xc67178f2,0xc67178f2,0xc67178f2 .long 0,0,0,0 .long 0x00010203,0x10111213,0x10111213,0x10111213 .long 0x00010203,0x04050607,0x10111213,0x10111213 .long 0x00010203,0x04050607,0x08090a0b,0x10111213 #elif (defined(__PPC64__) && defined(__LITTLE_ENDIAN__)) .abiversion 2 .text .globl zfs_sha256_power8 .type zfs_sha256_power8,@function .align 6 zfs_sha256_power8: .localentry zfs_sha256_power8,0 stdu 1,-384(1) mflr 8 li 10,207 li 11,223 stvx 24,10,1 addi 10,10,32 li 12,-1 stvx 25,11,1 addi 11,11,32 stvx 26,10,1 addi 10,10,32 stvx 27,11,1 addi 11,11,32 stvx 28,10,1 addi 10,10,32 stvx 29,11,1 addi 11,11,32 stvx 30,10,1 stvx 31,11,1 li 11,-4096+255 stw 12,332(1) li 10,0x10 std 26,336(1) li 26,0x20 std 27,344(1) li 27,0x30 std 28,352(1) li 28,0x40 std 29,360(1) li 29,0x50 std 30,368(1) li 30,0x60 std 31,376(1) li 31,0x70 std 8,400(1) or 11,11,11 bl .LPICmeup addi 11,1,79 li 7,8 lvsl 31,0,7 vspltisb 28,0x0f vxor 31,31,28 .long 0x7C001E19 .long 0x7C8A1E19 vsldoi 1,0,0,4 vsldoi 2,0,0,8 vsldoi 3,0,0,12 vsldoi 5,4,4,4 vsldoi 6,4,4,8 vsldoi 7,4,4,12 li 0,3 b .Loop .align 5 .Loop: lvx 28,0,6 .long 0x7D002699 addi 4,4,16 mr 7,6 stvx 0,0,11 stvx 1,10,11 stvx 2,26,11 stvx 3,27,11 stvx 4,28,11 stvx 5,29,11 stvx 6,30,11 stvx 7,31,11 vadduwm 7,7,28 lvx 28,10,6 vperm 8,8,8,31 vadduwm 7,7,8 vsel 29,6,5,4 vadduwm 6,6,28 vadduwm 7,7,29 .long 0x13C4FE82 vadduwm 7,7,30 vxor 29,0,1 vsel 29,1,2,29 vadduwm 3,3,7 .long 0x13C08682 vadduwm 30,30,29 vadduwm 7,7,30 lvx 28,26,7 vsldoi 9,8,8,4 vadduwm 6,6,9 vsel 29,5,4,3 vadduwm 5,5,28 vadduwm 6,6,29 .long 0x13C3FE82 vadduwm 6,6,30 vxor 29,7,0 vsel 29,0,1,29 vadduwm 2,2,6 .long 0x13C78682 vadduwm 30,30,29 vadduwm 6,6,30 lvx 28,27,7 vsldoi 10,9,9,4 vadduwm 5,5,10 vsel 29,4,3,2 vadduwm 4,4,28 vadduwm 5,5,29 .long 0x13C2FE82 vadduwm 5,5,30 vxor 29,6,7 vsel 29,7,0,29 vadduwm 1,1,5 .long 0x13C68682 vadduwm 30,30,29 vadduwm 5,5,30 lvx 28,28,7 .long 0x7D802699 addi 4,4,16 vsldoi 11,10,10,4 vadduwm 4,4,11 vsel 29,3,2,1 vadduwm 3,3,28 vadduwm 4,4,29 .long 0x13C1FE82 vadduwm 4,4,30 vxor 29,5,6 vsel 29,6,7,29 vadduwm 0,0,4 .long 0x13C58682 vadduwm 30,30,29 vadduwm 4,4,30 lvx 28,29,7 vperm 12,12,12,31 vadduwm 3,3,12 vsel 29,2,1,0 vadduwm 2,2,28 vadduwm 3,3,29 .long 0x13C0FE82 vadduwm 3,3,30 vxor 29,4,5 vsel 29,5,6,29 vadduwm 7,7,3 .long 0x13C48682 vadduwm 30,30,29 vadduwm 3,3,30 lvx 28,30,7 vsldoi 13,12,12,4 vadduwm 2,2,13 vsel 29,1,0,7 vadduwm 1,1,28 vadduwm 2,2,29 .long 0x13C7FE82 vadduwm 2,2,30 vxor 29,3,4 vsel 29,4,5,29 vadduwm 6,6,2 .long 0x13C38682 vadduwm 30,30,29 vadduwm 2,2,30 lvx 28,31,7 addi 7,7,0x80 vsldoi 14,13,13,4 vadduwm 1,1,14 vsel 29,0,7,6 vadduwm 0,0,28 vadduwm 1,1,29 .long 0x13C6FE82 vadduwm 1,1,30 vxor 29,2,3 vsel 29,3,4,29 vadduwm 5,5,1 .long 0x13C28682 vadduwm 30,30,29 vadduwm 1,1,30 lvx 28,0,7 .long 0x7E002699 addi 4,4,16 vsldoi 15,14,14,4 vadduwm 0,0,15 vsel 29,7,6,5 vadduwm 7,7,28 vadduwm 0,0,29 .long 0x13C5FE82 vadduwm 0,0,30 vxor 29,1,2 vsel 29,2,3,29 vadduwm 4,4,0 .long 0x13C18682 vadduwm 30,30,29 vadduwm 0,0,30 lvx 28,10,7 vperm 16,16,16,31 vadduwm 7,7,16 vsel 29,6,5,4 vadduwm 6,6,28 vadduwm 7,7,29 .long 0x13C4FE82 vadduwm 7,7,30 vxor 29,0,1 vsel 29,1,2,29 vadduwm 3,3,7 .long 0x13C08682 vadduwm 30,30,29 vadduwm 7,7,30 lvx 28,26,7 vsldoi 17,16,16,4 vadduwm 6,6,17 vsel 29,5,4,3 vadduwm 5,5,28 vadduwm 6,6,29 .long 0x13C3FE82 vadduwm 6,6,30 vxor 29,7,0 vsel 29,0,1,29 vadduwm 2,2,6 .long 0x13C78682 vadduwm 30,30,29 vadduwm 6,6,30 lvx 28,27,7 vsldoi 18,17,17,4 vadduwm 5,5,18 vsel 29,4,3,2 vadduwm 4,4,28 vadduwm 5,5,29 .long 0x13C2FE82 vadduwm 5,5,30 vxor 29,6,7 vsel 29,7,0,29 vadduwm 1,1,5 .long 0x13C68682 vadduwm 30,30,29 vadduwm 5,5,30 lvx 28,28,7 .long 0x7F002699 addi 4,4,16 vsldoi 19,18,18,4 vadduwm 4,4,19 vsel 29,3,2,1 vadduwm 3,3,28 vadduwm 4,4,29 .long 0x13C1FE82 vadduwm 4,4,30 vxor 29,5,6 vsel 29,6,7,29 vadduwm 0,0,4 .long 0x13C58682 vadduwm 30,30,29 vadduwm 4,4,30 lvx 28,29,7 vperm 24,24,24,31 vadduwm 3,3,24 vsel 29,2,1,0 vadduwm 2,2,28 vadduwm 3,3,29 .long 0x13C0FE82 vadduwm 3,3,30 vxor 29,4,5 vsel 29,5,6,29 vadduwm 7,7,3 .long 0x13C48682 vadduwm 30,30,29 vadduwm 3,3,30 lvx 28,30,7 vsldoi 25,24,24,4 vadduwm 2,2,25 vsel 29,1,0,7 vadduwm 1,1,28 vadduwm 2,2,29 .long 0x13C7FE82 vadduwm 2,2,30 vxor 29,3,4 vsel 29,4,5,29 vadduwm 6,6,2 .long 0x13C38682 vadduwm 30,30,29 vadduwm 2,2,30 lvx 28,31,7 addi 7,7,0x80 vsldoi 26,25,25,4 vadduwm 1,1,26 vsel 29,0,7,6 vadduwm 0,0,28 vadduwm 1,1,29 .long 0x13C6FE82 vadduwm 1,1,30 vxor 29,2,3 vsel 29,3,4,29 vadduwm 5,5,1 .long 0x13C28682 vadduwm 30,30,29 vadduwm 1,1,30 lvx 28,0,7 vsldoi 27,26,26,4 .long 0x13C90682 vadduwm 8,8,30 .long 0x13DA7E82 vadduwm 8,8,30 vadduwm 8,8,17 vadduwm 0,0,27 vsel 29,7,6,5 vadduwm 7,7,28 vadduwm 0,0,29 .long 0x13C5FE82 vadduwm 0,0,30 vxor 29,1,2 vsel 29,2,3,29 vadduwm 4,4,0 .long 0x13C18682 vadduwm 30,30,29 vadduwm 0,0,30 lvx 28,10,7 mtctr 0 b .L16_xx .align 5 .L16_xx: .long 0x13CA0682 vadduwm 9,9,30 .long 0x13DB7E82 vadduwm 9,9,30 vadduwm 9,9,18 vadduwm 7,7,8 vsel 29,6,5,4 vadduwm 6,6,28 vadduwm 7,7,29 .long 0x13C4FE82 vadduwm 7,7,30 vxor 29,0,1 vsel 29,1,2,29 vadduwm 3,3,7 .long 0x13C08682 vadduwm 30,30,29 vadduwm 7,7,30 lvx 28,26,7 .long 0x13CB0682 vadduwm 10,10,30 .long 0x13C87E82 vadduwm 10,10,30 vadduwm 10,10,19 vadduwm 6,6,9 vsel 29,5,4,3 vadduwm 5,5,28 vadduwm 6,6,29 .long 0x13C3FE82 vadduwm 6,6,30 vxor 29,7,0 vsel 29,0,1,29 vadduwm 2,2,6 .long 0x13C78682 vadduwm 30,30,29 vadduwm 6,6,30 lvx 28,27,7 .long 0x13CC0682 vadduwm 11,11,30 .long 0x13C97E82 vadduwm 11,11,30 vadduwm 11,11,24 vadduwm 5,5,10 vsel 29,4,3,2 vadduwm 4,4,28 vadduwm 5,5,29 .long 0x13C2FE82 vadduwm 5,5,30 vxor 29,6,7 vsel 29,7,0,29 vadduwm 1,1,5 .long 0x13C68682 vadduwm 30,30,29 vadduwm 5,5,30 lvx 28,28,7 .long 0x13CD0682 vadduwm 12,12,30 .long 0x13CA7E82 vadduwm 12,12,30 vadduwm 12,12,25 vadduwm 4,4,11 vsel 29,3,2,1 vadduwm 3,3,28 vadduwm 4,4,29 .long 0x13C1FE82 vadduwm 4,4,30 vxor 29,5,6 vsel 29,6,7,29 vadduwm 0,0,4 .long 0x13C58682 vadduwm 30,30,29 vadduwm 4,4,30 lvx 28,29,7 .long 0x13CE0682 vadduwm 13,13,30 .long 0x13CB7E82 vadduwm 13,13,30 vadduwm 13,13,26 vadduwm 3,3,12 vsel 29,2,1,0 vadduwm 2,2,28 vadduwm 3,3,29 .long 0x13C0FE82 vadduwm 3,3,30 vxor 29,4,5 vsel 29,5,6,29 vadduwm 7,7,3 .long 0x13C48682 vadduwm 30,30,29 vadduwm 3,3,30 lvx 28,30,7 .long 0x13CF0682 vadduwm 14,14,30 .long 0x13CC7E82 vadduwm 14,14,30 vadduwm 14,14,27 vadduwm 2,2,13 vsel 29,1,0,7 vadduwm 1,1,28 vadduwm 2,2,29 .long 0x13C7FE82 vadduwm 2,2,30 vxor 29,3,4 vsel 29,4,5,29 vadduwm 6,6,2 .long 0x13C38682 vadduwm 30,30,29 vadduwm 2,2,30 lvx 28,31,7 addi 7,7,0x80 .long 0x13D00682 vadduwm 15,15,30 .long 0x13CD7E82 vadduwm 15,15,30 vadduwm 15,15,8 vadduwm 1,1,14 vsel 29,0,7,6 vadduwm 0,0,28 vadduwm 1,1,29 .long 0x13C6FE82 vadduwm 1,1,30 vxor 29,2,3 vsel 29,3,4,29 vadduwm 5,5,1 .long 0x13C28682 vadduwm 30,30,29 vadduwm 1,1,30 lvx 28,0,7 .long 0x13D10682 vadduwm 16,16,30 .long 0x13CE7E82 vadduwm 16,16,30 vadduwm 16,16,9 vadduwm 0,0,15 vsel 29,7,6,5 vadduwm 7,7,28 vadduwm 0,0,29 .long 0x13C5FE82 vadduwm 0,0,30 vxor 29,1,2 vsel 29,2,3,29 vadduwm 4,4,0 .long 0x13C18682 vadduwm 30,30,29 vadduwm 0,0,30 lvx 28,10,7 .long 0x13D20682 vadduwm 17,17,30 .long 0x13CF7E82 vadduwm 17,17,30 vadduwm 17,17,10 vadduwm 7,7,16 vsel 29,6,5,4 vadduwm 6,6,28 vadduwm 7,7,29 .long 0x13C4FE82 vadduwm 7,7,30 vxor 29,0,1 vsel 29,1,2,29 vadduwm 3,3,7 .long 0x13C08682 vadduwm 30,30,29 vadduwm 7,7,30 lvx 28,26,7 .long 0x13D30682 vadduwm 18,18,30 .long 0x13D07E82 vadduwm 18,18,30 vadduwm 18,18,11 vadduwm 6,6,17 vsel 29,5,4,3 vadduwm 5,5,28 vadduwm 6,6,29 .long 0x13C3FE82 vadduwm 6,6,30 vxor 29,7,0 vsel 29,0,1,29 vadduwm 2,2,6 .long 0x13C78682 vadduwm 30,30,29 vadduwm 6,6,30 lvx 28,27,7 .long 0x13D80682 vadduwm 19,19,30 .long 0x13D17E82 vadduwm 19,19,30 vadduwm 19,19,12 vadduwm 5,5,18 vsel 29,4,3,2 vadduwm 4,4,28 vadduwm 5,5,29 .long 0x13C2FE82 vadduwm 5,5,30 vxor 29,6,7 vsel 29,7,0,29 vadduwm 1,1,5 .long 0x13C68682 vadduwm 30,30,29 vadduwm 5,5,30 lvx 28,28,7 .long 0x13D90682 vadduwm 24,24,30 .long 0x13D27E82 vadduwm 24,24,30 vadduwm 24,24,13 vadduwm 4,4,19 vsel 29,3,2,1 vadduwm 3,3,28 vadduwm 4,4,29 .long 0x13C1FE82 vadduwm 4,4,30 vxor 29,5,6 vsel 29,6,7,29 vadduwm 0,0,4 .long 0x13C58682 vadduwm 30,30,29 vadduwm 4,4,30 lvx 28,29,7 .long 0x13DA0682 vadduwm 25,25,30 .long 0x13D37E82 vadduwm 25,25,30 vadduwm 25,25,14 vadduwm 3,3,24 vsel 29,2,1,0 vadduwm 2,2,28 vadduwm 3,3,29 .long 0x13C0FE82 vadduwm 3,3,30 vxor 29,4,5 vsel 29,5,6,29 vadduwm 7,7,3 .long 0x13C48682 vadduwm 30,30,29 vadduwm 3,3,30 lvx 28,30,7 .long 0x13DB0682 vadduwm 26,26,30 .long 0x13D87E82 vadduwm 26,26,30 vadduwm 26,26,15 vadduwm 2,2,25 vsel 29,1,0,7 vadduwm 1,1,28 vadduwm 2,2,29 .long 0x13C7FE82 vadduwm 2,2,30 vxor 29,3,4 vsel 29,4,5,29 vadduwm 6,6,2 .long 0x13C38682 vadduwm 30,30,29 vadduwm 2,2,30 lvx 28,31,7 addi 7,7,0x80 .long 0x13C80682 vadduwm 27,27,30 .long 0x13D97E82 vadduwm 27,27,30 vadduwm 27,27,16 vadduwm 1,1,26 vsel 29,0,7,6 vadduwm 0,0,28 vadduwm 1,1,29 .long 0x13C6FE82 vadduwm 1,1,30 vxor 29,2,3 vsel 29,3,4,29 vadduwm 5,5,1 .long 0x13C28682 vadduwm 30,30,29 vadduwm 1,1,30 lvx 28,0,7 .long 0x13C90682 vadduwm 8,8,30 .long 0x13DA7E82 vadduwm 8,8,30 vadduwm 8,8,17 vadduwm 0,0,27 vsel 29,7,6,5 vadduwm 7,7,28 vadduwm 0,0,29 .long 0x13C5FE82 vadduwm 0,0,30 vxor 29,1,2 vsel 29,2,3,29 vadduwm 4,4,0 .long 0x13C18682 vadduwm 30,30,29 vadduwm 0,0,30 lvx 28,10,7 bdnz .L16_xx lvx 10,0,11 subic. 5,5,1 lvx 11,10,11 vadduwm 0,0,10 lvx 12,26,11 vadduwm 1,1,11 lvx 13,27,11 vadduwm 2,2,12 lvx 14,28,11 vadduwm 3,3,13 lvx 15,29,11 vadduwm 4,4,14 lvx 16,30,11 vadduwm 5,5,15 lvx 17,31,11 vadduwm 6,6,16 vadduwm 7,7,17 bne .Loop lvx 8,26,7 vperm 0,0,1,28 lvx 9,27,7 vperm 4,4,5,28 vperm 0,0,2,8 vperm 4,4,6,8 vperm 0,0,3,9 vperm 4,4,7,9 .long 0x7C001F19 .long 0x7C8A1F19 addi 11,1,207 mtlr 8 or 12,12,12 lvx 24,0,11 lvx 25,10,11 lvx 26,26,11 lvx 27,27,11 lvx 28,28,11 lvx 29,29,11 lvx 30,30,11 lvx 31,31,11 ld 26,336(1) ld 27,344(1) ld 28,352(1) ld 29,360(1) ld 30,368(1) ld 31,376(1) addi 1,1,384 blr .long 0 .byte 0,12,4,1,0x80,6,3,0 .long 0 .size zfs_sha256_power8,.-zfs_sha256_power8 .align 6 .LPICmeup: mflr 0 bcl 20,31,$+4 mflr 6 addi 6,6,56 mtlr 0 blr .long 0 .byte 0,12,0x14,0,0,0,0,0 .space 28 .long 0x428a2f98,0x428a2f98,0x428a2f98,0x428a2f98 .long 0x71374491,0x71374491,0x71374491,0x71374491 .long 0xb5c0fbcf,0xb5c0fbcf,0xb5c0fbcf,0xb5c0fbcf .long 0xe9b5dba5,0xe9b5dba5,0xe9b5dba5,0xe9b5dba5 .long 0x3956c25b,0x3956c25b,0x3956c25b,0x3956c25b .long 0x59f111f1,0x59f111f1,0x59f111f1,0x59f111f1 .long 0x923f82a4,0x923f82a4,0x923f82a4,0x923f82a4 .long 0xab1c5ed5,0xab1c5ed5,0xab1c5ed5,0xab1c5ed5 .long 0xd807aa98,0xd807aa98,0xd807aa98,0xd807aa98 .long 0x12835b01,0x12835b01,0x12835b01,0x12835b01 .long 0x243185be,0x243185be,0x243185be,0x243185be .long 0x550c7dc3,0x550c7dc3,0x550c7dc3,0x550c7dc3 .long 0x72be5d74,0x72be5d74,0x72be5d74,0x72be5d74 .long 0x80deb1fe,0x80deb1fe,0x80deb1fe,0x80deb1fe .long 0x9bdc06a7,0x9bdc06a7,0x9bdc06a7,0x9bdc06a7 .long 0xc19bf174,0xc19bf174,0xc19bf174,0xc19bf174 .long 0xe49b69c1,0xe49b69c1,0xe49b69c1,0xe49b69c1 .long 0xefbe4786,0xefbe4786,0xefbe4786,0xefbe4786 .long 0x0fc19dc6,0x0fc19dc6,0x0fc19dc6,0x0fc19dc6 .long 0x240ca1cc,0x240ca1cc,0x240ca1cc,0x240ca1cc .long 0x2de92c6f,0x2de92c6f,0x2de92c6f,0x2de92c6f .long 0x4a7484aa,0x4a7484aa,0x4a7484aa,0x4a7484aa .long 0x5cb0a9dc,0x5cb0a9dc,0x5cb0a9dc,0x5cb0a9dc .long 0x76f988da,0x76f988da,0x76f988da,0x76f988da .long 0x983e5152,0x983e5152,0x983e5152,0x983e5152 .long 0xa831c66d,0xa831c66d,0xa831c66d,0xa831c66d .long 0xb00327c8,0xb00327c8,0xb00327c8,0xb00327c8 .long 0xbf597fc7,0xbf597fc7,0xbf597fc7,0xbf597fc7 .long 0xc6e00bf3,0xc6e00bf3,0xc6e00bf3,0xc6e00bf3 .long 0xd5a79147,0xd5a79147,0xd5a79147,0xd5a79147 .long 0x06ca6351,0x06ca6351,0x06ca6351,0x06ca6351 .long 0x14292967,0x14292967,0x14292967,0x14292967 .long 0x27b70a85,0x27b70a85,0x27b70a85,0x27b70a85 .long 0x2e1b2138,0x2e1b2138,0x2e1b2138,0x2e1b2138 .long 0x4d2c6dfc,0x4d2c6dfc,0x4d2c6dfc,0x4d2c6dfc .long 0x53380d13,0x53380d13,0x53380d13,0x53380d13 .long 0x650a7354,0x650a7354,0x650a7354,0x650a7354 .long 0x766a0abb,0x766a0abb,0x766a0abb,0x766a0abb .long 0x81c2c92e,0x81c2c92e,0x81c2c92e,0x81c2c92e .long 0x92722c85,0x92722c85,0x92722c85,0x92722c85 .long 0xa2bfe8a1,0xa2bfe8a1,0xa2bfe8a1,0xa2bfe8a1 .long 0xa81a664b,0xa81a664b,0xa81a664b,0xa81a664b .long 0xc24b8b70,0xc24b8b70,0xc24b8b70,0xc24b8b70 .long 0xc76c51a3,0xc76c51a3,0xc76c51a3,0xc76c51a3 .long 0xd192e819,0xd192e819,0xd192e819,0xd192e819 .long 0xd6990624,0xd6990624,0xd6990624,0xd6990624 .long 0xf40e3585,0xf40e3585,0xf40e3585,0xf40e3585 .long 0x106aa070,0x106aa070,0x106aa070,0x106aa070 .long 0x19a4c116,0x19a4c116,0x19a4c116,0x19a4c116 .long 0x1e376c08,0x1e376c08,0x1e376c08,0x1e376c08 .long 0x2748774c,0x2748774c,0x2748774c,0x2748774c .long 0x34b0bcb5,0x34b0bcb5,0x34b0bcb5,0x34b0bcb5 .long 0x391c0cb3,0x391c0cb3,0x391c0cb3,0x391c0cb3 .long 0x4ed8aa4a,0x4ed8aa4a,0x4ed8aa4a,0x4ed8aa4a .long 0x5b9cca4f,0x5b9cca4f,0x5b9cca4f,0x5b9cca4f .long 0x682e6ff3,0x682e6ff3,0x682e6ff3,0x682e6ff3 .long 0x748f82ee,0x748f82ee,0x748f82ee,0x748f82ee .long 0x78a5636f,0x78a5636f,0x78a5636f,0x78a5636f .long 0x84c87814,0x84c87814,0x84c87814,0x84c87814 .long 0x8cc70208,0x8cc70208,0x8cc70208,0x8cc70208 .long 0x90befffa,0x90befffa,0x90befffa,0x90befffa .long 0xa4506ceb,0xa4506ceb,0xa4506ceb,0xa4506ceb .long 0xbef9a3f7,0xbef9a3f7,0xbef9a3f7,0xbef9a3f7 .long 0xc67178f2,0xc67178f2,0xc67178f2,0xc67178f2 .long 0,0,0,0 .long 0x10111213,0x10111213,0x10111213,0x00010203 .long 0x10111213,0x10111213,0x04050607,0x00010203 .long 0x10111213,0x08090a0b,0x04050607,0x00010203 #endif diff --git a/module/icp/asm-ppc64/sha2/sha256-ppc.S b/module/icp/asm-ppc64/sha2/sha256-ppc.S index 2219e313c9c6..d039bc36ee11 100644 --- a/module/icp/asm-ppc64/sha2/sha256-ppc.S +++ b/module/icp/asm-ppc64/sha2/sha256-ppc.S @@ -1,2712 +1,2727 @@ /* * Copyright 2004-2022 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * Portions Copyright (c) 2022 Tino Reichardt * - modified assembly to fit into OpenZFS */ #if (defined(__PPC64__) && defined(__BIG_ENDIAN__)) +#if (!defined(_CALL_ELF) || _CALL_ELF == 1) .text .globl zfs_sha256_ppc .globl .zfs_sha256_ppc .type zfs_sha256_ppc,@function .section ".opd","aw" .align 3 zfs_sha256_ppc: .quad .zfs_sha256_ppc,.TOC.@tocbase,0 .previous .align 6 .zfs_sha256_ppc: +#else +.abiversion 2 +.text + +.globl zfs_sha256_ppc +.type zfs_sha256_ppc,@function +.align 6 +zfs_sha256_ppc: +.localentry zfs_sha256_ppc,0 +#endif stdu 1,-320(1) mflr 0 sldi 5,5,6 std 3,144(1) std 14,176(1) std 15,184(1) std 16,192(1) std 17,200(1) std 18,208(1) std 19,216(1) std 20,224(1) std 21,232(1) std 22,240(1) std 23,248(1) std 24,256(1) std 25,264(1) std 26,272(1) std 27,280(1) std 28,288(1) std 29,296(1) std 30,304(1) std 31,312(1) std 0,336(1) lwz 8,0(3) mr 31,4 lwz 9,4(3) lwz 10,8(3) lwz 11,12(3) lwz 12,16(3) lwz 6,20(3) lwz 14,24(3) lwz 15,28(3) bl .LPICmeup .LPICedup: andi. 0,31,3 bne .Lunaligned .Laligned: add 5,31,5 std 5,128(1) std 31,136(1) bl .Lsha2_block_private b .Ldone .align 4 .Lunaligned: subfic 0,31,4096 andi. 0,0,4032 beq .Lcross_page cmpld 5,0 ble .Laligned subfc 5,0,5 add 0,31,0 std 5,120(1) std 0,128(1) std 31,136(1) bl .Lsha2_block_private ld 5,120(1) .Lcross_page: li 0,16 mtctr 0 addi 20,1,48 .Lmemcpy: lbz 16,0(31) lbz 17,1(31) lbz 18,2(31) lbz 19,3(31) addi 31,31,4 stb 16,0(20) stb 17,1(20) stb 18,2(20) stb 19,3(20) addi 20,20,4 bdnz .Lmemcpy std 31,112(1) addi 0,1,112 addi 31,1,48 std 5,120(1) std 0,128(1) std 31,136(1) bl .Lsha2_block_private ld 31,112(1) ld 5,120(1) addic. 5,5,-64 bne .Lunaligned .Ldone: ld 0,336(1) ld 14,176(1) ld 15,184(1) ld 16,192(1) ld 17,200(1) ld 18,208(1) ld 19,216(1) ld 20,224(1) ld 21,232(1) ld 22,240(1) ld 23,248(1) ld 24,256(1) ld 25,264(1) ld 26,272(1) ld 27,280(1) ld 28,288(1) ld 29,296(1) ld 30,304(1) ld 31,312(1) mtlr 0 addi 1,1,320 blr .long 0 .byte 0,12,4,1,0x80,18,3,0 .long 0 .align 4 .Lsha2_block_private: lwz 0,0(7) lwz 16,0(31) rotrwi 3,12,6 rotrwi 4,12,11 and 5,6,12 xor 3,3,4 add 15,15,0 andc 0,14,12 rotrwi 4,4,14 or 5,5,0 add 15,15,16 xor 3,3,4 add 15,15,5 add 15,15,3 rotrwi 3,8,2 rotrwi 4,8,13 and 5,8,9 and 0,8,10 xor 3,3,4 rotrwi 4,4,9 xor 5,5,0 and 0,9,10 xor 3,3,4 add 11,11,15 xor 5,5,0 lwz 0,4(7) add 15,15,3 add 15,15,5 lwz 17,4(31) rotrwi 3,11,6 rotrwi 4,11,11 and 5,12,11 xor 3,3,4 add 14,14,0 andc 0,6,11 rotrwi 4,4,14 or 5,5,0 add 14,14,17 xor 3,3,4 add 14,14,5 add 14,14,3 rotrwi 3,15,2 rotrwi 4,15,13 and 5,15,8 and 0,15,9 xor 3,3,4 rotrwi 4,4,9 xor 5,5,0 and 0,8,9 xor 3,3,4 add 10,10,14 xor 5,5,0 lwz 0,8(7) add 14,14,3 add 14,14,5 lwz 18,8(31) rotrwi 3,10,6 rotrwi 4,10,11 and 5,11,10 xor 3,3,4 add 6,6,0 andc 0,12,10 rotrwi 4,4,14 or 5,5,0 add 6,6,18 xor 3,3,4 add 6,6,5 add 6,6,3 rotrwi 3,14,2 rotrwi 4,14,13 and 5,14,15 and 0,14,8 xor 3,3,4 rotrwi 4,4,9 xor 5,5,0 and 0,15,8 xor 3,3,4 add 9,9,6 xor 5,5,0 lwz 0,12(7) add 6,6,3 add 6,6,5 lwz 19,12(31) rotrwi 3,9,6 rotrwi 4,9,11 and 5,10,9 xor 3,3,4 add 12,12,0 andc 0,11,9 rotrwi 4,4,14 or 5,5,0 add 12,12,19 xor 3,3,4 add 12,12,5 add 12,12,3 rotrwi 3,6,2 rotrwi 4,6,13 and 5,6,14 and 0,6,15 xor 3,3,4 rotrwi 4,4,9 xor 5,5,0 and 0,14,15 xor 3,3,4 add 8,8,12 xor 5,5,0 lwz 0,16(7) add 12,12,3 add 12,12,5 lwz 20,16(31) rotrwi 3,8,6 rotrwi 4,8,11 and 5,9,8 xor 3,3,4 add 11,11,0 andc 0,10,8 rotrwi 4,4,14 or 5,5,0 add 11,11,20 xor 3,3,4 add 11,11,5 add 11,11,3 rotrwi 3,12,2 rotrwi 4,12,13 and 5,12,6 and 0,12,14 xor 3,3,4 rotrwi 4,4,9 xor 5,5,0 and 0,6,14 xor 3,3,4 add 15,15,11 xor 5,5,0 lwz 0,20(7) add 11,11,3 add 11,11,5 lwz 21,20(31) rotrwi 3,15,6 rotrwi 4,15,11 and 5,8,15 xor 3,3,4 add 10,10,0 andc 0,9,15 rotrwi 4,4,14 or 5,5,0 add 10,10,21 xor 3,3,4 add 10,10,5 add 10,10,3 rotrwi 3,11,2 rotrwi 4,11,13 and 5,11,12 and 0,11,6 xor 3,3,4 rotrwi 4,4,9 xor 5,5,0 and 0,12,6 xor 3,3,4 add 14,14,10 xor 5,5,0 lwz 0,24(7) add 10,10,3 add 10,10,5 lwz 22,24(31) rotrwi 3,14,6 rotrwi 4,14,11 and 5,15,14 xor 3,3,4 add 9,9,0 andc 0,8,14 rotrwi 4,4,14 or 5,5,0 add 9,9,22 xor 3,3,4 add 9,9,5 add 9,9,3 rotrwi 3,10,2 rotrwi 4,10,13 and 5,10,11 and 0,10,12 xor 3,3,4 rotrwi 4,4,9 xor 5,5,0 and 0,11,12 xor 3,3,4 add 6,6,9 xor 5,5,0 lwz 0,28(7) add 9,9,3 add 9,9,5 lwz 23,28(31) rotrwi 3,6,6 rotrwi 4,6,11 and 5,14,6 xor 3,3,4 add 8,8,0 andc 0,15,6 rotrwi 4,4,14 or 5,5,0 add 8,8,23 xor 3,3,4 add 8,8,5 add 8,8,3 rotrwi 3,9,2 rotrwi 4,9,13 and 5,9,10 and 0,9,11 xor 3,3,4 rotrwi 4,4,9 xor 5,5,0 and 0,10,11 xor 3,3,4 add 12,12,8 xor 5,5,0 lwz 0,32(7) add 8,8,3 add 8,8,5 lwz 24,32(31) rotrwi 3,12,6 rotrwi 4,12,11 and 5,6,12 xor 3,3,4 add 15,15,0 andc 0,14,12 rotrwi 4,4,14 or 5,5,0 add 15,15,24 xor 3,3,4 add 15,15,5 add 15,15,3 rotrwi 3,8,2 rotrwi 4,8,13 and 5,8,9 and 0,8,10 xor 3,3,4 rotrwi 4,4,9 xor 5,5,0 and 0,9,10 xor 3,3,4 add 11,11,15 xor 5,5,0 lwz 0,36(7) add 15,15,3 add 15,15,5 lwz 25,36(31) rotrwi 3,11,6 rotrwi 4,11,11 and 5,12,11 xor 3,3,4 add 14,14,0 andc 0,6,11 rotrwi 4,4,14 or 5,5,0 add 14,14,25 xor 3,3,4 add 14,14,5 add 14,14,3 rotrwi 3,15,2 rotrwi 4,15,13 and 5,15,8 and 0,15,9 xor 3,3,4 rotrwi 4,4,9 xor 5,5,0 and 0,8,9 xor 3,3,4 add 10,10,14 xor 5,5,0 lwz 0,40(7) add 14,14,3 add 14,14,5 lwz 26,40(31) rotrwi 3,10,6 rotrwi 4,10,11 and 5,11,10 xor 3,3,4 add 6,6,0 andc 0,12,10 rotrwi 4,4,14 or 5,5,0 add 6,6,26 xor 3,3,4 add 6,6,5 add 6,6,3 rotrwi 3,14,2 rotrwi 4,14,13 and 5,14,15 and 0,14,8 xor 3,3,4 rotrwi 4,4,9 xor 5,5,0 and 0,15,8 xor 3,3,4 add 9,9,6 xor 5,5,0 lwz 0,44(7) add 6,6,3 add 6,6,5 lwz 27,44(31) rotrwi 3,9,6 rotrwi 4,9,11 and 5,10,9 xor 3,3,4 add 12,12,0 andc 0,11,9 rotrwi 4,4,14 or 5,5,0 add 12,12,27 xor 3,3,4 add 12,12,5 add 12,12,3 rotrwi 3,6,2 rotrwi 4,6,13 and 5,6,14 and 0,6,15 xor 3,3,4 rotrwi 4,4,9 xor 5,5,0 and 0,14,15 xor 3,3,4 add 8,8,12 xor 5,5,0 lwz 0,48(7) add 12,12,3 add 12,12,5 lwz 28,48(31) rotrwi 3,8,6 rotrwi 4,8,11 and 5,9,8 xor 3,3,4 add 11,11,0 andc 0,10,8 rotrwi 4,4,14 or 5,5,0 add 11,11,28 xor 3,3,4 add 11,11,5 add 11,11,3 rotrwi 3,12,2 rotrwi 4,12,13 and 5,12,6 and 0,12,14 xor 3,3,4 rotrwi 4,4,9 xor 5,5,0 and 0,6,14 xor 3,3,4 add 15,15,11 xor 5,5,0 lwz 0,52(7) add 11,11,3 add 11,11,5 lwz 29,52(31) rotrwi 3,15,6 rotrwi 4,15,11 and 5,8,15 xor 3,3,4 add 10,10,0 andc 0,9,15 rotrwi 4,4,14 or 5,5,0 add 10,10,29 xor 3,3,4 add 10,10,5 add 10,10,3 rotrwi 3,11,2 rotrwi 4,11,13 and 5,11,12 and 0,11,6 xor 3,3,4 rotrwi 4,4,9 xor 5,5,0 and 0,12,6 xor 3,3,4 add 14,14,10 xor 5,5,0 lwz 0,56(7) add 10,10,3 add 10,10,5 lwz 30,56(31) rotrwi 3,14,6 rotrwi 4,14,11 and 5,15,14 xor 3,3,4 add 9,9,0 andc 0,8,14 rotrwi 4,4,14 or 5,5,0 add 9,9,30 xor 3,3,4 add 9,9,5 add 9,9,3 rotrwi 3,10,2 rotrwi 4,10,13 and 5,10,11 and 0,10,12 xor 3,3,4 rotrwi 4,4,9 xor 5,5,0 and 0,11,12 xor 3,3,4 add 6,6,9 xor 5,5,0 lwz 0,60(7) add 9,9,3 add 9,9,5 lwz 31,60(31) rotrwi 3,6,6 rotrwi 4,6,11 and 5,14,6 xor 3,3,4 add 8,8,0 andc 0,15,6 rotrwi 4,4,14 or 5,5,0 add 8,8,31 xor 3,3,4 add 8,8,5 add 8,8,3 rotrwi 3,9,2 rotrwi 4,9,13 and 5,9,10 and 0,9,11 xor 3,3,4 rotrwi 4,4,9 xor 5,5,0 and 0,10,11 xor 3,3,4 add 12,12,8 xor 5,5,0 add 8,8,3 add 8,8,5 li 5,3 mtctr 5 .align 4 .Lrounds: addi 7,7,64 rotrwi 3,17,7 rotrwi 4,17,18 rotrwi 5,30,17 rotrwi 0,30,19 xor 3,3,4 srwi 4,17,3 xor 5,5,0 srwi 0,30,10 add 16,16,25 xor 3,3,4 xor 5,5,0 lwz 0,0(7) add 16,16,3 add 16,16,5 rotrwi 3,12,6 rotrwi 4,12,11 and 5,6,12 xor 3,3,4 add 15,15,0 andc 0,14,12 rotrwi 4,4,14 or 5,5,0 add 15,15,16 xor 3,3,4 add 15,15,5 add 15,15,3 rotrwi 3,8,2 rotrwi 4,8,13 and 5,8,9 and 0,8,10 xor 3,3,4 rotrwi 4,4,9 xor 5,5,0 and 0,9,10 xor 3,3,4 add 11,11,15 xor 5,5,0 add 15,15,3 add 15,15,5 rotrwi 3,18,7 rotrwi 4,18,18 rotrwi 5,31,17 rotrwi 0,31,19 xor 3,3,4 srwi 4,18,3 xor 5,5,0 srwi 0,31,10 add 17,17,26 xor 3,3,4 xor 5,5,0 lwz 0,4(7) add 17,17,3 add 17,17,5 rotrwi 3,11,6 rotrwi 4,11,11 and 5,12,11 xor 3,3,4 add 14,14,0 andc 0,6,11 rotrwi 4,4,14 or 5,5,0 add 14,14,17 xor 3,3,4 add 14,14,5 add 14,14,3 rotrwi 3,15,2 rotrwi 4,15,13 and 5,15,8 and 0,15,9 xor 3,3,4 rotrwi 4,4,9 xor 5,5,0 and 0,8,9 xor 3,3,4 add 10,10,14 xor 5,5,0 add 14,14,3 add 14,14,5 rotrwi 3,19,7 rotrwi 4,19,18 rotrwi 5,16,17 rotrwi 0,16,19 xor 3,3,4 srwi 4,19,3 xor 5,5,0 srwi 0,16,10 add 18,18,27 xor 3,3,4 xor 5,5,0 lwz 0,8(7) add 18,18,3 add 18,18,5 rotrwi 3,10,6 rotrwi 4,10,11 and 5,11,10 xor 3,3,4 add 6,6,0 andc 0,12,10 rotrwi 4,4,14 or 5,5,0 add 6,6,18 xor 3,3,4 add 6,6,5 add 6,6,3 rotrwi 3,14,2 rotrwi 4,14,13 and 5,14,15 and 0,14,8 xor 3,3,4 rotrwi 4,4,9 xor 5,5,0 and 0,15,8 xor 3,3,4 add 9,9,6 xor 5,5,0 add 6,6,3 add 6,6,5 rotrwi 3,20,7 rotrwi 4,20,18 rotrwi 5,17,17 rotrwi 0,17,19 xor 3,3,4 srwi 4,20,3 xor 5,5,0 srwi 0,17,10 add 19,19,28 xor 3,3,4 xor 5,5,0 lwz 0,12(7) add 19,19,3 add 19,19,5 rotrwi 3,9,6 rotrwi 4,9,11 and 5,10,9 xor 3,3,4 add 12,12,0 andc 0,11,9 rotrwi 4,4,14 or 5,5,0 add 12,12,19 xor 3,3,4 add 12,12,5 add 12,12,3 rotrwi 3,6,2 rotrwi 4,6,13 and 5,6,14 and 0,6,15 xor 3,3,4 rotrwi 4,4,9 xor 5,5,0 and 0,14,15 xor 3,3,4 add 8,8,12 xor 5,5,0 add 12,12,3 add 12,12,5 rotrwi 3,21,7 rotrwi 4,21,18 rotrwi 5,18,17 rotrwi 0,18,19 xor 3,3,4 srwi 4,21,3 xor 5,5,0 srwi 0,18,10 add 20,20,29 xor 3,3,4 xor 5,5,0 lwz 0,16(7) add 20,20,3 add 20,20,5 rotrwi 3,8,6 rotrwi 4,8,11 and 5,9,8 xor 3,3,4 add 11,11,0 andc 0,10,8 rotrwi 4,4,14 or 5,5,0 add 11,11,20 xor 3,3,4 add 11,11,5 add 11,11,3 rotrwi 3,12,2 rotrwi 4,12,13 and 5,12,6 and 0,12,14 xor 3,3,4 rotrwi 4,4,9 xor 5,5,0 and 0,6,14 xor 3,3,4 add 15,15,11 xor 5,5,0 add 11,11,3 add 11,11,5 rotrwi 3,22,7 rotrwi 4,22,18 rotrwi 5,19,17 rotrwi 0,19,19 xor 3,3,4 srwi 4,22,3 xor 5,5,0 srwi 0,19,10 add 21,21,30 xor 3,3,4 xor 5,5,0 lwz 0,20(7) add 21,21,3 add 21,21,5 rotrwi 3,15,6 rotrwi 4,15,11 and 5,8,15 xor 3,3,4 add 10,10,0 andc 0,9,15 rotrwi 4,4,14 or 5,5,0 add 10,10,21 xor 3,3,4 add 10,10,5 add 10,10,3 rotrwi 3,11,2 rotrwi 4,11,13 and 5,11,12 and 0,11,6 xor 3,3,4 rotrwi 4,4,9 xor 5,5,0 and 0,12,6 xor 3,3,4 add 14,14,10 xor 5,5,0 add 10,10,3 add 10,10,5 rotrwi 3,23,7 rotrwi 4,23,18 rotrwi 5,20,17 rotrwi 0,20,19 xor 3,3,4 srwi 4,23,3 xor 5,5,0 srwi 0,20,10 add 22,22,31 xor 3,3,4 xor 5,5,0 lwz 0,24(7) add 22,22,3 add 22,22,5 rotrwi 3,14,6 rotrwi 4,14,11 and 5,15,14 xor 3,3,4 add 9,9,0 andc 0,8,14 rotrwi 4,4,14 or 5,5,0 add 9,9,22 xor 3,3,4 add 9,9,5 add 9,9,3 rotrwi 3,10,2 rotrwi 4,10,13 and 5,10,11 and 0,10,12 xor 3,3,4 rotrwi 4,4,9 xor 5,5,0 and 0,11,12 xor 3,3,4 add 6,6,9 xor 5,5,0 add 9,9,3 add 9,9,5 rotrwi 3,24,7 rotrwi 4,24,18 rotrwi 5,21,17 rotrwi 0,21,19 xor 3,3,4 srwi 4,24,3 xor 5,5,0 srwi 0,21,10 add 23,23,16 xor 3,3,4 xor 5,5,0 lwz 0,28(7) add 23,23,3 add 23,23,5 rotrwi 3,6,6 rotrwi 4,6,11 and 5,14,6 xor 3,3,4 add 8,8,0 andc 0,15,6 rotrwi 4,4,14 or 5,5,0 add 8,8,23 xor 3,3,4 add 8,8,5 add 8,8,3 rotrwi 3,9,2 rotrwi 4,9,13 and 5,9,10 and 0,9,11 xor 3,3,4 rotrwi 4,4,9 xor 5,5,0 and 0,10,11 xor 3,3,4 add 12,12,8 xor 5,5,0 add 8,8,3 add 8,8,5 rotrwi 3,25,7 rotrwi 4,25,18 rotrwi 5,22,17 rotrwi 0,22,19 xor 3,3,4 srwi 4,25,3 xor 5,5,0 srwi 0,22,10 add 24,24,17 xor 3,3,4 xor 5,5,0 lwz 0,32(7) add 24,24,3 add 24,24,5 rotrwi 3,12,6 rotrwi 4,12,11 and 5,6,12 xor 3,3,4 add 15,15,0 andc 0,14,12 rotrwi 4,4,14 or 5,5,0 add 15,15,24 xor 3,3,4 add 15,15,5 add 15,15,3 rotrwi 3,8,2 rotrwi 4,8,13 and 5,8,9 and 0,8,10 xor 3,3,4 rotrwi 4,4,9 xor 5,5,0 and 0,9,10 xor 3,3,4 add 11,11,15 xor 5,5,0 add 15,15,3 add 15,15,5 rotrwi 3,26,7 rotrwi 4,26,18 rotrwi 5,23,17 rotrwi 0,23,19 xor 3,3,4 srwi 4,26,3 xor 5,5,0 srwi 0,23,10 add 25,25,18 xor 3,3,4 xor 5,5,0 lwz 0,36(7) add 25,25,3 add 25,25,5 rotrwi 3,11,6 rotrwi 4,11,11 and 5,12,11 xor 3,3,4 add 14,14,0 andc 0,6,11 rotrwi 4,4,14 or 5,5,0 add 14,14,25 xor 3,3,4 add 14,14,5 add 14,14,3 rotrwi 3,15,2 rotrwi 4,15,13 and 5,15,8 and 0,15,9 xor 3,3,4 rotrwi 4,4,9 xor 5,5,0 and 0,8,9 xor 3,3,4 add 10,10,14 xor 5,5,0 add 14,14,3 add 14,14,5 rotrwi 3,27,7 rotrwi 4,27,18 rotrwi 5,24,17 rotrwi 0,24,19 xor 3,3,4 srwi 4,27,3 xor 5,5,0 srwi 0,24,10 add 26,26,19 xor 3,3,4 xor 5,5,0 lwz 0,40(7) add 26,26,3 add 26,26,5 rotrwi 3,10,6 rotrwi 4,10,11 and 5,11,10 xor 3,3,4 add 6,6,0 andc 0,12,10 rotrwi 4,4,14 or 5,5,0 add 6,6,26 xor 3,3,4 add 6,6,5 add 6,6,3 rotrwi 3,14,2 rotrwi 4,14,13 and 5,14,15 and 0,14,8 xor 3,3,4 rotrwi 4,4,9 xor 5,5,0 and 0,15,8 xor 3,3,4 add 9,9,6 xor 5,5,0 add 6,6,3 add 6,6,5 rotrwi 3,28,7 rotrwi 4,28,18 rotrwi 5,25,17 rotrwi 0,25,19 xor 3,3,4 srwi 4,28,3 xor 5,5,0 srwi 0,25,10 add 27,27,20 xor 3,3,4 xor 5,5,0 lwz 0,44(7) add 27,27,3 add 27,27,5 rotrwi 3,9,6 rotrwi 4,9,11 and 5,10,9 xor 3,3,4 add 12,12,0 andc 0,11,9 rotrwi 4,4,14 or 5,5,0 add 12,12,27 xor 3,3,4 add 12,12,5 add 12,12,3 rotrwi 3,6,2 rotrwi 4,6,13 and 5,6,14 and 0,6,15 xor 3,3,4 rotrwi 4,4,9 xor 5,5,0 and 0,14,15 xor 3,3,4 add 8,8,12 xor 5,5,0 add 12,12,3 add 12,12,5 rotrwi 3,29,7 rotrwi 4,29,18 rotrwi 5,26,17 rotrwi 0,26,19 xor 3,3,4 srwi 4,29,3 xor 5,5,0 srwi 0,26,10 add 28,28,21 xor 3,3,4 xor 5,5,0 lwz 0,48(7) add 28,28,3 add 28,28,5 rotrwi 3,8,6 rotrwi 4,8,11 and 5,9,8 xor 3,3,4 add 11,11,0 andc 0,10,8 rotrwi 4,4,14 or 5,5,0 add 11,11,28 xor 3,3,4 add 11,11,5 add 11,11,3 rotrwi 3,12,2 rotrwi 4,12,13 and 5,12,6 and 0,12,14 xor 3,3,4 rotrwi 4,4,9 xor 5,5,0 and 0,6,14 xor 3,3,4 add 15,15,11 xor 5,5,0 add 11,11,3 add 11,11,5 rotrwi 3,30,7 rotrwi 4,30,18 rotrwi 5,27,17 rotrwi 0,27,19 xor 3,3,4 srwi 4,30,3 xor 5,5,0 srwi 0,27,10 add 29,29,22 xor 3,3,4 xor 5,5,0 lwz 0,52(7) add 29,29,3 add 29,29,5 rotrwi 3,15,6 rotrwi 4,15,11 and 5,8,15 xor 3,3,4 add 10,10,0 andc 0,9,15 rotrwi 4,4,14 or 5,5,0 add 10,10,29 xor 3,3,4 add 10,10,5 add 10,10,3 rotrwi 3,11,2 rotrwi 4,11,13 and 5,11,12 and 0,11,6 xor 3,3,4 rotrwi 4,4,9 xor 5,5,0 and 0,12,6 xor 3,3,4 add 14,14,10 xor 5,5,0 add 10,10,3 add 10,10,5 rotrwi 3,31,7 rotrwi 4,31,18 rotrwi 5,28,17 rotrwi 0,28,19 xor 3,3,4 srwi 4,31,3 xor 5,5,0 srwi 0,28,10 add 30,30,23 xor 3,3,4 xor 5,5,0 lwz 0,56(7) add 30,30,3 add 30,30,5 rotrwi 3,14,6 rotrwi 4,14,11 and 5,15,14 xor 3,3,4 add 9,9,0 andc 0,8,14 rotrwi 4,4,14 or 5,5,0 add 9,9,30 xor 3,3,4 add 9,9,5 add 9,9,3 rotrwi 3,10,2 rotrwi 4,10,13 and 5,10,11 and 0,10,12 xor 3,3,4 rotrwi 4,4,9 xor 5,5,0 and 0,11,12 xor 3,3,4 add 6,6,9 xor 5,5,0 add 9,9,3 add 9,9,5 rotrwi 3,16,7 rotrwi 4,16,18 rotrwi 5,29,17 rotrwi 0,29,19 xor 3,3,4 srwi 4,16,3 xor 5,5,0 srwi 0,29,10 add 31,31,24 xor 3,3,4 xor 5,5,0 lwz 0,60(7) add 31,31,3 add 31,31,5 rotrwi 3,6,6 rotrwi 4,6,11 and 5,14,6 xor 3,3,4 add 8,8,0 andc 0,15,6 rotrwi 4,4,14 or 5,5,0 add 8,8,31 xor 3,3,4 add 8,8,5 add 8,8,3 rotrwi 3,9,2 rotrwi 4,9,13 and 5,9,10 and 0,9,11 xor 3,3,4 rotrwi 4,4,9 xor 5,5,0 and 0,10,11 xor 3,3,4 add 12,12,8 xor 5,5,0 add 8,8,3 add 8,8,5 bdnz .Lrounds ld 3,144(1) ld 31,136(1) ld 5,128(1) subi 7,7,192 lwz 16,0(3) lwz 17,4(3) lwz 18,8(3) lwz 19,12(3) lwz 20,16(3) lwz 21,20(3) lwz 22,24(3) addi 31,31,64 lwz 23,28(3) add 8,8,16 add 9,9,17 std 31,136(1) add 10,10,18 stw 8,0(3) add 11,11,19 stw 9,4(3) add 12,12,20 stw 10,8(3) add 6,6,21 stw 11,12(3) add 14,14,22 stw 12,16(3) add 15,15,23 stw 6,20(3) stw 14,24(3) cmpld 31,5 stw 15,28(3) bne .Lsha2_block_private blr .long 0 .byte 0,12,0x14,0,0,0,0,0 +#if (!defined(_CALL_ELF) || _CALL_ELF == 1) .size .zfs_sha256_ppc,.-.zfs_sha256_ppc .size zfs_sha256_ppc,.-.zfs_sha256_ppc +#else +.size zfs_sha256_ppc,.-zfs_sha256_ppc +#endif .align 6 .LPICmeup: mflr 0 bcl 20,31,$+4 mflr 7 addi 7,7,56 mtlr 0 blr .long 0 .byte 0,12,0x14,0,0,0,0,0 .space 28 .long 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5 .long 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5 .long 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3 .long 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174 .long 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc .long 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da .long 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7 .long 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967 .long 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13 .long 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85 .long 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3 .long 0xd192e819,0xd6990624,0xf40e3585,0x106aa070 .long 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5 .long 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3 .long 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208 .long 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2 #elif (defined(__PPC64__) && defined(__LITTLE_ENDIAN__)) .abiversion 2 .text .globl zfs_sha256_ppc .type zfs_sha256_ppc,@function .align 6 zfs_sha256_ppc: .localentry zfs_sha256_ppc,0 stdu 1,-320(1) mflr 0 sldi 5,5,6 std 3,144(1) std 14,176(1) std 15,184(1) std 16,192(1) std 17,200(1) std 18,208(1) std 19,216(1) std 20,224(1) std 21,232(1) std 22,240(1) std 23,248(1) std 24,256(1) std 25,264(1) std 26,272(1) std 27,280(1) std 28,288(1) std 29,296(1) std 30,304(1) std 31,312(1) std 0,336(1) lwz 8,0(3) mr 31,4 lwz 9,4(3) lwz 10,8(3) lwz 11,12(3) lwz 12,16(3) lwz 6,20(3) lwz 14,24(3) lwz 15,28(3) bl .LPICmeup .LPICedup: andi. 0,31,3 bne .Lunaligned .Laligned: add 5,31,5 std 5,128(1) std 31,136(1) bl .Lsha2_block_private b .Ldone .align 4 .Lunaligned: subfic 0,31,4096 andi. 0,0,4032 beq .Lcross_page cmpld 5,0 ble .Laligned subfc 5,0,5 add 0,31,0 std 5,120(1) std 0,128(1) std 31,136(1) bl .Lsha2_block_private ld 5,120(1) .Lcross_page: li 0,16 mtctr 0 addi 20,1,48 .Lmemcpy: lbz 16,0(31) lbz 17,1(31) lbz 18,2(31) lbz 19,3(31) addi 31,31,4 stb 16,0(20) stb 17,1(20) stb 18,2(20) stb 19,3(20) addi 20,20,4 bdnz .Lmemcpy std 31,112(1) addi 0,1,112 addi 31,1,48 std 5,120(1) std 0,128(1) std 31,136(1) bl .Lsha2_block_private ld 31,112(1) ld 5,120(1) addic. 5,5,-64 bne .Lunaligned .Ldone: ld 0,336(1) ld 14,176(1) ld 15,184(1) ld 16,192(1) ld 17,200(1) ld 18,208(1) ld 19,216(1) ld 20,224(1) ld 21,232(1) ld 22,240(1) ld 23,248(1) ld 24,256(1) ld 25,264(1) ld 26,272(1) ld 27,280(1) ld 28,288(1) ld 29,296(1) ld 30,304(1) ld 31,312(1) mtlr 0 addi 1,1,320 blr .long 0 .byte 0,12,4,1,0x80,18,3,0 .long 0 .align 4 .Lsha2_block_private: lwz 0,0(7) lwz 3,0(31) rotlwi 16,3,8 rlwimi 16,3,24,0,7 rlwimi 16,3,24,16,23 rotrwi 3,12,6 rotrwi 4,12,11 and 5,6,12 xor 3,3,4 add 15,15,0 andc 0,14,12 rotrwi 4,4,14 or 5,5,0 add 15,15,16 xor 3,3,4 add 15,15,5 add 15,15,3 rotrwi 3,8,2 rotrwi 4,8,13 and 5,8,9 and 0,8,10 xor 3,3,4 rotrwi 4,4,9 xor 5,5,0 and 0,9,10 xor 3,3,4 add 11,11,15 xor 5,5,0 lwz 0,4(7) add 15,15,3 add 15,15,5 lwz 3,4(31) rotlwi 17,3,8 rlwimi 17,3,24,0,7 rlwimi 17,3,24,16,23 rotrwi 3,11,6 rotrwi 4,11,11 and 5,12,11 xor 3,3,4 add 14,14,0 andc 0,6,11 rotrwi 4,4,14 or 5,5,0 add 14,14,17 xor 3,3,4 add 14,14,5 add 14,14,3 rotrwi 3,15,2 rotrwi 4,15,13 and 5,15,8 and 0,15,9 xor 3,3,4 rotrwi 4,4,9 xor 5,5,0 and 0,8,9 xor 3,3,4 add 10,10,14 xor 5,5,0 lwz 0,8(7) add 14,14,3 add 14,14,5 lwz 3,8(31) rotlwi 18,3,8 rlwimi 18,3,24,0,7 rlwimi 18,3,24,16,23 rotrwi 3,10,6 rotrwi 4,10,11 and 5,11,10 xor 3,3,4 add 6,6,0 andc 0,12,10 rotrwi 4,4,14 or 5,5,0 add 6,6,18 xor 3,3,4 add 6,6,5 add 6,6,3 rotrwi 3,14,2 rotrwi 4,14,13 and 5,14,15 and 0,14,8 xor 3,3,4 rotrwi 4,4,9 xor 5,5,0 and 0,15,8 xor 3,3,4 add 9,9,6 xor 5,5,0 lwz 0,12(7) add 6,6,3 add 6,6,5 lwz 3,12(31) rotlwi 19,3,8 rlwimi 19,3,24,0,7 rlwimi 19,3,24,16,23 rotrwi 3,9,6 rotrwi 4,9,11 and 5,10,9 xor 3,3,4 add 12,12,0 andc 0,11,9 rotrwi 4,4,14 or 5,5,0 add 12,12,19 xor 3,3,4 add 12,12,5 add 12,12,3 rotrwi 3,6,2 rotrwi 4,6,13 and 5,6,14 and 0,6,15 xor 3,3,4 rotrwi 4,4,9 xor 5,5,0 and 0,14,15 xor 3,3,4 add 8,8,12 xor 5,5,0 lwz 0,16(7) add 12,12,3 add 12,12,5 lwz 3,16(31) rotlwi 20,3,8 rlwimi 20,3,24,0,7 rlwimi 20,3,24,16,23 rotrwi 3,8,6 rotrwi 4,8,11 and 5,9,8 xor 3,3,4 add 11,11,0 andc 0,10,8 rotrwi 4,4,14 or 5,5,0 add 11,11,20 xor 3,3,4 add 11,11,5 add 11,11,3 rotrwi 3,12,2 rotrwi 4,12,13 and 5,12,6 and 0,12,14 xor 3,3,4 rotrwi 4,4,9 xor 5,5,0 and 0,6,14 xor 3,3,4 add 15,15,11 xor 5,5,0 lwz 0,20(7) add 11,11,3 add 11,11,5 lwz 3,20(31) rotlwi 21,3,8 rlwimi 21,3,24,0,7 rlwimi 21,3,24,16,23 rotrwi 3,15,6 rotrwi 4,15,11 and 5,8,15 xor 3,3,4 add 10,10,0 andc 0,9,15 rotrwi 4,4,14 or 5,5,0 add 10,10,21 xor 3,3,4 add 10,10,5 add 10,10,3 rotrwi 3,11,2 rotrwi 4,11,13 and 5,11,12 and 0,11,6 xor 3,3,4 rotrwi 4,4,9 xor 5,5,0 and 0,12,6 xor 3,3,4 add 14,14,10 xor 5,5,0 lwz 0,24(7) add 10,10,3 add 10,10,5 lwz 3,24(31) rotlwi 22,3,8 rlwimi 22,3,24,0,7 rlwimi 22,3,24,16,23 rotrwi 3,14,6 rotrwi 4,14,11 and 5,15,14 xor 3,3,4 add 9,9,0 andc 0,8,14 rotrwi 4,4,14 or 5,5,0 add 9,9,22 xor 3,3,4 add 9,9,5 add 9,9,3 rotrwi 3,10,2 rotrwi 4,10,13 and 5,10,11 and 0,10,12 xor 3,3,4 rotrwi 4,4,9 xor 5,5,0 and 0,11,12 xor 3,3,4 add 6,6,9 xor 5,5,0 lwz 0,28(7) add 9,9,3 add 9,9,5 lwz 3,28(31) rotlwi 23,3,8 rlwimi 23,3,24,0,7 rlwimi 23,3,24,16,23 rotrwi 3,6,6 rotrwi 4,6,11 and 5,14,6 xor 3,3,4 add 8,8,0 andc 0,15,6 rotrwi 4,4,14 or 5,5,0 add 8,8,23 xor 3,3,4 add 8,8,5 add 8,8,3 rotrwi 3,9,2 rotrwi 4,9,13 and 5,9,10 and 0,9,11 xor 3,3,4 rotrwi 4,4,9 xor 5,5,0 and 0,10,11 xor 3,3,4 add 12,12,8 xor 5,5,0 lwz 0,32(7) add 8,8,3 add 8,8,5 lwz 3,32(31) rotlwi 24,3,8 rlwimi 24,3,24,0,7 rlwimi 24,3,24,16,23 rotrwi 3,12,6 rotrwi 4,12,11 and 5,6,12 xor 3,3,4 add 15,15,0 andc 0,14,12 rotrwi 4,4,14 or 5,5,0 add 15,15,24 xor 3,3,4 add 15,15,5 add 15,15,3 rotrwi 3,8,2 rotrwi 4,8,13 and 5,8,9 and 0,8,10 xor 3,3,4 rotrwi 4,4,9 xor 5,5,0 and 0,9,10 xor 3,3,4 add 11,11,15 xor 5,5,0 lwz 0,36(7) add 15,15,3 add 15,15,5 lwz 3,36(31) rotlwi 25,3,8 rlwimi 25,3,24,0,7 rlwimi 25,3,24,16,23 rotrwi 3,11,6 rotrwi 4,11,11 and 5,12,11 xor 3,3,4 add 14,14,0 andc 0,6,11 rotrwi 4,4,14 or 5,5,0 add 14,14,25 xor 3,3,4 add 14,14,5 add 14,14,3 rotrwi 3,15,2 rotrwi 4,15,13 and 5,15,8 and 0,15,9 xor 3,3,4 rotrwi 4,4,9 xor 5,5,0 and 0,8,9 xor 3,3,4 add 10,10,14 xor 5,5,0 lwz 0,40(7) add 14,14,3 add 14,14,5 lwz 3,40(31) rotlwi 26,3,8 rlwimi 26,3,24,0,7 rlwimi 26,3,24,16,23 rotrwi 3,10,6 rotrwi 4,10,11 and 5,11,10 xor 3,3,4 add 6,6,0 andc 0,12,10 rotrwi 4,4,14 or 5,5,0 add 6,6,26 xor 3,3,4 add 6,6,5 add 6,6,3 rotrwi 3,14,2 rotrwi 4,14,13 and 5,14,15 and 0,14,8 xor 3,3,4 rotrwi 4,4,9 xor 5,5,0 and 0,15,8 xor 3,3,4 add 9,9,6 xor 5,5,0 lwz 0,44(7) add 6,6,3 add 6,6,5 lwz 3,44(31) rotlwi 27,3,8 rlwimi 27,3,24,0,7 rlwimi 27,3,24,16,23 rotrwi 3,9,6 rotrwi 4,9,11 and 5,10,9 xor 3,3,4 add 12,12,0 andc 0,11,9 rotrwi 4,4,14 or 5,5,0 add 12,12,27 xor 3,3,4 add 12,12,5 add 12,12,3 rotrwi 3,6,2 rotrwi 4,6,13 and 5,6,14 and 0,6,15 xor 3,3,4 rotrwi 4,4,9 xor 5,5,0 and 0,14,15 xor 3,3,4 add 8,8,12 xor 5,5,0 lwz 0,48(7) add 12,12,3 add 12,12,5 lwz 3,48(31) rotlwi 28,3,8 rlwimi 28,3,24,0,7 rlwimi 28,3,24,16,23 rotrwi 3,8,6 rotrwi 4,8,11 and 5,9,8 xor 3,3,4 add 11,11,0 andc 0,10,8 rotrwi 4,4,14 or 5,5,0 add 11,11,28 xor 3,3,4 add 11,11,5 add 11,11,3 rotrwi 3,12,2 rotrwi 4,12,13 and 5,12,6 and 0,12,14 xor 3,3,4 rotrwi 4,4,9 xor 5,5,0 and 0,6,14 xor 3,3,4 add 15,15,11 xor 5,5,0 lwz 0,52(7) add 11,11,3 add 11,11,5 lwz 3,52(31) rotlwi 29,3,8 rlwimi 29,3,24,0,7 rlwimi 29,3,24,16,23 rotrwi 3,15,6 rotrwi 4,15,11 and 5,8,15 xor 3,3,4 add 10,10,0 andc 0,9,15 rotrwi 4,4,14 or 5,5,0 add 10,10,29 xor 3,3,4 add 10,10,5 add 10,10,3 rotrwi 3,11,2 rotrwi 4,11,13 and 5,11,12 and 0,11,6 xor 3,3,4 rotrwi 4,4,9 xor 5,5,0 and 0,12,6 xor 3,3,4 add 14,14,10 xor 5,5,0 lwz 0,56(7) add 10,10,3 add 10,10,5 lwz 3,56(31) rotlwi 30,3,8 rlwimi 30,3,24,0,7 rlwimi 30,3,24,16,23 rotrwi 3,14,6 rotrwi 4,14,11 and 5,15,14 xor 3,3,4 add 9,9,0 andc 0,8,14 rotrwi 4,4,14 or 5,5,0 add 9,9,30 xor 3,3,4 add 9,9,5 add 9,9,3 rotrwi 3,10,2 rotrwi 4,10,13 and 5,10,11 and 0,10,12 xor 3,3,4 rotrwi 4,4,9 xor 5,5,0 and 0,11,12 xor 3,3,4 add 6,6,9 xor 5,5,0 lwz 0,60(7) add 9,9,3 add 9,9,5 lwz 3,60(31) rotlwi 31,3,8 rlwimi 31,3,24,0,7 rlwimi 31,3,24,16,23 rotrwi 3,6,6 rotrwi 4,6,11 and 5,14,6 xor 3,3,4 add 8,8,0 andc 0,15,6 rotrwi 4,4,14 or 5,5,0 add 8,8,31 xor 3,3,4 add 8,8,5 add 8,8,3 rotrwi 3,9,2 rotrwi 4,9,13 and 5,9,10 and 0,9,11 xor 3,3,4 rotrwi 4,4,9 xor 5,5,0 and 0,10,11 xor 3,3,4 add 12,12,8 xor 5,5,0 add 8,8,3 add 8,8,5 li 5,3 mtctr 5 .align 4 .Lrounds: addi 7,7,64 rotrwi 3,17,7 rotrwi 4,17,18 rotrwi 5,30,17 rotrwi 0,30,19 xor 3,3,4 srwi 4,17,3 xor 5,5,0 srwi 0,30,10 add 16,16,25 xor 3,3,4 xor 5,5,0 lwz 0,0(7) add 16,16,3 add 16,16,5 rotrwi 3,12,6 rotrwi 4,12,11 and 5,6,12 xor 3,3,4 add 15,15,0 andc 0,14,12 rotrwi 4,4,14 or 5,5,0 add 15,15,16 xor 3,3,4 add 15,15,5 add 15,15,3 rotrwi 3,8,2 rotrwi 4,8,13 and 5,8,9 and 0,8,10 xor 3,3,4 rotrwi 4,4,9 xor 5,5,0 and 0,9,10 xor 3,3,4 add 11,11,15 xor 5,5,0 add 15,15,3 add 15,15,5 rotrwi 3,18,7 rotrwi 4,18,18 rotrwi 5,31,17 rotrwi 0,31,19 xor 3,3,4 srwi 4,18,3 xor 5,5,0 srwi 0,31,10 add 17,17,26 xor 3,3,4 xor 5,5,0 lwz 0,4(7) add 17,17,3 add 17,17,5 rotrwi 3,11,6 rotrwi 4,11,11 and 5,12,11 xor 3,3,4 add 14,14,0 andc 0,6,11 rotrwi 4,4,14 or 5,5,0 add 14,14,17 xor 3,3,4 add 14,14,5 add 14,14,3 rotrwi 3,15,2 rotrwi 4,15,13 and 5,15,8 and 0,15,9 xor 3,3,4 rotrwi 4,4,9 xor 5,5,0 and 0,8,9 xor 3,3,4 add 10,10,14 xor 5,5,0 add 14,14,3 add 14,14,5 rotrwi 3,19,7 rotrwi 4,19,18 rotrwi 5,16,17 rotrwi 0,16,19 xor 3,3,4 srwi 4,19,3 xor 5,5,0 srwi 0,16,10 add 18,18,27 xor 3,3,4 xor 5,5,0 lwz 0,8(7) add 18,18,3 add 18,18,5 rotrwi 3,10,6 rotrwi 4,10,11 and 5,11,10 xor 3,3,4 add 6,6,0 andc 0,12,10 rotrwi 4,4,14 or 5,5,0 add 6,6,18 xor 3,3,4 add 6,6,5 add 6,6,3 rotrwi 3,14,2 rotrwi 4,14,13 and 5,14,15 and 0,14,8 xor 3,3,4 rotrwi 4,4,9 xor 5,5,0 and 0,15,8 xor 3,3,4 add 9,9,6 xor 5,5,0 add 6,6,3 add 6,6,5 rotrwi 3,20,7 rotrwi 4,20,18 rotrwi 5,17,17 rotrwi 0,17,19 xor 3,3,4 srwi 4,20,3 xor 5,5,0 srwi 0,17,10 add 19,19,28 xor 3,3,4 xor 5,5,0 lwz 0,12(7) add 19,19,3 add 19,19,5 rotrwi 3,9,6 rotrwi 4,9,11 and 5,10,9 xor 3,3,4 add 12,12,0 andc 0,11,9 rotrwi 4,4,14 or 5,5,0 add 12,12,19 xor 3,3,4 add 12,12,5 add 12,12,3 rotrwi 3,6,2 rotrwi 4,6,13 and 5,6,14 and 0,6,15 xor 3,3,4 rotrwi 4,4,9 xor 5,5,0 and 0,14,15 xor 3,3,4 add 8,8,12 xor 5,5,0 add 12,12,3 add 12,12,5 rotrwi 3,21,7 rotrwi 4,21,18 rotrwi 5,18,17 rotrwi 0,18,19 xor 3,3,4 srwi 4,21,3 xor 5,5,0 srwi 0,18,10 add 20,20,29 xor 3,3,4 xor 5,5,0 lwz 0,16(7) add 20,20,3 add 20,20,5 rotrwi 3,8,6 rotrwi 4,8,11 and 5,9,8 xor 3,3,4 add 11,11,0 andc 0,10,8 rotrwi 4,4,14 or 5,5,0 add 11,11,20 xor 3,3,4 add 11,11,5 add 11,11,3 rotrwi 3,12,2 rotrwi 4,12,13 and 5,12,6 and 0,12,14 xor 3,3,4 rotrwi 4,4,9 xor 5,5,0 and 0,6,14 xor 3,3,4 add 15,15,11 xor 5,5,0 add 11,11,3 add 11,11,5 rotrwi 3,22,7 rotrwi 4,22,18 rotrwi 5,19,17 rotrwi 0,19,19 xor 3,3,4 srwi 4,22,3 xor 5,5,0 srwi 0,19,10 add 21,21,30 xor 3,3,4 xor 5,5,0 lwz 0,20(7) add 21,21,3 add 21,21,5 rotrwi 3,15,6 rotrwi 4,15,11 and 5,8,15 xor 3,3,4 add 10,10,0 andc 0,9,15 rotrwi 4,4,14 or 5,5,0 add 10,10,21 xor 3,3,4 add 10,10,5 add 10,10,3 rotrwi 3,11,2 rotrwi 4,11,13 and 5,11,12 and 0,11,6 xor 3,3,4 rotrwi 4,4,9 xor 5,5,0 and 0,12,6 xor 3,3,4 add 14,14,10 xor 5,5,0 add 10,10,3 add 10,10,5 rotrwi 3,23,7 rotrwi 4,23,18 rotrwi 5,20,17 rotrwi 0,20,19 xor 3,3,4 srwi 4,23,3 xor 5,5,0 srwi 0,20,10 add 22,22,31 xor 3,3,4 xor 5,5,0 lwz 0,24(7) add 22,22,3 add 22,22,5 rotrwi 3,14,6 rotrwi 4,14,11 and 5,15,14 xor 3,3,4 add 9,9,0 andc 0,8,14 rotrwi 4,4,14 or 5,5,0 add 9,9,22 xor 3,3,4 add 9,9,5 add 9,9,3 rotrwi 3,10,2 rotrwi 4,10,13 and 5,10,11 and 0,10,12 xor 3,3,4 rotrwi 4,4,9 xor 5,5,0 and 0,11,12 xor 3,3,4 add 6,6,9 xor 5,5,0 add 9,9,3 add 9,9,5 rotrwi 3,24,7 rotrwi 4,24,18 rotrwi 5,21,17 rotrwi 0,21,19 xor 3,3,4 srwi 4,24,3 xor 5,5,0 srwi 0,21,10 add 23,23,16 xor 3,3,4 xor 5,5,0 lwz 0,28(7) add 23,23,3 add 23,23,5 rotrwi 3,6,6 rotrwi 4,6,11 and 5,14,6 xor 3,3,4 add 8,8,0 andc 0,15,6 rotrwi 4,4,14 or 5,5,0 add 8,8,23 xor 3,3,4 add 8,8,5 add 8,8,3 rotrwi 3,9,2 rotrwi 4,9,13 and 5,9,10 and 0,9,11 xor 3,3,4 rotrwi 4,4,9 xor 5,5,0 and 0,10,11 xor 3,3,4 add 12,12,8 xor 5,5,0 add 8,8,3 add 8,8,5 rotrwi 3,25,7 rotrwi 4,25,18 rotrwi 5,22,17 rotrwi 0,22,19 xor 3,3,4 srwi 4,25,3 xor 5,5,0 srwi 0,22,10 add 24,24,17 xor 3,3,4 xor 5,5,0 lwz 0,32(7) add 24,24,3 add 24,24,5 rotrwi 3,12,6 rotrwi 4,12,11 and 5,6,12 xor 3,3,4 add 15,15,0 andc 0,14,12 rotrwi 4,4,14 or 5,5,0 add 15,15,24 xor 3,3,4 add 15,15,5 add 15,15,3 rotrwi 3,8,2 rotrwi 4,8,13 and 5,8,9 and 0,8,10 xor 3,3,4 rotrwi 4,4,9 xor 5,5,0 and 0,9,10 xor 3,3,4 add 11,11,15 xor 5,5,0 add 15,15,3 add 15,15,5 rotrwi 3,26,7 rotrwi 4,26,18 rotrwi 5,23,17 rotrwi 0,23,19 xor 3,3,4 srwi 4,26,3 xor 5,5,0 srwi 0,23,10 add 25,25,18 xor 3,3,4 xor 5,5,0 lwz 0,36(7) add 25,25,3 add 25,25,5 rotrwi 3,11,6 rotrwi 4,11,11 and 5,12,11 xor 3,3,4 add 14,14,0 andc 0,6,11 rotrwi 4,4,14 or 5,5,0 add 14,14,25 xor 3,3,4 add 14,14,5 add 14,14,3 rotrwi 3,15,2 rotrwi 4,15,13 and 5,15,8 and 0,15,9 xor 3,3,4 rotrwi 4,4,9 xor 5,5,0 and 0,8,9 xor 3,3,4 add 10,10,14 xor 5,5,0 add 14,14,3 add 14,14,5 rotrwi 3,27,7 rotrwi 4,27,18 rotrwi 5,24,17 rotrwi 0,24,19 xor 3,3,4 srwi 4,27,3 xor 5,5,0 srwi 0,24,10 add 26,26,19 xor 3,3,4 xor 5,5,0 lwz 0,40(7) add 26,26,3 add 26,26,5 rotrwi 3,10,6 rotrwi 4,10,11 and 5,11,10 xor 3,3,4 add 6,6,0 andc 0,12,10 rotrwi 4,4,14 or 5,5,0 add 6,6,26 xor 3,3,4 add 6,6,5 add 6,6,3 rotrwi 3,14,2 rotrwi 4,14,13 and 5,14,15 and 0,14,8 xor 3,3,4 rotrwi 4,4,9 xor 5,5,0 and 0,15,8 xor 3,3,4 add 9,9,6 xor 5,5,0 add 6,6,3 add 6,6,5 rotrwi 3,28,7 rotrwi 4,28,18 rotrwi 5,25,17 rotrwi 0,25,19 xor 3,3,4 srwi 4,28,3 xor 5,5,0 srwi 0,25,10 add 27,27,20 xor 3,3,4 xor 5,5,0 lwz 0,44(7) add 27,27,3 add 27,27,5 rotrwi 3,9,6 rotrwi 4,9,11 and 5,10,9 xor 3,3,4 add 12,12,0 andc 0,11,9 rotrwi 4,4,14 or 5,5,0 add 12,12,27 xor 3,3,4 add 12,12,5 add 12,12,3 rotrwi 3,6,2 rotrwi 4,6,13 and 5,6,14 and 0,6,15 xor 3,3,4 rotrwi 4,4,9 xor 5,5,0 and 0,14,15 xor 3,3,4 add 8,8,12 xor 5,5,0 add 12,12,3 add 12,12,5 rotrwi 3,29,7 rotrwi 4,29,18 rotrwi 5,26,17 rotrwi 0,26,19 xor 3,3,4 srwi 4,29,3 xor 5,5,0 srwi 0,26,10 add 28,28,21 xor 3,3,4 xor 5,5,0 lwz 0,48(7) add 28,28,3 add 28,28,5 rotrwi 3,8,6 rotrwi 4,8,11 and 5,9,8 xor 3,3,4 add 11,11,0 andc 0,10,8 rotrwi 4,4,14 or 5,5,0 add 11,11,28 xor 3,3,4 add 11,11,5 add 11,11,3 rotrwi 3,12,2 rotrwi 4,12,13 and 5,12,6 and 0,12,14 xor 3,3,4 rotrwi 4,4,9 xor 5,5,0 and 0,6,14 xor 3,3,4 add 15,15,11 xor 5,5,0 add 11,11,3 add 11,11,5 rotrwi 3,30,7 rotrwi 4,30,18 rotrwi 5,27,17 rotrwi 0,27,19 xor 3,3,4 srwi 4,30,3 xor 5,5,0 srwi 0,27,10 add 29,29,22 xor 3,3,4 xor 5,5,0 lwz 0,52(7) add 29,29,3 add 29,29,5 rotrwi 3,15,6 rotrwi 4,15,11 and 5,8,15 xor 3,3,4 add 10,10,0 andc 0,9,15 rotrwi 4,4,14 or 5,5,0 add 10,10,29 xor 3,3,4 add 10,10,5 add 10,10,3 rotrwi 3,11,2 rotrwi 4,11,13 and 5,11,12 and 0,11,6 xor 3,3,4 rotrwi 4,4,9 xor 5,5,0 and 0,12,6 xor 3,3,4 add 14,14,10 xor 5,5,0 add 10,10,3 add 10,10,5 rotrwi 3,31,7 rotrwi 4,31,18 rotrwi 5,28,17 rotrwi 0,28,19 xor 3,3,4 srwi 4,31,3 xor 5,5,0 srwi 0,28,10 add 30,30,23 xor 3,3,4 xor 5,5,0 lwz 0,56(7) add 30,30,3 add 30,30,5 rotrwi 3,14,6 rotrwi 4,14,11 and 5,15,14 xor 3,3,4 add 9,9,0 andc 0,8,14 rotrwi 4,4,14 or 5,5,0 add 9,9,30 xor 3,3,4 add 9,9,5 add 9,9,3 rotrwi 3,10,2 rotrwi 4,10,13 and 5,10,11 and 0,10,12 xor 3,3,4 rotrwi 4,4,9 xor 5,5,0 and 0,11,12 xor 3,3,4 add 6,6,9 xor 5,5,0 add 9,9,3 add 9,9,5 rotrwi 3,16,7 rotrwi 4,16,18 rotrwi 5,29,17 rotrwi 0,29,19 xor 3,3,4 srwi 4,16,3 xor 5,5,0 srwi 0,29,10 add 31,31,24 xor 3,3,4 xor 5,5,0 lwz 0,60(7) add 31,31,3 add 31,31,5 rotrwi 3,6,6 rotrwi 4,6,11 and 5,14,6 xor 3,3,4 add 8,8,0 andc 0,15,6 rotrwi 4,4,14 or 5,5,0 add 8,8,31 xor 3,3,4 add 8,8,5 add 8,8,3 rotrwi 3,9,2 rotrwi 4,9,13 and 5,9,10 and 0,9,11 xor 3,3,4 rotrwi 4,4,9 xor 5,5,0 and 0,10,11 xor 3,3,4 add 12,12,8 xor 5,5,0 add 8,8,3 add 8,8,5 bdnz .Lrounds ld 3,144(1) ld 31,136(1) ld 5,128(1) subi 7,7,192 lwz 16,0(3) lwz 17,4(3) lwz 18,8(3) lwz 19,12(3) lwz 20,16(3) lwz 21,20(3) lwz 22,24(3) addi 31,31,64 lwz 23,28(3) add 8,8,16 add 9,9,17 std 31,136(1) add 10,10,18 stw 8,0(3) add 11,11,19 stw 9,4(3) add 12,12,20 stw 10,8(3) add 6,6,21 stw 11,12(3) add 14,14,22 stw 12,16(3) add 15,15,23 stw 6,20(3) stw 14,24(3) cmpld 31,5 stw 15,28(3) bne .Lsha2_block_private blr .long 0 .byte 0,12,0x14,0,0,0,0,0 .size zfs_sha256_ppc,.-zfs_sha256_ppc .align 6 .LPICmeup: mflr 0 bcl 20,31,$+4 mflr 7 addi 7,7,56 mtlr 0 blr .long 0 .byte 0,12,0x14,0,0,0,0,0 .space 28 .long 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5 .long 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5 .long 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3 .long 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174 .long 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc .long 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da .long 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7 .long 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967 .long 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13 .long 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85 .long 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3 .long 0xd192e819,0xd6990624,0xf40e3585,0x106aa070 .long 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5 .long 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3 .long 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208 .long 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2 #endif diff --git a/module/icp/asm-ppc64/sha2/sha512-p8.S b/module/icp/asm-ppc64/sha2/sha512-p8.S index 39a90ede3dc5..2409c53385d6 100644 --- a/module/icp/asm-ppc64/sha2/sha512-p8.S +++ b/module/icp/asm-ppc64/sha2/sha512-p8.S @@ -1,1706 +1,1722 @@ /* * Copyright 2004-2022 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * Portions Copyright (c) 2022 Tino Reichardt * - modified assembly to fit into OpenZFS */ #if (defined(__PPC64__) && defined(__BIG_ENDIAN__)) +#if (!defined(_CALL_ELF) || _CALL_ELF == 1) .text .globl zfs_sha512_power8 .globl .zfs_sha512_power8 .type zfs_sha512_power8,@function .section ".opd","aw" .align 3 zfs_sha512_power8: .quad .zfs_sha512_power8,.TOC.@tocbase,0 .previous .align 6 .zfs_sha512_power8: +#else +.abiversion 2 +.text + +.globl zfs_sha512_power8 +.type zfs_sha512_power8,@function +.align 6 +zfs_sha512_power8: +.localentry zfs_sha512_power8,0 +#endif + stdu 1,-384(1) mflr 8 li 10,207 li 11,223 stvx 24,10,1 addi 10,10,32 mfspr 12,256 stvx 25,11,1 addi 11,11,32 stvx 26,10,1 addi 10,10,32 stvx 27,11,1 addi 11,11,32 stvx 28,10,1 addi 10,10,32 stvx 29,11,1 addi 11,11,32 stvx 30,10,1 stvx 31,11,1 li 11,-4096+255 stw 12,332(1) li 10,0x10 std 26,336(1) li 26,0x20 std 27,344(1) li 27,0x30 std 28,352(1) li 28,0x40 std 29,360(1) li 29,0x50 std 30,368(1) li 30,0x60 std 31,376(1) li 31,0x70 std 8,400(1) mtspr 256,11 bl .LPICmeup addi 11,1,79 .long 0x7C001E99 .long 0x7C4A1E99 .long 0x7C9A1E99 vsldoi 1,0,0,8 .long 0x7CDB1E99 vsldoi 3,2,2,8 vsldoi 5,4,4,8 vsldoi 7,6,6,8 li 0,4 b .Loop .align 5 .Loop: lvx 28,0,6 .long 0x7D002699 addi 4,4,16 mr 7,6 stvx 0,0,11 stvx 1,10,11 stvx 2,26,11 stvx 3,27,11 stvx 4,28,11 stvx 5,29,11 stvx 6,30,11 stvx 7,31,11 .long 0x10E7E0C0 lvx 28,10,6 .long 0x10E740C0 vsel 29,6,5,4 .long 0x10C6E0C0 .long 0x10E7E8C0 .long 0x13C4FEC2 .long 0x10E7F0C0 vxor 29,0,1 vsel 29,1,2,29 .long 0x106338C0 .long 0x13C086C2 .long 0x13DEE8C0 .long 0x10E7F0C0 lvx 28,26,7 .long 0x7D402699 addi 4,4,16 vsldoi 9,8,8,8 .long 0x10C648C0 vsel 29,5,4,3 .long 0x10A5E0C0 .long 0x10C6E8C0 .long 0x13C3FEC2 .long 0x10C6F0C0 vxor 29,7,0 vsel 29,0,1,29 .long 0x104230C0 .long 0x13C786C2 .long 0x13DEE8C0 .long 0x10C6F0C0 lvx 28,27,7 .long 0x10A550C0 vsel 29,4,3,2 .long 0x1084E0C0 .long 0x10A5E8C0 .long 0x13C2FEC2 .long 0x10A5F0C0 vxor 29,6,7 vsel 29,7,0,29 .long 0x102128C0 .long 0x13C686C2 .long 0x13DEE8C0 .long 0x10A5F0C0 lvx 28,28,7 .long 0x7D802699 addi 4,4,16 vsldoi 11,10,10,8 .long 0x108458C0 vsel 29,3,2,1 .long 0x1063E0C0 .long 0x1084E8C0 .long 0x13C1FEC2 .long 0x1084F0C0 vxor 29,5,6 vsel 29,6,7,29 .long 0x100020C0 .long 0x13C586C2 .long 0x13DEE8C0 .long 0x1084F0C0 lvx 28,29,7 .long 0x106360C0 vsel 29,2,1,0 .long 0x1042E0C0 .long 0x1063E8C0 .long 0x13C0FEC2 .long 0x1063F0C0 vxor 29,4,5 vsel 29,5,6,29 .long 0x10E718C0 .long 0x13C486C2 .long 0x13DEE8C0 .long 0x1063F0C0 lvx 28,30,7 .long 0x7DC02699 addi 4,4,16 vsldoi 13,12,12,8 .long 0x104268C0 vsel 29,1,0,7 .long 0x1021E0C0 .long 0x1042E8C0 .long 0x13C7FEC2 .long 0x1042F0C0 vxor 29,3,4 vsel 29,4,5,29 .long 0x10C610C0 .long 0x13C386C2 .long 0x13DEE8C0 .long 0x1042F0C0 lvx 28,31,7 addi 7,7,0x80 .long 0x102170C0 vsel 29,0,7,6 .long 0x1000E0C0 .long 0x1021E8C0 .long 0x13C6FEC2 .long 0x1021F0C0 vxor 29,2,3 vsel 29,3,4,29 .long 0x10A508C0 .long 0x13C286C2 .long 0x13DEE8C0 .long 0x1021F0C0 lvx 28,0,7 .long 0x7E002699 addi 4,4,16 vsldoi 15,14,14,8 .long 0x100078C0 vsel 29,7,6,5 .long 0x10E7E0C0 .long 0x1000E8C0 .long 0x13C5FEC2 .long 0x1000F0C0 vxor 29,1,2 vsel 29,2,3,29 .long 0x108400C0 .long 0x13C186C2 .long 0x13DEE8C0 .long 0x1000F0C0 lvx 28,10,7 .long 0x10E780C0 vsel 29,6,5,4 .long 0x10C6E0C0 .long 0x10E7E8C0 .long 0x13C4FEC2 .long 0x10E7F0C0 vxor 29,0,1 vsel 29,1,2,29 .long 0x106338C0 .long 0x13C086C2 .long 0x13DEE8C0 .long 0x10E7F0C0 lvx 28,26,7 .long 0x7E402699 addi 4,4,16 vsldoi 17,16,16,8 .long 0x10C688C0 vsel 29,5,4,3 .long 0x10A5E0C0 .long 0x10C6E8C0 .long 0x13C3FEC2 .long 0x10C6F0C0 vxor 29,7,0 vsel 29,0,1,29 .long 0x104230C0 .long 0x13C786C2 .long 0x13DEE8C0 .long 0x10C6F0C0 lvx 28,27,7 .long 0x10A590C0 vsel 29,4,3,2 .long 0x1084E0C0 .long 0x10A5E8C0 .long 0x13C2FEC2 .long 0x10A5F0C0 vxor 29,6,7 vsel 29,7,0,29 .long 0x102128C0 .long 0x13C686C2 .long 0x13DEE8C0 .long 0x10A5F0C0 lvx 28,28,7 .long 0x7F002699 addi 4,4,16 vsldoi 19,18,18,8 .long 0x108498C0 vsel 29,3,2,1 .long 0x1063E0C0 .long 0x1084E8C0 .long 0x13C1FEC2 .long 0x1084F0C0 vxor 29,5,6 vsel 29,6,7,29 .long 0x100020C0 .long 0x13C586C2 .long 0x13DEE8C0 .long 0x1084F0C0 lvx 28,29,7 .long 0x1063C0C0 vsel 29,2,1,0 .long 0x1042E0C0 .long 0x1063E8C0 .long 0x13C0FEC2 .long 0x1063F0C0 vxor 29,4,5 vsel 29,5,6,29 .long 0x10E718C0 .long 0x13C486C2 .long 0x13DEE8C0 .long 0x1063F0C0 lvx 28,30,7 .long 0x7F402699 addi 4,4,16 vsldoi 25,24,24,8 .long 0x1042C8C0 vsel 29,1,0,7 .long 0x1021E0C0 .long 0x1042E8C0 .long 0x13C7FEC2 .long 0x1042F0C0 vxor 29,3,4 vsel 29,4,5,29 .long 0x10C610C0 .long 0x13C386C2 .long 0x13DEE8C0 .long 0x1042F0C0 lvx 28,31,7 addi 7,7,0x80 .long 0x1021D0C0 vsel 29,0,7,6 .long 0x1000E0C0 .long 0x1021E8C0 .long 0x13C6FEC2 .long 0x1021F0C0 vxor 29,2,3 vsel 29,3,4,29 .long 0x10A508C0 .long 0x13C286C2 .long 0x13DEE8C0 .long 0x1021F0C0 lvx 28,0,7 vsldoi 27,26,26,8 .long 0x13C906C2 .long 0x1108F0C0 .long 0x13DA7EC2 .long 0x1108F0C0 .long 0x110888C0 .long 0x1000D8C0 vsel 29,7,6,5 .long 0x10E7E0C0 .long 0x1000E8C0 .long 0x13C5FEC2 .long 0x1000F0C0 vxor 29,1,2 vsel 29,2,3,29 .long 0x108400C0 .long 0x13C186C2 .long 0x13DEE8C0 .long 0x1000F0C0 lvx 28,10,7 mtctr 0 b .L16_xx .align 5 .L16_xx: .long 0x13CA06C2 .long 0x1129F0C0 .long 0x13DB7EC2 .long 0x1129F0C0 .long 0x112990C0 .long 0x10E740C0 vsel 29,6,5,4 .long 0x10C6E0C0 .long 0x10E7E8C0 .long 0x13C4FEC2 .long 0x10E7F0C0 vxor 29,0,1 vsel 29,1,2,29 .long 0x106338C0 .long 0x13C086C2 .long 0x13DEE8C0 .long 0x10E7F0C0 lvx 28,26,7 .long 0x13CB06C2 .long 0x114AF0C0 .long 0x13C87EC2 .long 0x114AF0C0 .long 0x114A98C0 .long 0x10C648C0 vsel 29,5,4,3 .long 0x10A5E0C0 .long 0x10C6E8C0 .long 0x13C3FEC2 .long 0x10C6F0C0 vxor 29,7,0 vsel 29,0,1,29 .long 0x104230C0 .long 0x13C786C2 .long 0x13DEE8C0 .long 0x10C6F0C0 lvx 28,27,7 .long 0x13CC06C2 .long 0x116BF0C0 .long 0x13C97EC2 .long 0x116BF0C0 .long 0x116BC0C0 .long 0x10A550C0 vsel 29,4,3,2 .long 0x1084E0C0 .long 0x10A5E8C0 .long 0x13C2FEC2 .long 0x10A5F0C0 vxor 29,6,7 vsel 29,7,0,29 .long 0x102128C0 .long 0x13C686C2 .long 0x13DEE8C0 .long 0x10A5F0C0 lvx 28,28,7 .long 0x13CD06C2 .long 0x118CF0C0 .long 0x13CA7EC2 .long 0x118CF0C0 .long 0x118CC8C0 .long 0x108458C0 vsel 29,3,2,1 .long 0x1063E0C0 .long 0x1084E8C0 .long 0x13C1FEC2 .long 0x1084F0C0 vxor 29,5,6 vsel 29,6,7,29 .long 0x100020C0 .long 0x13C586C2 .long 0x13DEE8C0 .long 0x1084F0C0 lvx 28,29,7 .long 0x13CE06C2 .long 0x11ADF0C0 .long 0x13CB7EC2 .long 0x11ADF0C0 .long 0x11ADD0C0 .long 0x106360C0 vsel 29,2,1,0 .long 0x1042E0C0 .long 0x1063E8C0 .long 0x13C0FEC2 .long 0x1063F0C0 vxor 29,4,5 vsel 29,5,6,29 .long 0x10E718C0 .long 0x13C486C2 .long 0x13DEE8C0 .long 0x1063F0C0 lvx 28,30,7 .long 0x13CF06C2 .long 0x11CEF0C0 .long 0x13CC7EC2 .long 0x11CEF0C0 .long 0x11CED8C0 .long 0x104268C0 vsel 29,1,0,7 .long 0x1021E0C0 .long 0x1042E8C0 .long 0x13C7FEC2 .long 0x1042F0C0 vxor 29,3,4 vsel 29,4,5,29 .long 0x10C610C0 .long 0x13C386C2 .long 0x13DEE8C0 .long 0x1042F0C0 lvx 28,31,7 addi 7,7,0x80 .long 0x13D006C2 .long 0x11EFF0C0 .long 0x13CD7EC2 .long 0x11EFF0C0 .long 0x11EF40C0 .long 0x102170C0 vsel 29,0,7,6 .long 0x1000E0C0 .long 0x1021E8C0 .long 0x13C6FEC2 .long 0x1021F0C0 vxor 29,2,3 vsel 29,3,4,29 .long 0x10A508C0 .long 0x13C286C2 .long 0x13DEE8C0 .long 0x1021F0C0 lvx 28,0,7 .long 0x13D106C2 .long 0x1210F0C0 .long 0x13CE7EC2 .long 0x1210F0C0 .long 0x121048C0 .long 0x100078C0 vsel 29,7,6,5 .long 0x10E7E0C0 .long 0x1000E8C0 .long 0x13C5FEC2 .long 0x1000F0C0 vxor 29,1,2 vsel 29,2,3,29 .long 0x108400C0 .long 0x13C186C2 .long 0x13DEE8C0 .long 0x1000F0C0 lvx 28,10,7 .long 0x13D206C2 .long 0x1231F0C0 .long 0x13CF7EC2 .long 0x1231F0C0 .long 0x123150C0 .long 0x10E780C0 vsel 29,6,5,4 .long 0x10C6E0C0 .long 0x10E7E8C0 .long 0x13C4FEC2 .long 0x10E7F0C0 vxor 29,0,1 vsel 29,1,2,29 .long 0x106338C0 .long 0x13C086C2 .long 0x13DEE8C0 .long 0x10E7F0C0 lvx 28,26,7 .long 0x13D306C2 .long 0x1252F0C0 .long 0x13D07EC2 .long 0x1252F0C0 .long 0x125258C0 .long 0x10C688C0 vsel 29,5,4,3 .long 0x10A5E0C0 .long 0x10C6E8C0 .long 0x13C3FEC2 .long 0x10C6F0C0 vxor 29,7,0 vsel 29,0,1,29 .long 0x104230C0 .long 0x13C786C2 .long 0x13DEE8C0 .long 0x10C6F0C0 lvx 28,27,7 .long 0x13D806C2 .long 0x1273F0C0 .long 0x13D17EC2 .long 0x1273F0C0 .long 0x127360C0 .long 0x10A590C0 vsel 29,4,3,2 .long 0x1084E0C0 .long 0x10A5E8C0 .long 0x13C2FEC2 .long 0x10A5F0C0 vxor 29,6,7 vsel 29,7,0,29 .long 0x102128C0 .long 0x13C686C2 .long 0x13DEE8C0 .long 0x10A5F0C0 lvx 28,28,7 .long 0x13D906C2 .long 0x1318F0C0 .long 0x13D27EC2 .long 0x1318F0C0 .long 0x131868C0 .long 0x108498C0 vsel 29,3,2,1 .long 0x1063E0C0 .long 0x1084E8C0 .long 0x13C1FEC2 .long 0x1084F0C0 vxor 29,5,6 vsel 29,6,7,29 .long 0x100020C0 .long 0x13C586C2 .long 0x13DEE8C0 .long 0x1084F0C0 lvx 28,29,7 .long 0x13DA06C2 .long 0x1339F0C0 .long 0x13D37EC2 .long 0x1339F0C0 .long 0x133970C0 .long 0x1063C0C0 vsel 29,2,1,0 .long 0x1042E0C0 .long 0x1063E8C0 .long 0x13C0FEC2 .long 0x1063F0C0 vxor 29,4,5 vsel 29,5,6,29 .long 0x10E718C0 .long 0x13C486C2 .long 0x13DEE8C0 .long 0x1063F0C0 lvx 28,30,7 .long 0x13DB06C2 .long 0x135AF0C0 .long 0x13D87EC2 .long 0x135AF0C0 .long 0x135A78C0 .long 0x1042C8C0 vsel 29,1,0,7 .long 0x1021E0C0 .long 0x1042E8C0 .long 0x13C7FEC2 .long 0x1042F0C0 vxor 29,3,4 vsel 29,4,5,29 .long 0x10C610C0 .long 0x13C386C2 .long 0x13DEE8C0 .long 0x1042F0C0 lvx 28,31,7 addi 7,7,0x80 .long 0x13C806C2 .long 0x137BF0C0 .long 0x13D97EC2 .long 0x137BF0C0 .long 0x137B80C0 .long 0x1021D0C0 vsel 29,0,7,6 .long 0x1000E0C0 .long 0x1021E8C0 .long 0x13C6FEC2 .long 0x1021F0C0 vxor 29,2,3 vsel 29,3,4,29 .long 0x10A508C0 .long 0x13C286C2 .long 0x13DEE8C0 .long 0x1021F0C0 lvx 28,0,7 .long 0x13C906C2 .long 0x1108F0C0 .long 0x13DA7EC2 .long 0x1108F0C0 .long 0x110888C0 .long 0x1000D8C0 vsel 29,7,6,5 .long 0x10E7E0C0 .long 0x1000E8C0 .long 0x13C5FEC2 .long 0x1000F0C0 vxor 29,1,2 vsel 29,2,3,29 .long 0x108400C0 .long 0x13C186C2 .long 0x13DEE8C0 .long 0x1000F0C0 lvx 28,10,7 bdnz .L16_xx lvx 10,0,11 subic. 5,5,1 lvx 11,10,11 .long 0x100050C0 lvx 12,26,11 .long 0x102158C0 lvx 13,27,11 .long 0x104260C0 lvx 14,28,11 .long 0x106368C0 lvx 15,29,11 .long 0x108470C0 lvx 16,30,11 .long 0x10A578C0 lvx 17,31,11 .long 0x10C680C0 .long 0x10E788C0 bne .Loop vperm 0,0,1,28 vperm 2,2,3,28 vperm 4,4,5,28 vperm 6,6,7,28 .long 0x7C001F99 .long 0x7C4A1F99 .long 0x7C9A1F99 .long 0x7CDB1F99 addi 11,1,207 mtlr 8 mtspr 256,12 lvx 24,0,11 lvx 25,10,11 lvx 26,26,11 lvx 27,27,11 lvx 28,28,11 lvx 29,29,11 lvx 30,30,11 lvx 31,31,11 ld 26,336(1) ld 27,344(1) ld 28,352(1) ld 29,360(1) ld 30,368(1) ld 31,376(1) addi 1,1,384 blr .long 0 .byte 0,12,4,1,0x80,6,3,0 .long 0 +#if (!defined(_CALL_ELF) || _CALL_ELF == 1) .size .zfs_sha512_power8,.-.zfs_sha512_power8 .size zfs_sha512_power8,.-.zfs_sha512_power8 +#else +.size zfs_sha512_power8,.-zfs_sha512_power8 +#endif .align 6 .LPICmeup: mflr 0 bcl 20,31,$+4 mflr 6 addi 6,6,56 mtlr 0 blr .long 0 .byte 0,12,0x14,0,0,0,0,0 .space 28 .long 0x428a2f98,0xd728ae22 .long 0x428a2f98,0xd728ae22 .long 0x71374491,0x23ef65cd .long 0x71374491,0x23ef65cd .long 0xb5c0fbcf,0xec4d3b2f .long 0xb5c0fbcf,0xec4d3b2f .long 0xe9b5dba5,0x8189dbbc .long 0xe9b5dba5,0x8189dbbc .long 0x3956c25b,0xf348b538 .long 0x3956c25b,0xf348b538 .long 0x59f111f1,0xb605d019 .long 0x59f111f1,0xb605d019 .long 0x923f82a4,0xaf194f9b .long 0x923f82a4,0xaf194f9b .long 0xab1c5ed5,0xda6d8118 .long 0xab1c5ed5,0xda6d8118 .long 0xd807aa98,0xa3030242 .long 0xd807aa98,0xa3030242 .long 0x12835b01,0x45706fbe .long 0x12835b01,0x45706fbe .long 0x243185be,0x4ee4b28c .long 0x243185be,0x4ee4b28c .long 0x550c7dc3,0xd5ffb4e2 .long 0x550c7dc3,0xd5ffb4e2 .long 0x72be5d74,0xf27b896f .long 0x72be5d74,0xf27b896f .long 0x80deb1fe,0x3b1696b1 .long 0x80deb1fe,0x3b1696b1 .long 0x9bdc06a7,0x25c71235 .long 0x9bdc06a7,0x25c71235 .long 0xc19bf174,0xcf692694 .long 0xc19bf174,0xcf692694 .long 0xe49b69c1,0x9ef14ad2 .long 0xe49b69c1,0x9ef14ad2 .long 0xefbe4786,0x384f25e3 .long 0xefbe4786,0x384f25e3 .long 0x0fc19dc6,0x8b8cd5b5 .long 0x0fc19dc6,0x8b8cd5b5 .long 0x240ca1cc,0x77ac9c65 .long 0x240ca1cc,0x77ac9c65 .long 0x2de92c6f,0x592b0275 .long 0x2de92c6f,0x592b0275 .long 0x4a7484aa,0x6ea6e483 .long 0x4a7484aa,0x6ea6e483 .long 0x5cb0a9dc,0xbd41fbd4 .long 0x5cb0a9dc,0xbd41fbd4 .long 0x76f988da,0x831153b5 .long 0x76f988da,0x831153b5 .long 0x983e5152,0xee66dfab .long 0x983e5152,0xee66dfab .long 0xa831c66d,0x2db43210 .long 0xa831c66d,0x2db43210 .long 0xb00327c8,0x98fb213f .long 0xb00327c8,0x98fb213f .long 0xbf597fc7,0xbeef0ee4 .long 0xbf597fc7,0xbeef0ee4 .long 0xc6e00bf3,0x3da88fc2 .long 0xc6e00bf3,0x3da88fc2 .long 0xd5a79147,0x930aa725 .long 0xd5a79147,0x930aa725 .long 0x06ca6351,0xe003826f .long 0x06ca6351,0xe003826f .long 0x14292967,0x0a0e6e70 .long 0x14292967,0x0a0e6e70 .long 0x27b70a85,0x46d22ffc .long 0x27b70a85,0x46d22ffc .long 0x2e1b2138,0x5c26c926 .long 0x2e1b2138,0x5c26c926 .long 0x4d2c6dfc,0x5ac42aed .long 0x4d2c6dfc,0x5ac42aed .long 0x53380d13,0x9d95b3df .long 0x53380d13,0x9d95b3df .long 0x650a7354,0x8baf63de .long 0x650a7354,0x8baf63de .long 0x766a0abb,0x3c77b2a8 .long 0x766a0abb,0x3c77b2a8 .long 0x81c2c92e,0x47edaee6 .long 0x81c2c92e,0x47edaee6 .long 0x92722c85,0x1482353b .long 0x92722c85,0x1482353b .long 0xa2bfe8a1,0x4cf10364 .long 0xa2bfe8a1,0x4cf10364 .long 0xa81a664b,0xbc423001 .long 0xa81a664b,0xbc423001 .long 0xc24b8b70,0xd0f89791 .long 0xc24b8b70,0xd0f89791 .long 0xc76c51a3,0x0654be30 .long 0xc76c51a3,0x0654be30 .long 0xd192e819,0xd6ef5218 .long 0xd192e819,0xd6ef5218 .long 0xd6990624,0x5565a910 .long 0xd6990624,0x5565a910 .long 0xf40e3585,0x5771202a .long 0xf40e3585,0x5771202a .long 0x106aa070,0x32bbd1b8 .long 0x106aa070,0x32bbd1b8 .long 0x19a4c116,0xb8d2d0c8 .long 0x19a4c116,0xb8d2d0c8 .long 0x1e376c08,0x5141ab53 .long 0x1e376c08,0x5141ab53 .long 0x2748774c,0xdf8eeb99 .long 0x2748774c,0xdf8eeb99 .long 0x34b0bcb5,0xe19b48a8 .long 0x34b0bcb5,0xe19b48a8 .long 0x391c0cb3,0xc5c95a63 .long 0x391c0cb3,0xc5c95a63 .long 0x4ed8aa4a,0xe3418acb .long 0x4ed8aa4a,0xe3418acb .long 0x5b9cca4f,0x7763e373 .long 0x5b9cca4f,0x7763e373 .long 0x682e6ff3,0xd6b2b8a3 .long 0x682e6ff3,0xd6b2b8a3 .long 0x748f82ee,0x5defb2fc .long 0x748f82ee,0x5defb2fc .long 0x78a5636f,0x43172f60 .long 0x78a5636f,0x43172f60 .long 0x84c87814,0xa1f0ab72 .long 0x84c87814,0xa1f0ab72 .long 0x8cc70208,0x1a6439ec .long 0x8cc70208,0x1a6439ec .long 0x90befffa,0x23631e28 .long 0x90befffa,0x23631e28 .long 0xa4506ceb,0xde82bde9 .long 0xa4506ceb,0xde82bde9 .long 0xbef9a3f7,0xb2c67915 .long 0xbef9a3f7,0xb2c67915 .long 0xc67178f2,0xe372532b .long 0xc67178f2,0xe372532b .long 0xca273ece,0xea26619c .long 0xca273ece,0xea26619c .long 0xd186b8c7,0x21c0c207 .long 0xd186b8c7,0x21c0c207 .long 0xeada7dd6,0xcde0eb1e .long 0xeada7dd6,0xcde0eb1e .long 0xf57d4f7f,0xee6ed178 .long 0xf57d4f7f,0xee6ed178 .long 0x06f067aa,0x72176fba .long 0x06f067aa,0x72176fba .long 0x0a637dc5,0xa2c898a6 .long 0x0a637dc5,0xa2c898a6 .long 0x113f9804,0xbef90dae .long 0x113f9804,0xbef90dae .long 0x1b710b35,0x131c471b .long 0x1b710b35,0x131c471b .long 0x28db77f5,0x23047d84 .long 0x28db77f5,0x23047d84 .long 0x32caab7b,0x40c72493 .long 0x32caab7b,0x40c72493 .long 0x3c9ebe0a,0x15c9bebc .long 0x3c9ebe0a,0x15c9bebc .long 0x431d67c4,0x9c100d4c .long 0x431d67c4,0x9c100d4c .long 0x4cc5d4be,0xcb3e42b6 .long 0x4cc5d4be,0xcb3e42b6 .long 0x597f299c,0xfc657e2a .long 0x597f299c,0xfc657e2a .long 0x5fcb6fab,0x3ad6faec .long 0x5fcb6fab,0x3ad6faec .long 0x6c44198c,0x4a475817 .long 0x6c44198c,0x4a475817 .long 0,0 .long 0,0 .long 0x00010203,0x04050607 .long 0x10111213,0x14151617 #elif (defined(__PPC64__) && defined(__LITTLE_ENDIAN__)) .abiversion 2 .text .globl zfs_sha512_power8 .type zfs_sha512_power8,@function .align 6 zfs_sha512_power8: .localentry zfs_sha512_power8,0 stdu 1,-384(1) mflr 8 li 10,207 li 11,223 stvx 24,10,1 addi 10,10,32 li 12,-1 stvx 25,11,1 addi 11,11,32 stvx 26,10,1 addi 10,10,32 stvx 27,11,1 addi 11,11,32 stvx 28,10,1 addi 10,10,32 stvx 29,11,1 addi 11,11,32 stvx 30,10,1 stvx 31,11,1 li 11,-4096+255 stw 12,332(1) li 10,0x10 std 26,336(1) li 26,0x20 std 27,344(1) li 27,0x30 std 28,352(1) li 28,0x40 std 29,360(1) li 29,0x50 std 30,368(1) li 30,0x60 std 31,376(1) li 31,0x70 std 8,400(1) or 11,11,11 bl .LPICmeup addi 11,1,79 li 7,8 lvsl 31,0,7 vspltisb 28,0x0f vxor 31,31,28 .long 0x7C001E99 .long 0x7C4A1E99 .long 0x7C9A1E99 vsldoi 1,0,0,8 .long 0x7CDB1E99 vsldoi 3,2,2,8 vsldoi 5,4,4,8 vsldoi 7,6,6,8 li 0,4 b .Loop .align 5 .Loop: lvx 28,0,6 .long 0x7D002699 addi 4,4,16 mr 7,6 stvx 0,0,11 stvx 1,10,11 stvx 2,26,11 stvx 3,27,11 stvx 4,28,11 stvx 5,29,11 stvx 6,30,11 stvx 7,31,11 .long 0x10E7E0C0 lvx 28,10,6 vperm 8,8,8,31 .long 0x10E740C0 vsel 29,6,5,4 .long 0x10C6E0C0 .long 0x10E7E8C0 .long 0x13C4FEC2 .long 0x10E7F0C0 vxor 29,0,1 vsel 29,1,2,29 .long 0x106338C0 .long 0x13C086C2 .long 0x13DEE8C0 .long 0x10E7F0C0 lvx 28,26,7 .long 0x7D402699 addi 4,4,16 vsldoi 9,8,8,8 .long 0x10C648C0 vsel 29,5,4,3 .long 0x10A5E0C0 .long 0x10C6E8C0 .long 0x13C3FEC2 .long 0x10C6F0C0 vxor 29,7,0 vsel 29,0,1,29 .long 0x104230C0 .long 0x13C786C2 .long 0x13DEE8C0 .long 0x10C6F0C0 lvx 28,27,7 vperm 10,10,10,31 .long 0x10A550C0 vsel 29,4,3,2 .long 0x1084E0C0 .long 0x10A5E8C0 .long 0x13C2FEC2 .long 0x10A5F0C0 vxor 29,6,7 vsel 29,7,0,29 .long 0x102128C0 .long 0x13C686C2 .long 0x13DEE8C0 .long 0x10A5F0C0 lvx 28,28,7 .long 0x7D802699 addi 4,4,16 vsldoi 11,10,10,8 .long 0x108458C0 vsel 29,3,2,1 .long 0x1063E0C0 .long 0x1084E8C0 .long 0x13C1FEC2 .long 0x1084F0C0 vxor 29,5,6 vsel 29,6,7,29 .long 0x100020C0 .long 0x13C586C2 .long 0x13DEE8C0 .long 0x1084F0C0 lvx 28,29,7 vperm 12,12,12,31 .long 0x106360C0 vsel 29,2,1,0 .long 0x1042E0C0 .long 0x1063E8C0 .long 0x13C0FEC2 .long 0x1063F0C0 vxor 29,4,5 vsel 29,5,6,29 .long 0x10E718C0 .long 0x13C486C2 .long 0x13DEE8C0 .long 0x1063F0C0 lvx 28,30,7 .long 0x7DC02699 addi 4,4,16 vsldoi 13,12,12,8 .long 0x104268C0 vsel 29,1,0,7 .long 0x1021E0C0 .long 0x1042E8C0 .long 0x13C7FEC2 .long 0x1042F0C0 vxor 29,3,4 vsel 29,4,5,29 .long 0x10C610C0 .long 0x13C386C2 .long 0x13DEE8C0 .long 0x1042F0C0 lvx 28,31,7 addi 7,7,0x80 vperm 14,14,14,31 .long 0x102170C0 vsel 29,0,7,6 .long 0x1000E0C0 .long 0x1021E8C0 .long 0x13C6FEC2 .long 0x1021F0C0 vxor 29,2,3 vsel 29,3,4,29 .long 0x10A508C0 .long 0x13C286C2 .long 0x13DEE8C0 .long 0x1021F0C0 lvx 28,0,7 .long 0x7E002699 addi 4,4,16 vsldoi 15,14,14,8 .long 0x100078C0 vsel 29,7,6,5 .long 0x10E7E0C0 .long 0x1000E8C0 .long 0x13C5FEC2 .long 0x1000F0C0 vxor 29,1,2 vsel 29,2,3,29 .long 0x108400C0 .long 0x13C186C2 .long 0x13DEE8C0 .long 0x1000F0C0 lvx 28,10,7 vperm 16,16,16,31 .long 0x10E780C0 vsel 29,6,5,4 .long 0x10C6E0C0 .long 0x10E7E8C0 .long 0x13C4FEC2 .long 0x10E7F0C0 vxor 29,0,1 vsel 29,1,2,29 .long 0x106338C0 .long 0x13C086C2 .long 0x13DEE8C0 .long 0x10E7F0C0 lvx 28,26,7 .long 0x7E402699 addi 4,4,16 vsldoi 17,16,16,8 .long 0x10C688C0 vsel 29,5,4,3 .long 0x10A5E0C0 .long 0x10C6E8C0 .long 0x13C3FEC2 .long 0x10C6F0C0 vxor 29,7,0 vsel 29,0,1,29 .long 0x104230C0 .long 0x13C786C2 .long 0x13DEE8C0 .long 0x10C6F0C0 lvx 28,27,7 vperm 18,18,18,31 .long 0x10A590C0 vsel 29,4,3,2 .long 0x1084E0C0 .long 0x10A5E8C0 .long 0x13C2FEC2 .long 0x10A5F0C0 vxor 29,6,7 vsel 29,7,0,29 .long 0x102128C0 .long 0x13C686C2 .long 0x13DEE8C0 .long 0x10A5F0C0 lvx 28,28,7 .long 0x7F002699 addi 4,4,16 vsldoi 19,18,18,8 .long 0x108498C0 vsel 29,3,2,1 .long 0x1063E0C0 .long 0x1084E8C0 .long 0x13C1FEC2 .long 0x1084F0C0 vxor 29,5,6 vsel 29,6,7,29 .long 0x100020C0 .long 0x13C586C2 .long 0x13DEE8C0 .long 0x1084F0C0 lvx 28,29,7 vperm 24,24,24,31 .long 0x1063C0C0 vsel 29,2,1,0 .long 0x1042E0C0 .long 0x1063E8C0 .long 0x13C0FEC2 .long 0x1063F0C0 vxor 29,4,5 vsel 29,5,6,29 .long 0x10E718C0 .long 0x13C486C2 .long 0x13DEE8C0 .long 0x1063F0C0 lvx 28,30,7 .long 0x7F402699 addi 4,4,16 vsldoi 25,24,24,8 .long 0x1042C8C0 vsel 29,1,0,7 .long 0x1021E0C0 .long 0x1042E8C0 .long 0x13C7FEC2 .long 0x1042F0C0 vxor 29,3,4 vsel 29,4,5,29 .long 0x10C610C0 .long 0x13C386C2 .long 0x13DEE8C0 .long 0x1042F0C0 lvx 28,31,7 addi 7,7,0x80 vperm 26,26,26,31 .long 0x1021D0C0 vsel 29,0,7,6 .long 0x1000E0C0 .long 0x1021E8C0 .long 0x13C6FEC2 .long 0x1021F0C0 vxor 29,2,3 vsel 29,3,4,29 .long 0x10A508C0 .long 0x13C286C2 .long 0x13DEE8C0 .long 0x1021F0C0 lvx 28,0,7 vsldoi 27,26,26,8 .long 0x13C906C2 .long 0x1108F0C0 .long 0x13DA7EC2 .long 0x1108F0C0 .long 0x110888C0 .long 0x1000D8C0 vsel 29,7,6,5 .long 0x10E7E0C0 .long 0x1000E8C0 .long 0x13C5FEC2 .long 0x1000F0C0 vxor 29,1,2 vsel 29,2,3,29 .long 0x108400C0 .long 0x13C186C2 .long 0x13DEE8C0 .long 0x1000F0C0 lvx 28,10,7 mtctr 0 b .L16_xx .align 5 .L16_xx: .long 0x13CA06C2 .long 0x1129F0C0 .long 0x13DB7EC2 .long 0x1129F0C0 .long 0x112990C0 .long 0x10E740C0 vsel 29,6,5,4 .long 0x10C6E0C0 .long 0x10E7E8C0 .long 0x13C4FEC2 .long 0x10E7F0C0 vxor 29,0,1 vsel 29,1,2,29 .long 0x106338C0 .long 0x13C086C2 .long 0x13DEE8C0 .long 0x10E7F0C0 lvx 28,26,7 .long 0x13CB06C2 .long 0x114AF0C0 .long 0x13C87EC2 .long 0x114AF0C0 .long 0x114A98C0 .long 0x10C648C0 vsel 29,5,4,3 .long 0x10A5E0C0 .long 0x10C6E8C0 .long 0x13C3FEC2 .long 0x10C6F0C0 vxor 29,7,0 vsel 29,0,1,29 .long 0x104230C0 .long 0x13C786C2 .long 0x13DEE8C0 .long 0x10C6F0C0 lvx 28,27,7 .long 0x13CC06C2 .long 0x116BF0C0 .long 0x13C97EC2 .long 0x116BF0C0 .long 0x116BC0C0 .long 0x10A550C0 vsel 29,4,3,2 .long 0x1084E0C0 .long 0x10A5E8C0 .long 0x13C2FEC2 .long 0x10A5F0C0 vxor 29,6,7 vsel 29,7,0,29 .long 0x102128C0 .long 0x13C686C2 .long 0x13DEE8C0 .long 0x10A5F0C0 lvx 28,28,7 .long 0x13CD06C2 .long 0x118CF0C0 .long 0x13CA7EC2 .long 0x118CF0C0 .long 0x118CC8C0 .long 0x108458C0 vsel 29,3,2,1 .long 0x1063E0C0 .long 0x1084E8C0 .long 0x13C1FEC2 .long 0x1084F0C0 vxor 29,5,6 vsel 29,6,7,29 .long 0x100020C0 .long 0x13C586C2 .long 0x13DEE8C0 .long 0x1084F0C0 lvx 28,29,7 .long 0x13CE06C2 .long 0x11ADF0C0 .long 0x13CB7EC2 .long 0x11ADF0C0 .long 0x11ADD0C0 .long 0x106360C0 vsel 29,2,1,0 .long 0x1042E0C0 .long 0x1063E8C0 .long 0x13C0FEC2 .long 0x1063F0C0 vxor 29,4,5 vsel 29,5,6,29 .long 0x10E718C0 .long 0x13C486C2 .long 0x13DEE8C0 .long 0x1063F0C0 lvx 28,30,7 .long 0x13CF06C2 .long 0x11CEF0C0 .long 0x13CC7EC2 .long 0x11CEF0C0 .long 0x11CED8C0 .long 0x104268C0 vsel 29,1,0,7 .long 0x1021E0C0 .long 0x1042E8C0 .long 0x13C7FEC2 .long 0x1042F0C0 vxor 29,3,4 vsel 29,4,5,29 .long 0x10C610C0 .long 0x13C386C2 .long 0x13DEE8C0 .long 0x1042F0C0 lvx 28,31,7 addi 7,7,0x80 .long 0x13D006C2 .long 0x11EFF0C0 .long 0x13CD7EC2 .long 0x11EFF0C0 .long 0x11EF40C0 .long 0x102170C0 vsel 29,0,7,6 .long 0x1000E0C0 .long 0x1021E8C0 .long 0x13C6FEC2 .long 0x1021F0C0 vxor 29,2,3 vsel 29,3,4,29 .long 0x10A508C0 .long 0x13C286C2 .long 0x13DEE8C0 .long 0x1021F0C0 lvx 28,0,7 .long 0x13D106C2 .long 0x1210F0C0 .long 0x13CE7EC2 .long 0x1210F0C0 .long 0x121048C0 .long 0x100078C0 vsel 29,7,6,5 .long 0x10E7E0C0 .long 0x1000E8C0 .long 0x13C5FEC2 .long 0x1000F0C0 vxor 29,1,2 vsel 29,2,3,29 .long 0x108400C0 .long 0x13C186C2 .long 0x13DEE8C0 .long 0x1000F0C0 lvx 28,10,7 .long 0x13D206C2 .long 0x1231F0C0 .long 0x13CF7EC2 .long 0x1231F0C0 .long 0x123150C0 .long 0x10E780C0 vsel 29,6,5,4 .long 0x10C6E0C0 .long 0x10E7E8C0 .long 0x13C4FEC2 .long 0x10E7F0C0 vxor 29,0,1 vsel 29,1,2,29 .long 0x106338C0 .long 0x13C086C2 .long 0x13DEE8C0 .long 0x10E7F0C0 lvx 28,26,7 .long 0x13D306C2 .long 0x1252F0C0 .long 0x13D07EC2 .long 0x1252F0C0 .long 0x125258C0 .long 0x10C688C0 vsel 29,5,4,3 .long 0x10A5E0C0 .long 0x10C6E8C0 .long 0x13C3FEC2 .long 0x10C6F0C0 vxor 29,7,0 vsel 29,0,1,29 .long 0x104230C0 .long 0x13C786C2 .long 0x13DEE8C0 .long 0x10C6F0C0 lvx 28,27,7 .long 0x13D806C2 .long 0x1273F0C0 .long 0x13D17EC2 .long 0x1273F0C0 .long 0x127360C0 .long 0x10A590C0 vsel 29,4,3,2 .long 0x1084E0C0 .long 0x10A5E8C0 .long 0x13C2FEC2 .long 0x10A5F0C0 vxor 29,6,7 vsel 29,7,0,29 .long 0x102128C0 .long 0x13C686C2 .long 0x13DEE8C0 .long 0x10A5F0C0 lvx 28,28,7 .long 0x13D906C2 .long 0x1318F0C0 .long 0x13D27EC2 .long 0x1318F0C0 .long 0x131868C0 .long 0x108498C0 vsel 29,3,2,1 .long 0x1063E0C0 .long 0x1084E8C0 .long 0x13C1FEC2 .long 0x1084F0C0 vxor 29,5,6 vsel 29,6,7,29 .long 0x100020C0 .long 0x13C586C2 .long 0x13DEE8C0 .long 0x1084F0C0 lvx 28,29,7 .long 0x13DA06C2 .long 0x1339F0C0 .long 0x13D37EC2 .long 0x1339F0C0 .long 0x133970C0 .long 0x1063C0C0 vsel 29,2,1,0 .long 0x1042E0C0 .long 0x1063E8C0 .long 0x13C0FEC2 .long 0x1063F0C0 vxor 29,4,5 vsel 29,5,6,29 .long 0x10E718C0 .long 0x13C486C2 .long 0x13DEE8C0 .long 0x1063F0C0 lvx 28,30,7 .long 0x13DB06C2 .long 0x135AF0C0 .long 0x13D87EC2 .long 0x135AF0C0 .long 0x135A78C0 .long 0x1042C8C0 vsel 29,1,0,7 .long 0x1021E0C0 .long 0x1042E8C0 .long 0x13C7FEC2 .long 0x1042F0C0 vxor 29,3,4 vsel 29,4,5,29 .long 0x10C610C0 .long 0x13C386C2 .long 0x13DEE8C0 .long 0x1042F0C0 lvx 28,31,7 addi 7,7,0x80 .long 0x13C806C2 .long 0x137BF0C0 .long 0x13D97EC2 .long 0x137BF0C0 .long 0x137B80C0 .long 0x1021D0C0 vsel 29,0,7,6 .long 0x1000E0C0 .long 0x1021E8C0 .long 0x13C6FEC2 .long 0x1021F0C0 vxor 29,2,3 vsel 29,3,4,29 .long 0x10A508C0 .long 0x13C286C2 .long 0x13DEE8C0 .long 0x1021F0C0 lvx 28,0,7 .long 0x13C906C2 .long 0x1108F0C0 .long 0x13DA7EC2 .long 0x1108F0C0 .long 0x110888C0 .long 0x1000D8C0 vsel 29,7,6,5 .long 0x10E7E0C0 .long 0x1000E8C0 .long 0x13C5FEC2 .long 0x1000F0C0 vxor 29,1,2 vsel 29,2,3,29 .long 0x108400C0 .long 0x13C186C2 .long 0x13DEE8C0 .long 0x1000F0C0 lvx 28,10,7 bdnz .L16_xx lvx 10,0,11 subic. 5,5,1 lvx 11,10,11 .long 0x100050C0 lvx 12,26,11 .long 0x102158C0 lvx 13,27,11 .long 0x104260C0 lvx 14,28,11 .long 0x106368C0 lvx 15,29,11 .long 0x108470C0 lvx 16,30,11 .long 0x10A578C0 lvx 17,31,11 .long 0x10C680C0 .long 0x10E788C0 bne .Loop vperm 0,0,1,28 vperm 2,2,3,28 vperm 4,4,5,28 vperm 6,6,7,28 .long 0x7C001F99 .long 0x7C4A1F99 .long 0x7C9A1F99 .long 0x7CDB1F99 addi 11,1,207 mtlr 8 or 12,12,12 lvx 24,0,11 lvx 25,10,11 lvx 26,26,11 lvx 27,27,11 lvx 28,28,11 lvx 29,29,11 lvx 30,30,11 lvx 31,31,11 ld 26,336(1) ld 27,344(1) ld 28,352(1) ld 29,360(1) ld 30,368(1) ld 31,376(1) addi 1,1,384 blr .long 0 .byte 0,12,4,1,0x80,6,3,0 .long 0 .size zfs_sha512_power8,.-zfs_sha512_power8 .align 6 .LPICmeup: mflr 0 bcl 20,31,$+4 mflr 6 addi 6,6,56 mtlr 0 blr .long 0 .byte 0,12,0x14,0,0,0,0,0 .space 28 .long 0xd728ae22,0x428a2f98 .long 0xd728ae22,0x428a2f98 .long 0x23ef65cd,0x71374491 .long 0x23ef65cd,0x71374491 .long 0xec4d3b2f,0xb5c0fbcf .long 0xec4d3b2f,0xb5c0fbcf .long 0x8189dbbc,0xe9b5dba5 .long 0x8189dbbc,0xe9b5dba5 .long 0xf348b538,0x3956c25b .long 0xf348b538,0x3956c25b .long 0xb605d019,0x59f111f1 .long 0xb605d019,0x59f111f1 .long 0xaf194f9b,0x923f82a4 .long 0xaf194f9b,0x923f82a4 .long 0xda6d8118,0xab1c5ed5 .long 0xda6d8118,0xab1c5ed5 .long 0xa3030242,0xd807aa98 .long 0xa3030242,0xd807aa98 .long 0x45706fbe,0x12835b01 .long 0x45706fbe,0x12835b01 .long 0x4ee4b28c,0x243185be .long 0x4ee4b28c,0x243185be .long 0xd5ffb4e2,0x550c7dc3 .long 0xd5ffb4e2,0x550c7dc3 .long 0xf27b896f,0x72be5d74 .long 0xf27b896f,0x72be5d74 .long 0x3b1696b1,0x80deb1fe .long 0x3b1696b1,0x80deb1fe .long 0x25c71235,0x9bdc06a7 .long 0x25c71235,0x9bdc06a7 .long 0xcf692694,0xc19bf174 .long 0xcf692694,0xc19bf174 .long 0x9ef14ad2,0xe49b69c1 .long 0x9ef14ad2,0xe49b69c1 .long 0x384f25e3,0xefbe4786 .long 0x384f25e3,0xefbe4786 .long 0x8b8cd5b5,0x0fc19dc6 .long 0x8b8cd5b5,0x0fc19dc6 .long 0x77ac9c65,0x240ca1cc .long 0x77ac9c65,0x240ca1cc .long 0x592b0275,0x2de92c6f .long 0x592b0275,0x2de92c6f .long 0x6ea6e483,0x4a7484aa .long 0x6ea6e483,0x4a7484aa .long 0xbd41fbd4,0x5cb0a9dc .long 0xbd41fbd4,0x5cb0a9dc .long 0x831153b5,0x76f988da .long 0x831153b5,0x76f988da .long 0xee66dfab,0x983e5152 .long 0xee66dfab,0x983e5152 .long 0x2db43210,0xa831c66d .long 0x2db43210,0xa831c66d .long 0x98fb213f,0xb00327c8 .long 0x98fb213f,0xb00327c8 .long 0xbeef0ee4,0xbf597fc7 .long 0xbeef0ee4,0xbf597fc7 .long 0x3da88fc2,0xc6e00bf3 .long 0x3da88fc2,0xc6e00bf3 .long 0x930aa725,0xd5a79147 .long 0x930aa725,0xd5a79147 .long 0xe003826f,0x06ca6351 .long 0xe003826f,0x06ca6351 .long 0x0a0e6e70,0x14292967 .long 0x0a0e6e70,0x14292967 .long 0x46d22ffc,0x27b70a85 .long 0x46d22ffc,0x27b70a85 .long 0x5c26c926,0x2e1b2138 .long 0x5c26c926,0x2e1b2138 .long 0x5ac42aed,0x4d2c6dfc .long 0x5ac42aed,0x4d2c6dfc .long 0x9d95b3df,0x53380d13 .long 0x9d95b3df,0x53380d13 .long 0x8baf63de,0x650a7354 .long 0x8baf63de,0x650a7354 .long 0x3c77b2a8,0x766a0abb .long 0x3c77b2a8,0x766a0abb .long 0x47edaee6,0x81c2c92e .long 0x47edaee6,0x81c2c92e .long 0x1482353b,0x92722c85 .long 0x1482353b,0x92722c85 .long 0x4cf10364,0xa2bfe8a1 .long 0x4cf10364,0xa2bfe8a1 .long 0xbc423001,0xa81a664b .long 0xbc423001,0xa81a664b .long 0xd0f89791,0xc24b8b70 .long 0xd0f89791,0xc24b8b70 .long 0x0654be30,0xc76c51a3 .long 0x0654be30,0xc76c51a3 .long 0xd6ef5218,0xd192e819 .long 0xd6ef5218,0xd192e819 .long 0x5565a910,0xd6990624 .long 0x5565a910,0xd6990624 .long 0x5771202a,0xf40e3585 .long 0x5771202a,0xf40e3585 .long 0x32bbd1b8,0x106aa070 .long 0x32bbd1b8,0x106aa070 .long 0xb8d2d0c8,0x19a4c116 .long 0xb8d2d0c8,0x19a4c116 .long 0x5141ab53,0x1e376c08 .long 0x5141ab53,0x1e376c08 .long 0xdf8eeb99,0x2748774c .long 0xdf8eeb99,0x2748774c .long 0xe19b48a8,0x34b0bcb5 .long 0xe19b48a8,0x34b0bcb5 .long 0xc5c95a63,0x391c0cb3 .long 0xc5c95a63,0x391c0cb3 .long 0xe3418acb,0x4ed8aa4a .long 0xe3418acb,0x4ed8aa4a .long 0x7763e373,0x5b9cca4f .long 0x7763e373,0x5b9cca4f .long 0xd6b2b8a3,0x682e6ff3 .long 0xd6b2b8a3,0x682e6ff3 .long 0x5defb2fc,0x748f82ee .long 0x5defb2fc,0x748f82ee .long 0x43172f60,0x78a5636f .long 0x43172f60,0x78a5636f .long 0xa1f0ab72,0x84c87814 .long 0xa1f0ab72,0x84c87814 .long 0x1a6439ec,0x8cc70208 .long 0x1a6439ec,0x8cc70208 .long 0x23631e28,0x90befffa .long 0x23631e28,0x90befffa .long 0xde82bde9,0xa4506ceb .long 0xde82bde9,0xa4506ceb .long 0xb2c67915,0xbef9a3f7 .long 0xb2c67915,0xbef9a3f7 .long 0xe372532b,0xc67178f2 .long 0xe372532b,0xc67178f2 .long 0xea26619c,0xca273ece .long 0xea26619c,0xca273ece .long 0x21c0c207,0xd186b8c7 .long 0x21c0c207,0xd186b8c7 .long 0xcde0eb1e,0xeada7dd6 .long 0xcde0eb1e,0xeada7dd6 .long 0xee6ed178,0xf57d4f7f .long 0xee6ed178,0xf57d4f7f .long 0x72176fba,0x06f067aa .long 0x72176fba,0x06f067aa .long 0xa2c898a6,0x0a637dc5 .long 0xa2c898a6,0x0a637dc5 .long 0xbef90dae,0x113f9804 .long 0xbef90dae,0x113f9804 .long 0x131c471b,0x1b710b35 .long 0x131c471b,0x1b710b35 .long 0x23047d84,0x28db77f5 .long 0x23047d84,0x28db77f5 .long 0x40c72493,0x32caab7b .long 0x40c72493,0x32caab7b .long 0x15c9bebc,0x3c9ebe0a .long 0x15c9bebc,0x3c9ebe0a .long 0x9c100d4c,0x431d67c4 .long 0x9c100d4c,0x431d67c4 .long 0xcb3e42b6,0x4cc5d4be .long 0xcb3e42b6,0x4cc5d4be .long 0xfc657e2a,0x597f299c .long 0xfc657e2a,0x597f299c .long 0x3ad6faec,0x5fcb6fab .long 0x3ad6faec,0x5fcb6fab .long 0x4a475817,0x6c44198c .long 0x4a475817,0x6c44198c .long 0,0 .long 0,0 .long 0x14151617,0x10111213 .long 0x04050607,0x00010203 #endif diff --git a/module/icp/asm-ppc64/sha2/sha512-ppc.S b/module/icp/asm-ppc64/sha2/sha512-ppc.S index 37070115c3ff..57213f68abc5 100644 --- a/module/icp/asm-ppc64/sha2/sha512-ppc.S +++ b/module/icp/asm-ppc64/sha2/sha512-ppc.S @@ -1,2958 +1,2973 @@ /* * Copyright 2004-2022 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * Portions Copyright (c) 2022 Tino Reichardt * - modified assembly to fit into OpenZFS */ #if (defined(__PPC64__) && defined(__BIG_ENDIAN__)) +#if (!defined(_CALL_ELF) || _CALL_ELF == 1) .text .globl zfs_sha512_ppc .globl .zfs_sha512_ppc .type zfs_sha512_ppc,@function .section ".opd","aw" .align 3 zfs_sha512_ppc: .quad .zfs_sha512_ppc,.TOC.@tocbase,0 .previous .align 6 .zfs_sha512_ppc: +#else +.abiversion 2 +.text + +.globl zfs_sha512_ppc +.type zfs_sha512_ppc,@function +.align 6 +zfs_sha512_ppc: +.localentry zfs_sha512_ppc,0 +#endif stdu 1,-384(1) mflr 0 sldi 5,5,7 std 3,208(1) std 14,240(1) std 15,248(1) std 16,256(1) std 17,264(1) std 18,272(1) std 19,280(1) std 20,288(1) std 21,296(1) std 22,304(1) std 23,312(1) std 24,320(1) std 25,328(1) std 26,336(1) std 27,344(1) std 28,352(1) std 29,360(1) std 30,368(1) std 31,376(1) std 0,400(1) ld 8,0(3) mr 31,4 ld 9,8(3) ld 10,16(3) ld 11,24(3) ld 12,32(3) ld 6,40(3) ld 14,48(3) ld 15,56(3) bl .LPICmeup .LPICedup: andi. 0,31,3 bne .Lunaligned .Laligned: add 5,31,5 std 5,192(1) std 31,200(1) bl .Lsha2_block_private b .Ldone .align 4 .Lunaligned: subfic 0,31,4096 andi. 0,0,3968 beq .Lcross_page cmpld 5,0 ble .Laligned subfc 5,0,5 add 0,31,0 std 5,184(1) std 0,192(1) std 31,200(1) bl .Lsha2_block_private ld 5,184(1) .Lcross_page: li 0,32 mtctr 0 addi 20,1,48 .Lmemcpy: lbz 16,0(31) lbz 17,1(31) lbz 18,2(31) lbz 19,3(31) addi 31,31,4 stb 16,0(20) stb 17,1(20) stb 18,2(20) stb 19,3(20) addi 20,20,4 bdnz .Lmemcpy std 31,176(1) addi 0,1,176 addi 31,1,48 std 5,184(1) std 0,192(1) std 31,200(1) bl .Lsha2_block_private ld 31,176(1) ld 5,184(1) addic. 5,5,-128 bne .Lunaligned .Ldone: ld 0,400(1) ld 14,240(1) ld 15,248(1) ld 16,256(1) ld 17,264(1) ld 18,272(1) ld 19,280(1) ld 20,288(1) ld 21,296(1) ld 22,304(1) ld 23,312(1) ld 24,320(1) ld 25,328(1) ld 26,336(1) ld 27,344(1) ld 28,352(1) ld 29,360(1) ld 30,368(1) ld 31,376(1) mtlr 0 addi 1,1,384 blr .long 0 .byte 0,12,4,1,0x80,18,3,0 .long 0 .align 4 .Lsha2_block_private: ld 0,0(7) lwz 5,0(31) lwz 16,4(31) insrdi 16,5,32,0 rotrdi 3,12,14 rotrdi 4,12,18 and 5,6,12 xor 3,3,4 add 15,15,0 andc 0,14,12 rotrdi 4,4,23 or 5,5,0 add 15,15,16 xor 3,3,4 add 15,15,5 add 15,15,3 rotrdi 3,8,28 rotrdi 4,8,34 and 5,8,9 and 0,8,10 xor 3,3,4 rotrdi 4,4,5 xor 5,5,0 and 0,9,10 xor 3,3,4 add 11,11,15 xor 5,5,0 ld 0,8(7) add 15,15,3 add 15,15,5 lwz 5,8(31) lwz 17,12(31) insrdi 17,5,32,0 rotrdi 3,11,14 rotrdi 4,11,18 and 5,12,11 xor 3,3,4 add 14,14,0 andc 0,6,11 rotrdi 4,4,23 or 5,5,0 add 14,14,17 xor 3,3,4 add 14,14,5 add 14,14,3 rotrdi 3,15,28 rotrdi 4,15,34 and 5,15,8 and 0,15,9 xor 3,3,4 rotrdi 4,4,5 xor 5,5,0 and 0,8,9 xor 3,3,4 add 10,10,14 xor 5,5,0 ld 0,16(7) add 14,14,3 add 14,14,5 lwz 5,16(31) lwz 18,20(31) insrdi 18,5,32,0 rotrdi 3,10,14 rotrdi 4,10,18 and 5,11,10 xor 3,3,4 add 6,6,0 andc 0,12,10 rotrdi 4,4,23 or 5,5,0 add 6,6,18 xor 3,3,4 add 6,6,5 add 6,6,3 rotrdi 3,14,28 rotrdi 4,14,34 and 5,14,15 and 0,14,8 xor 3,3,4 rotrdi 4,4,5 xor 5,5,0 and 0,15,8 xor 3,3,4 add 9,9,6 xor 5,5,0 ld 0,24(7) add 6,6,3 add 6,6,5 lwz 5,24(31) lwz 19,28(31) insrdi 19,5,32,0 rotrdi 3,9,14 rotrdi 4,9,18 and 5,10,9 xor 3,3,4 add 12,12,0 andc 0,11,9 rotrdi 4,4,23 or 5,5,0 add 12,12,19 xor 3,3,4 add 12,12,5 add 12,12,3 rotrdi 3,6,28 rotrdi 4,6,34 and 5,6,14 and 0,6,15 xor 3,3,4 rotrdi 4,4,5 xor 5,5,0 and 0,14,15 xor 3,3,4 add 8,8,12 xor 5,5,0 ld 0,32(7) add 12,12,3 add 12,12,5 lwz 5,32(31) lwz 20,36(31) insrdi 20,5,32,0 rotrdi 3,8,14 rotrdi 4,8,18 and 5,9,8 xor 3,3,4 add 11,11,0 andc 0,10,8 rotrdi 4,4,23 or 5,5,0 add 11,11,20 xor 3,3,4 add 11,11,5 add 11,11,3 rotrdi 3,12,28 rotrdi 4,12,34 and 5,12,6 and 0,12,14 xor 3,3,4 rotrdi 4,4,5 xor 5,5,0 and 0,6,14 xor 3,3,4 add 15,15,11 xor 5,5,0 ld 0,40(7) add 11,11,3 add 11,11,5 lwz 5,40(31) lwz 21,44(31) insrdi 21,5,32,0 rotrdi 3,15,14 rotrdi 4,15,18 and 5,8,15 xor 3,3,4 add 10,10,0 andc 0,9,15 rotrdi 4,4,23 or 5,5,0 add 10,10,21 xor 3,3,4 add 10,10,5 add 10,10,3 rotrdi 3,11,28 rotrdi 4,11,34 and 5,11,12 and 0,11,6 xor 3,3,4 rotrdi 4,4,5 xor 5,5,0 and 0,12,6 xor 3,3,4 add 14,14,10 xor 5,5,0 ld 0,48(7) add 10,10,3 add 10,10,5 lwz 5,48(31) lwz 22,52(31) insrdi 22,5,32,0 rotrdi 3,14,14 rotrdi 4,14,18 and 5,15,14 xor 3,3,4 add 9,9,0 andc 0,8,14 rotrdi 4,4,23 or 5,5,0 add 9,9,22 xor 3,3,4 add 9,9,5 add 9,9,3 rotrdi 3,10,28 rotrdi 4,10,34 and 5,10,11 and 0,10,12 xor 3,3,4 rotrdi 4,4,5 xor 5,5,0 and 0,11,12 xor 3,3,4 add 6,6,9 xor 5,5,0 ld 0,56(7) add 9,9,3 add 9,9,5 lwz 5,56(31) lwz 23,60(31) insrdi 23,5,32,0 rotrdi 3,6,14 rotrdi 4,6,18 and 5,14,6 xor 3,3,4 add 8,8,0 andc 0,15,6 rotrdi 4,4,23 or 5,5,0 add 8,8,23 xor 3,3,4 add 8,8,5 add 8,8,3 rotrdi 3,9,28 rotrdi 4,9,34 and 5,9,10 and 0,9,11 xor 3,3,4 rotrdi 4,4,5 xor 5,5,0 and 0,10,11 xor 3,3,4 add 12,12,8 xor 5,5,0 ld 0,64(7) add 8,8,3 add 8,8,5 lwz 5,64(31) lwz 24,68(31) insrdi 24,5,32,0 rotrdi 3,12,14 rotrdi 4,12,18 and 5,6,12 xor 3,3,4 add 15,15,0 andc 0,14,12 rotrdi 4,4,23 or 5,5,0 add 15,15,24 xor 3,3,4 add 15,15,5 add 15,15,3 rotrdi 3,8,28 rotrdi 4,8,34 and 5,8,9 and 0,8,10 xor 3,3,4 rotrdi 4,4,5 xor 5,5,0 and 0,9,10 xor 3,3,4 add 11,11,15 xor 5,5,0 ld 0,72(7) add 15,15,3 add 15,15,5 lwz 5,72(31) lwz 25,76(31) insrdi 25,5,32,0 rotrdi 3,11,14 rotrdi 4,11,18 and 5,12,11 xor 3,3,4 add 14,14,0 andc 0,6,11 rotrdi 4,4,23 or 5,5,0 add 14,14,25 xor 3,3,4 add 14,14,5 add 14,14,3 rotrdi 3,15,28 rotrdi 4,15,34 and 5,15,8 and 0,15,9 xor 3,3,4 rotrdi 4,4,5 xor 5,5,0 and 0,8,9 xor 3,3,4 add 10,10,14 xor 5,5,0 ld 0,80(7) add 14,14,3 add 14,14,5 lwz 5,80(31) lwz 26,84(31) insrdi 26,5,32,0 rotrdi 3,10,14 rotrdi 4,10,18 and 5,11,10 xor 3,3,4 add 6,6,0 andc 0,12,10 rotrdi 4,4,23 or 5,5,0 add 6,6,26 xor 3,3,4 add 6,6,5 add 6,6,3 rotrdi 3,14,28 rotrdi 4,14,34 and 5,14,15 and 0,14,8 xor 3,3,4 rotrdi 4,4,5 xor 5,5,0 and 0,15,8 xor 3,3,4 add 9,9,6 xor 5,5,0 ld 0,88(7) add 6,6,3 add 6,6,5 lwz 5,88(31) lwz 27,92(31) insrdi 27,5,32,0 rotrdi 3,9,14 rotrdi 4,9,18 and 5,10,9 xor 3,3,4 add 12,12,0 andc 0,11,9 rotrdi 4,4,23 or 5,5,0 add 12,12,27 xor 3,3,4 add 12,12,5 add 12,12,3 rotrdi 3,6,28 rotrdi 4,6,34 and 5,6,14 and 0,6,15 xor 3,3,4 rotrdi 4,4,5 xor 5,5,0 and 0,14,15 xor 3,3,4 add 8,8,12 xor 5,5,0 ld 0,96(7) add 12,12,3 add 12,12,5 lwz 5,96(31) lwz 28,100(31) insrdi 28,5,32,0 rotrdi 3,8,14 rotrdi 4,8,18 and 5,9,8 xor 3,3,4 add 11,11,0 andc 0,10,8 rotrdi 4,4,23 or 5,5,0 add 11,11,28 xor 3,3,4 add 11,11,5 add 11,11,3 rotrdi 3,12,28 rotrdi 4,12,34 and 5,12,6 and 0,12,14 xor 3,3,4 rotrdi 4,4,5 xor 5,5,0 and 0,6,14 xor 3,3,4 add 15,15,11 xor 5,5,0 ld 0,104(7) add 11,11,3 add 11,11,5 lwz 5,104(31) lwz 29,108(31) insrdi 29,5,32,0 rotrdi 3,15,14 rotrdi 4,15,18 and 5,8,15 xor 3,3,4 add 10,10,0 andc 0,9,15 rotrdi 4,4,23 or 5,5,0 add 10,10,29 xor 3,3,4 add 10,10,5 add 10,10,3 rotrdi 3,11,28 rotrdi 4,11,34 and 5,11,12 and 0,11,6 xor 3,3,4 rotrdi 4,4,5 xor 5,5,0 and 0,12,6 xor 3,3,4 add 14,14,10 xor 5,5,0 ld 0,112(7) add 10,10,3 add 10,10,5 lwz 5,112(31) lwz 30,116(31) insrdi 30,5,32,0 rotrdi 3,14,14 rotrdi 4,14,18 and 5,15,14 xor 3,3,4 add 9,9,0 andc 0,8,14 rotrdi 4,4,23 or 5,5,0 add 9,9,30 xor 3,3,4 add 9,9,5 add 9,9,3 rotrdi 3,10,28 rotrdi 4,10,34 and 5,10,11 and 0,10,12 xor 3,3,4 rotrdi 4,4,5 xor 5,5,0 and 0,11,12 xor 3,3,4 add 6,6,9 xor 5,5,0 ld 0,120(7) add 9,9,3 add 9,9,5 lwz 5,120(31) lwz 31,124(31) insrdi 31,5,32,0 rotrdi 3,6,14 rotrdi 4,6,18 and 5,14,6 xor 3,3,4 add 8,8,0 andc 0,15,6 rotrdi 4,4,23 or 5,5,0 add 8,8,31 xor 3,3,4 add 8,8,5 add 8,8,3 rotrdi 3,9,28 rotrdi 4,9,34 and 5,9,10 and 0,9,11 xor 3,3,4 rotrdi 4,4,5 xor 5,5,0 and 0,10,11 xor 3,3,4 add 12,12,8 xor 5,5,0 add 8,8,3 add 8,8,5 li 5,4 mtctr 5 .align 4 .Lrounds: addi 7,7,128 rotrdi 3,17,1 rotrdi 4,17,8 rotrdi 5,30,19 rotrdi 0,30,61 xor 3,3,4 srdi 4,17,7 xor 5,5,0 srdi 0,30,6 add 16,16,25 xor 3,3,4 xor 5,5,0 ld 0,0(7) add 16,16,3 add 16,16,5 rotrdi 3,12,14 rotrdi 4,12,18 and 5,6,12 xor 3,3,4 add 15,15,0 andc 0,14,12 rotrdi 4,4,23 or 5,5,0 add 15,15,16 xor 3,3,4 add 15,15,5 add 15,15,3 rotrdi 3,8,28 rotrdi 4,8,34 and 5,8,9 and 0,8,10 xor 3,3,4 rotrdi 4,4,5 xor 5,5,0 and 0,9,10 xor 3,3,4 add 11,11,15 xor 5,5,0 add 15,15,3 add 15,15,5 rotrdi 3,18,1 rotrdi 4,18,8 rotrdi 5,31,19 rotrdi 0,31,61 xor 3,3,4 srdi 4,18,7 xor 5,5,0 srdi 0,31,6 add 17,17,26 xor 3,3,4 xor 5,5,0 ld 0,8(7) add 17,17,3 add 17,17,5 rotrdi 3,11,14 rotrdi 4,11,18 and 5,12,11 xor 3,3,4 add 14,14,0 andc 0,6,11 rotrdi 4,4,23 or 5,5,0 add 14,14,17 xor 3,3,4 add 14,14,5 add 14,14,3 rotrdi 3,15,28 rotrdi 4,15,34 and 5,15,8 and 0,15,9 xor 3,3,4 rotrdi 4,4,5 xor 5,5,0 and 0,8,9 xor 3,3,4 add 10,10,14 xor 5,5,0 add 14,14,3 add 14,14,5 rotrdi 3,19,1 rotrdi 4,19,8 rotrdi 5,16,19 rotrdi 0,16,61 xor 3,3,4 srdi 4,19,7 xor 5,5,0 srdi 0,16,6 add 18,18,27 xor 3,3,4 xor 5,5,0 ld 0,16(7) add 18,18,3 add 18,18,5 rotrdi 3,10,14 rotrdi 4,10,18 and 5,11,10 xor 3,3,4 add 6,6,0 andc 0,12,10 rotrdi 4,4,23 or 5,5,0 add 6,6,18 xor 3,3,4 add 6,6,5 add 6,6,3 rotrdi 3,14,28 rotrdi 4,14,34 and 5,14,15 and 0,14,8 xor 3,3,4 rotrdi 4,4,5 xor 5,5,0 and 0,15,8 xor 3,3,4 add 9,9,6 xor 5,5,0 add 6,6,3 add 6,6,5 rotrdi 3,20,1 rotrdi 4,20,8 rotrdi 5,17,19 rotrdi 0,17,61 xor 3,3,4 srdi 4,20,7 xor 5,5,0 srdi 0,17,6 add 19,19,28 xor 3,3,4 xor 5,5,0 ld 0,24(7) add 19,19,3 add 19,19,5 rotrdi 3,9,14 rotrdi 4,9,18 and 5,10,9 xor 3,3,4 add 12,12,0 andc 0,11,9 rotrdi 4,4,23 or 5,5,0 add 12,12,19 xor 3,3,4 add 12,12,5 add 12,12,3 rotrdi 3,6,28 rotrdi 4,6,34 and 5,6,14 and 0,6,15 xor 3,3,4 rotrdi 4,4,5 xor 5,5,0 and 0,14,15 xor 3,3,4 add 8,8,12 xor 5,5,0 add 12,12,3 add 12,12,5 rotrdi 3,21,1 rotrdi 4,21,8 rotrdi 5,18,19 rotrdi 0,18,61 xor 3,3,4 srdi 4,21,7 xor 5,5,0 srdi 0,18,6 add 20,20,29 xor 3,3,4 xor 5,5,0 ld 0,32(7) add 20,20,3 add 20,20,5 rotrdi 3,8,14 rotrdi 4,8,18 and 5,9,8 xor 3,3,4 add 11,11,0 andc 0,10,8 rotrdi 4,4,23 or 5,5,0 add 11,11,20 xor 3,3,4 add 11,11,5 add 11,11,3 rotrdi 3,12,28 rotrdi 4,12,34 and 5,12,6 and 0,12,14 xor 3,3,4 rotrdi 4,4,5 xor 5,5,0 and 0,6,14 xor 3,3,4 add 15,15,11 xor 5,5,0 add 11,11,3 add 11,11,5 rotrdi 3,22,1 rotrdi 4,22,8 rotrdi 5,19,19 rotrdi 0,19,61 xor 3,3,4 srdi 4,22,7 xor 5,5,0 srdi 0,19,6 add 21,21,30 xor 3,3,4 xor 5,5,0 ld 0,40(7) add 21,21,3 add 21,21,5 rotrdi 3,15,14 rotrdi 4,15,18 and 5,8,15 xor 3,3,4 add 10,10,0 andc 0,9,15 rotrdi 4,4,23 or 5,5,0 add 10,10,21 xor 3,3,4 add 10,10,5 add 10,10,3 rotrdi 3,11,28 rotrdi 4,11,34 and 5,11,12 and 0,11,6 xor 3,3,4 rotrdi 4,4,5 xor 5,5,0 and 0,12,6 xor 3,3,4 add 14,14,10 xor 5,5,0 add 10,10,3 add 10,10,5 rotrdi 3,23,1 rotrdi 4,23,8 rotrdi 5,20,19 rotrdi 0,20,61 xor 3,3,4 srdi 4,23,7 xor 5,5,0 srdi 0,20,6 add 22,22,31 xor 3,3,4 xor 5,5,0 ld 0,48(7) add 22,22,3 add 22,22,5 rotrdi 3,14,14 rotrdi 4,14,18 and 5,15,14 xor 3,3,4 add 9,9,0 andc 0,8,14 rotrdi 4,4,23 or 5,5,0 add 9,9,22 xor 3,3,4 add 9,9,5 add 9,9,3 rotrdi 3,10,28 rotrdi 4,10,34 and 5,10,11 and 0,10,12 xor 3,3,4 rotrdi 4,4,5 xor 5,5,0 and 0,11,12 xor 3,3,4 add 6,6,9 xor 5,5,0 add 9,9,3 add 9,9,5 rotrdi 3,24,1 rotrdi 4,24,8 rotrdi 5,21,19 rotrdi 0,21,61 xor 3,3,4 srdi 4,24,7 xor 5,5,0 srdi 0,21,6 add 23,23,16 xor 3,3,4 xor 5,5,0 ld 0,56(7) add 23,23,3 add 23,23,5 rotrdi 3,6,14 rotrdi 4,6,18 and 5,14,6 xor 3,3,4 add 8,8,0 andc 0,15,6 rotrdi 4,4,23 or 5,5,0 add 8,8,23 xor 3,3,4 add 8,8,5 add 8,8,3 rotrdi 3,9,28 rotrdi 4,9,34 and 5,9,10 and 0,9,11 xor 3,3,4 rotrdi 4,4,5 xor 5,5,0 and 0,10,11 xor 3,3,4 add 12,12,8 xor 5,5,0 add 8,8,3 add 8,8,5 rotrdi 3,25,1 rotrdi 4,25,8 rotrdi 5,22,19 rotrdi 0,22,61 xor 3,3,4 srdi 4,25,7 xor 5,5,0 srdi 0,22,6 add 24,24,17 xor 3,3,4 xor 5,5,0 ld 0,64(7) add 24,24,3 add 24,24,5 rotrdi 3,12,14 rotrdi 4,12,18 and 5,6,12 xor 3,3,4 add 15,15,0 andc 0,14,12 rotrdi 4,4,23 or 5,5,0 add 15,15,24 xor 3,3,4 add 15,15,5 add 15,15,3 rotrdi 3,8,28 rotrdi 4,8,34 and 5,8,9 and 0,8,10 xor 3,3,4 rotrdi 4,4,5 xor 5,5,0 and 0,9,10 xor 3,3,4 add 11,11,15 xor 5,5,0 add 15,15,3 add 15,15,5 rotrdi 3,26,1 rotrdi 4,26,8 rotrdi 5,23,19 rotrdi 0,23,61 xor 3,3,4 srdi 4,26,7 xor 5,5,0 srdi 0,23,6 add 25,25,18 xor 3,3,4 xor 5,5,0 ld 0,72(7) add 25,25,3 add 25,25,5 rotrdi 3,11,14 rotrdi 4,11,18 and 5,12,11 xor 3,3,4 add 14,14,0 andc 0,6,11 rotrdi 4,4,23 or 5,5,0 add 14,14,25 xor 3,3,4 add 14,14,5 add 14,14,3 rotrdi 3,15,28 rotrdi 4,15,34 and 5,15,8 and 0,15,9 xor 3,3,4 rotrdi 4,4,5 xor 5,5,0 and 0,8,9 xor 3,3,4 add 10,10,14 xor 5,5,0 add 14,14,3 add 14,14,5 rotrdi 3,27,1 rotrdi 4,27,8 rotrdi 5,24,19 rotrdi 0,24,61 xor 3,3,4 srdi 4,27,7 xor 5,5,0 srdi 0,24,6 add 26,26,19 xor 3,3,4 xor 5,5,0 ld 0,80(7) add 26,26,3 add 26,26,5 rotrdi 3,10,14 rotrdi 4,10,18 and 5,11,10 xor 3,3,4 add 6,6,0 andc 0,12,10 rotrdi 4,4,23 or 5,5,0 add 6,6,26 xor 3,3,4 add 6,6,5 add 6,6,3 rotrdi 3,14,28 rotrdi 4,14,34 and 5,14,15 and 0,14,8 xor 3,3,4 rotrdi 4,4,5 xor 5,5,0 and 0,15,8 xor 3,3,4 add 9,9,6 xor 5,5,0 add 6,6,3 add 6,6,5 rotrdi 3,28,1 rotrdi 4,28,8 rotrdi 5,25,19 rotrdi 0,25,61 xor 3,3,4 srdi 4,28,7 xor 5,5,0 srdi 0,25,6 add 27,27,20 xor 3,3,4 xor 5,5,0 ld 0,88(7) add 27,27,3 add 27,27,5 rotrdi 3,9,14 rotrdi 4,9,18 and 5,10,9 xor 3,3,4 add 12,12,0 andc 0,11,9 rotrdi 4,4,23 or 5,5,0 add 12,12,27 xor 3,3,4 add 12,12,5 add 12,12,3 rotrdi 3,6,28 rotrdi 4,6,34 and 5,6,14 and 0,6,15 xor 3,3,4 rotrdi 4,4,5 xor 5,5,0 and 0,14,15 xor 3,3,4 add 8,8,12 xor 5,5,0 add 12,12,3 add 12,12,5 rotrdi 3,29,1 rotrdi 4,29,8 rotrdi 5,26,19 rotrdi 0,26,61 xor 3,3,4 srdi 4,29,7 xor 5,5,0 srdi 0,26,6 add 28,28,21 xor 3,3,4 xor 5,5,0 ld 0,96(7) add 28,28,3 add 28,28,5 rotrdi 3,8,14 rotrdi 4,8,18 and 5,9,8 xor 3,3,4 add 11,11,0 andc 0,10,8 rotrdi 4,4,23 or 5,5,0 add 11,11,28 xor 3,3,4 add 11,11,5 add 11,11,3 rotrdi 3,12,28 rotrdi 4,12,34 and 5,12,6 and 0,12,14 xor 3,3,4 rotrdi 4,4,5 xor 5,5,0 and 0,6,14 xor 3,3,4 add 15,15,11 xor 5,5,0 add 11,11,3 add 11,11,5 rotrdi 3,30,1 rotrdi 4,30,8 rotrdi 5,27,19 rotrdi 0,27,61 xor 3,3,4 srdi 4,30,7 xor 5,5,0 srdi 0,27,6 add 29,29,22 xor 3,3,4 xor 5,5,0 ld 0,104(7) add 29,29,3 add 29,29,5 rotrdi 3,15,14 rotrdi 4,15,18 and 5,8,15 xor 3,3,4 add 10,10,0 andc 0,9,15 rotrdi 4,4,23 or 5,5,0 add 10,10,29 xor 3,3,4 add 10,10,5 add 10,10,3 rotrdi 3,11,28 rotrdi 4,11,34 and 5,11,12 and 0,11,6 xor 3,3,4 rotrdi 4,4,5 xor 5,5,0 and 0,12,6 xor 3,3,4 add 14,14,10 xor 5,5,0 add 10,10,3 add 10,10,5 rotrdi 3,31,1 rotrdi 4,31,8 rotrdi 5,28,19 rotrdi 0,28,61 xor 3,3,4 srdi 4,31,7 xor 5,5,0 srdi 0,28,6 add 30,30,23 xor 3,3,4 xor 5,5,0 ld 0,112(7) add 30,30,3 add 30,30,5 rotrdi 3,14,14 rotrdi 4,14,18 and 5,15,14 xor 3,3,4 add 9,9,0 andc 0,8,14 rotrdi 4,4,23 or 5,5,0 add 9,9,30 xor 3,3,4 add 9,9,5 add 9,9,3 rotrdi 3,10,28 rotrdi 4,10,34 and 5,10,11 and 0,10,12 xor 3,3,4 rotrdi 4,4,5 xor 5,5,0 and 0,11,12 xor 3,3,4 add 6,6,9 xor 5,5,0 add 9,9,3 add 9,9,5 rotrdi 3,16,1 rotrdi 4,16,8 rotrdi 5,29,19 rotrdi 0,29,61 xor 3,3,4 srdi 4,16,7 xor 5,5,0 srdi 0,29,6 add 31,31,24 xor 3,3,4 xor 5,5,0 ld 0,120(7) add 31,31,3 add 31,31,5 rotrdi 3,6,14 rotrdi 4,6,18 and 5,14,6 xor 3,3,4 add 8,8,0 andc 0,15,6 rotrdi 4,4,23 or 5,5,0 add 8,8,31 xor 3,3,4 add 8,8,5 add 8,8,3 rotrdi 3,9,28 rotrdi 4,9,34 and 5,9,10 and 0,9,11 xor 3,3,4 rotrdi 4,4,5 xor 5,5,0 and 0,10,11 xor 3,3,4 add 12,12,8 xor 5,5,0 add 8,8,3 add 8,8,5 bdnz .Lrounds ld 3,208(1) ld 31,200(1) ld 5,192(1) subi 7,7,512 ld 16,0(3) ld 17,8(3) ld 18,16(3) ld 19,24(3) ld 20,32(3) ld 21,40(3) ld 22,48(3) addi 31,31,128 ld 23,56(3) add 8,8,16 add 9,9,17 std 31,200(1) add 10,10,18 std 8,0(3) add 11,11,19 std 9,8(3) add 12,12,20 std 10,16(3) add 6,6,21 std 11,24(3) add 14,14,22 std 12,32(3) add 15,15,23 std 6,40(3) std 14,48(3) cmpld 31,5 std 15,56(3) bne .Lsha2_block_private blr .long 0 .byte 0,12,0x14,0,0,0,0,0 +#if (!defined(_CALL_ELF) || _CALL_ELF == 1) .size .zfs_sha512_ppc,.-.zfs_sha512_ppc .size zfs_sha512_ppc,.-.zfs_sha512_ppc +#else +.size zfs_sha512_ppc,.-zfs_sha512_ppc +#endif .align 6 .LPICmeup: mflr 0 bcl 20,31,$+4 mflr 7 addi 7,7,56 mtlr 0 blr .long 0 .byte 0,12,0x14,0,0,0,0,0 .space 28 .long 0x428a2f98,0xd728ae22 .long 0x71374491,0x23ef65cd .long 0xb5c0fbcf,0xec4d3b2f .long 0xe9b5dba5,0x8189dbbc .long 0x3956c25b,0xf348b538 .long 0x59f111f1,0xb605d019 .long 0x923f82a4,0xaf194f9b .long 0xab1c5ed5,0xda6d8118 .long 0xd807aa98,0xa3030242 .long 0x12835b01,0x45706fbe .long 0x243185be,0x4ee4b28c .long 0x550c7dc3,0xd5ffb4e2 .long 0x72be5d74,0xf27b896f .long 0x80deb1fe,0x3b1696b1 .long 0x9bdc06a7,0x25c71235 .long 0xc19bf174,0xcf692694 .long 0xe49b69c1,0x9ef14ad2 .long 0xefbe4786,0x384f25e3 .long 0x0fc19dc6,0x8b8cd5b5 .long 0x240ca1cc,0x77ac9c65 .long 0x2de92c6f,0x592b0275 .long 0x4a7484aa,0x6ea6e483 .long 0x5cb0a9dc,0xbd41fbd4 .long 0x76f988da,0x831153b5 .long 0x983e5152,0xee66dfab .long 0xa831c66d,0x2db43210 .long 0xb00327c8,0x98fb213f .long 0xbf597fc7,0xbeef0ee4 .long 0xc6e00bf3,0x3da88fc2 .long 0xd5a79147,0x930aa725 .long 0x06ca6351,0xe003826f .long 0x14292967,0x0a0e6e70 .long 0x27b70a85,0x46d22ffc .long 0x2e1b2138,0x5c26c926 .long 0x4d2c6dfc,0x5ac42aed .long 0x53380d13,0x9d95b3df .long 0x650a7354,0x8baf63de .long 0x766a0abb,0x3c77b2a8 .long 0x81c2c92e,0x47edaee6 .long 0x92722c85,0x1482353b .long 0xa2bfe8a1,0x4cf10364 .long 0xa81a664b,0xbc423001 .long 0xc24b8b70,0xd0f89791 .long 0xc76c51a3,0x0654be30 .long 0xd192e819,0xd6ef5218 .long 0xd6990624,0x5565a910 .long 0xf40e3585,0x5771202a .long 0x106aa070,0x32bbd1b8 .long 0x19a4c116,0xb8d2d0c8 .long 0x1e376c08,0x5141ab53 .long 0x2748774c,0xdf8eeb99 .long 0x34b0bcb5,0xe19b48a8 .long 0x391c0cb3,0xc5c95a63 .long 0x4ed8aa4a,0xe3418acb .long 0x5b9cca4f,0x7763e373 .long 0x682e6ff3,0xd6b2b8a3 .long 0x748f82ee,0x5defb2fc .long 0x78a5636f,0x43172f60 .long 0x84c87814,0xa1f0ab72 .long 0x8cc70208,0x1a6439ec .long 0x90befffa,0x23631e28 .long 0xa4506ceb,0xde82bde9 .long 0xbef9a3f7,0xb2c67915 .long 0xc67178f2,0xe372532b .long 0xca273ece,0xea26619c .long 0xd186b8c7,0x21c0c207 .long 0xeada7dd6,0xcde0eb1e .long 0xf57d4f7f,0xee6ed178 .long 0x06f067aa,0x72176fba .long 0x0a637dc5,0xa2c898a6 .long 0x113f9804,0xbef90dae .long 0x1b710b35,0x131c471b .long 0x28db77f5,0x23047d84 .long 0x32caab7b,0x40c72493 .long 0x3c9ebe0a,0x15c9bebc .long 0x431d67c4,0x9c100d4c .long 0x4cc5d4be,0xcb3e42b6 .long 0x597f299c,0xfc657e2a .long 0x5fcb6fab,0x3ad6faec .long 0x6c44198c,0x4a475817 #elif (defined(__PPC64__) && defined(__LITTLE_ENDIAN__)) .abiversion 2 .text .globl zfs_sha512_ppc .type zfs_sha512_ppc,@function .align 6 zfs_sha512_ppc: .localentry zfs_sha512_ppc,0 stdu 1,-384(1) mflr 0 sldi 5,5,7 std 3,208(1) std 14,240(1) std 15,248(1) std 16,256(1) std 17,264(1) std 18,272(1) std 19,280(1) std 20,288(1) std 21,296(1) std 22,304(1) std 23,312(1) std 24,320(1) std 25,328(1) std 26,336(1) std 27,344(1) std 28,352(1) std 29,360(1) std 30,368(1) std 31,376(1) std 0,400(1) ld 8,0(3) mr 31,4 ld 9,8(3) ld 10,16(3) ld 11,24(3) ld 12,32(3) ld 6,40(3) ld 14,48(3) ld 15,56(3) bl .LPICmeup .LPICedup: andi. 0,31,3 bne .Lunaligned .Laligned: add 5,31,5 std 5,192(1) std 31,200(1) bl .Lsha2_block_private b .Ldone .align 4 .Lunaligned: subfic 0,31,4096 andi. 0,0,3968 beq .Lcross_page cmpld 5,0 ble .Laligned subfc 5,0,5 add 0,31,0 std 5,184(1) std 0,192(1) std 31,200(1) bl .Lsha2_block_private ld 5,184(1) .Lcross_page: li 0,32 mtctr 0 addi 20,1,48 .Lmemcpy: lbz 16,0(31) lbz 17,1(31) lbz 18,2(31) lbz 19,3(31) addi 31,31,4 stb 16,0(20) stb 17,1(20) stb 18,2(20) stb 19,3(20) addi 20,20,4 bdnz .Lmemcpy std 31,176(1) addi 0,1,176 addi 31,1,48 std 5,184(1) std 0,192(1) std 31,200(1) bl .Lsha2_block_private ld 31,176(1) ld 5,184(1) addic. 5,5,-128 bne .Lunaligned .Ldone: ld 0,400(1) ld 14,240(1) ld 15,248(1) ld 16,256(1) ld 17,264(1) ld 18,272(1) ld 19,280(1) ld 20,288(1) ld 21,296(1) ld 22,304(1) ld 23,312(1) ld 24,320(1) ld 25,328(1) ld 26,336(1) ld 27,344(1) ld 28,352(1) ld 29,360(1) ld 30,368(1) ld 31,376(1) mtlr 0 addi 1,1,384 blr .long 0 .byte 0,12,4,1,0x80,18,3,0 .long 0 .align 4 .Lsha2_block_private: ld 0,0(7) lwz 3,0(31) lwz 4,4(31) rotlwi 5,3,8 rotlwi 16,4,8 rlwimi 5,3,24,0,7 rlwimi 16,4,24,0,7 rlwimi 5,3,24,16,23 rlwimi 16,4,24,16,23 insrdi 16,5,32,0 rotrdi 3,12,14 rotrdi 4,12,18 and 5,6,12 xor 3,3,4 add 15,15,0 andc 0,14,12 rotrdi 4,4,23 or 5,5,0 add 15,15,16 xor 3,3,4 add 15,15,5 add 15,15,3 rotrdi 3,8,28 rotrdi 4,8,34 and 5,8,9 and 0,8,10 xor 3,3,4 rotrdi 4,4,5 xor 5,5,0 and 0,9,10 xor 3,3,4 add 11,11,15 xor 5,5,0 ld 0,8(7) add 15,15,3 add 15,15,5 lwz 3,8(31) lwz 4,12(31) rotlwi 5,3,8 rotlwi 17,4,8 rlwimi 5,3,24,0,7 rlwimi 17,4,24,0,7 rlwimi 5,3,24,16,23 rlwimi 17,4,24,16,23 insrdi 17,5,32,0 rotrdi 3,11,14 rotrdi 4,11,18 and 5,12,11 xor 3,3,4 add 14,14,0 andc 0,6,11 rotrdi 4,4,23 or 5,5,0 add 14,14,17 xor 3,3,4 add 14,14,5 add 14,14,3 rotrdi 3,15,28 rotrdi 4,15,34 and 5,15,8 and 0,15,9 xor 3,3,4 rotrdi 4,4,5 xor 5,5,0 and 0,8,9 xor 3,3,4 add 10,10,14 xor 5,5,0 ld 0,16(7) add 14,14,3 add 14,14,5 lwz 3,16(31) lwz 4,20(31) rotlwi 5,3,8 rotlwi 18,4,8 rlwimi 5,3,24,0,7 rlwimi 18,4,24,0,7 rlwimi 5,3,24,16,23 rlwimi 18,4,24,16,23 insrdi 18,5,32,0 rotrdi 3,10,14 rotrdi 4,10,18 and 5,11,10 xor 3,3,4 add 6,6,0 andc 0,12,10 rotrdi 4,4,23 or 5,5,0 add 6,6,18 xor 3,3,4 add 6,6,5 add 6,6,3 rotrdi 3,14,28 rotrdi 4,14,34 and 5,14,15 and 0,14,8 xor 3,3,4 rotrdi 4,4,5 xor 5,5,0 and 0,15,8 xor 3,3,4 add 9,9,6 xor 5,5,0 ld 0,24(7) add 6,6,3 add 6,6,5 lwz 3,24(31) lwz 4,28(31) rotlwi 5,3,8 rotlwi 19,4,8 rlwimi 5,3,24,0,7 rlwimi 19,4,24,0,7 rlwimi 5,3,24,16,23 rlwimi 19,4,24,16,23 insrdi 19,5,32,0 rotrdi 3,9,14 rotrdi 4,9,18 and 5,10,9 xor 3,3,4 add 12,12,0 andc 0,11,9 rotrdi 4,4,23 or 5,5,0 add 12,12,19 xor 3,3,4 add 12,12,5 add 12,12,3 rotrdi 3,6,28 rotrdi 4,6,34 and 5,6,14 and 0,6,15 xor 3,3,4 rotrdi 4,4,5 xor 5,5,0 and 0,14,15 xor 3,3,4 add 8,8,12 xor 5,5,0 ld 0,32(7) add 12,12,3 add 12,12,5 lwz 3,32(31) lwz 4,36(31) rotlwi 5,3,8 rotlwi 20,4,8 rlwimi 5,3,24,0,7 rlwimi 20,4,24,0,7 rlwimi 5,3,24,16,23 rlwimi 20,4,24,16,23 insrdi 20,5,32,0 rotrdi 3,8,14 rotrdi 4,8,18 and 5,9,8 xor 3,3,4 add 11,11,0 andc 0,10,8 rotrdi 4,4,23 or 5,5,0 add 11,11,20 xor 3,3,4 add 11,11,5 add 11,11,3 rotrdi 3,12,28 rotrdi 4,12,34 and 5,12,6 and 0,12,14 xor 3,3,4 rotrdi 4,4,5 xor 5,5,0 and 0,6,14 xor 3,3,4 add 15,15,11 xor 5,5,0 ld 0,40(7) add 11,11,3 add 11,11,5 lwz 3,40(31) lwz 4,44(31) rotlwi 5,3,8 rotlwi 21,4,8 rlwimi 5,3,24,0,7 rlwimi 21,4,24,0,7 rlwimi 5,3,24,16,23 rlwimi 21,4,24,16,23 insrdi 21,5,32,0 rotrdi 3,15,14 rotrdi 4,15,18 and 5,8,15 xor 3,3,4 add 10,10,0 andc 0,9,15 rotrdi 4,4,23 or 5,5,0 add 10,10,21 xor 3,3,4 add 10,10,5 add 10,10,3 rotrdi 3,11,28 rotrdi 4,11,34 and 5,11,12 and 0,11,6 xor 3,3,4 rotrdi 4,4,5 xor 5,5,0 and 0,12,6 xor 3,3,4 add 14,14,10 xor 5,5,0 ld 0,48(7) add 10,10,3 add 10,10,5 lwz 3,48(31) lwz 4,52(31) rotlwi 5,3,8 rotlwi 22,4,8 rlwimi 5,3,24,0,7 rlwimi 22,4,24,0,7 rlwimi 5,3,24,16,23 rlwimi 22,4,24,16,23 insrdi 22,5,32,0 rotrdi 3,14,14 rotrdi 4,14,18 and 5,15,14 xor 3,3,4 add 9,9,0 andc 0,8,14 rotrdi 4,4,23 or 5,5,0 add 9,9,22 xor 3,3,4 add 9,9,5 add 9,9,3 rotrdi 3,10,28 rotrdi 4,10,34 and 5,10,11 and 0,10,12 xor 3,3,4 rotrdi 4,4,5 xor 5,5,0 and 0,11,12 xor 3,3,4 add 6,6,9 xor 5,5,0 ld 0,56(7) add 9,9,3 add 9,9,5 lwz 3,56(31) lwz 4,60(31) rotlwi 5,3,8 rotlwi 23,4,8 rlwimi 5,3,24,0,7 rlwimi 23,4,24,0,7 rlwimi 5,3,24,16,23 rlwimi 23,4,24,16,23 insrdi 23,5,32,0 rotrdi 3,6,14 rotrdi 4,6,18 and 5,14,6 xor 3,3,4 add 8,8,0 andc 0,15,6 rotrdi 4,4,23 or 5,5,0 add 8,8,23 xor 3,3,4 add 8,8,5 add 8,8,3 rotrdi 3,9,28 rotrdi 4,9,34 and 5,9,10 and 0,9,11 xor 3,3,4 rotrdi 4,4,5 xor 5,5,0 and 0,10,11 xor 3,3,4 add 12,12,8 xor 5,5,0 ld 0,64(7) add 8,8,3 add 8,8,5 lwz 3,64(31) lwz 4,68(31) rotlwi 5,3,8 rotlwi 24,4,8 rlwimi 5,3,24,0,7 rlwimi 24,4,24,0,7 rlwimi 5,3,24,16,23 rlwimi 24,4,24,16,23 insrdi 24,5,32,0 rotrdi 3,12,14 rotrdi 4,12,18 and 5,6,12 xor 3,3,4 add 15,15,0 andc 0,14,12 rotrdi 4,4,23 or 5,5,0 add 15,15,24 xor 3,3,4 add 15,15,5 add 15,15,3 rotrdi 3,8,28 rotrdi 4,8,34 and 5,8,9 and 0,8,10 xor 3,3,4 rotrdi 4,4,5 xor 5,5,0 and 0,9,10 xor 3,3,4 add 11,11,15 xor 5,5,0 ld 0,72(7) add 15,15,3 add 15,15,5 lwz 3,72(31) lwz 4,76(31) rotlwi 5,3,8 rotlwi 25,4,8 rlwimi 5,3,24,0,7 rlwimi 25,4,24,0,7 rlwimi 5,3,24,16,23 rlwimi 25,4,24,16,23 insrdi 25,5,32,0 rotrdi 3,11,14 rotrdi 4,11,18 and 5,12,11 xor 3,3,4 add 14,14,0 andc 0,6,11 rotrdi 4,4,23 or 5,5,0 add 14,14,25 xor 3,3,4 add 14,14,5 add 14,14,3 rotrdi 3,15,28 rotrdi 4,15,34 and 5,15,8 and 0,15,9 xor 3,3,4 rotrdi 4,4,5 xor 5,5,0 and 0,8,9 xor 3,3,4 add 10,10,14 xor 5,5,0 ld 0,80(7) add 14,14,3 add 14,14,5 lwz 3,80(31) lwz 4,84(31) rotlwi 5,3,8 rotlwi 26,4,8 rlwimi 5,3,24,0,7 rlwimi 26,4,24,0,7 rlwimi 5,3,24,16,23 rlwimi 26,4,24,16,23 insrdi 26,5,32,0 rotrdi 3,10,14 rotrdi 4,10,18 and 5,11,10 xor 3,3,4 add 6,6,0 andc 0,12,10 rotrdi 4,4,23 or 5,5,0 add 6,6,26 xor 3,3,4 add 6,6,5 add 6,6,3 rotrdi 3,14,28 rotrdi 4,14,34 and 5,14,15 and 0,14,8 xor 3,3,4 rotrdi 4,4,5 xor 5,5,0 and 0,15,8 xor 3,3,4 add 9,9,6 xor 5,5,0 ld 0,88(7) add 6,6,3 add 6,6,5 lwz 3,88(31) lwz 4,92(31) rotlwi 5,3,8 rotlwi 27,4,8 rlwimi 5,3,24,0,7 rlwimi 27,4,24,0,7 rlwimi 5,3,24,16,23 rlwimi 27,4,24,16,23 insrdi 27,5,32,0 rotrdi 3,9,14 rotrdi 4,9,18 and 5,10,9 xor 3,3,4 add 12,12,0 andc 0,11,9 rotrdi 4,4,23 or 5,5,0 add 12,12,27 xor 3,3,4 add 12,12,5 add 12,12,3 rotrdi 3,6,28 rotrdi 4,6,34 and 5,6,14 and 0,6,15 xor 3,3,4 rotrdi 4,4,5 xor 5,5,0 and 0,14,15 xor 3,3,4 add 8,8,12 xor 5,5,0 ld 0,96(7) add 12,12,3 add 12,12,5 lwz 3,96(31) lwz 4,100(31) rotlwi 5,3,8 rotlwi 28,4,8 rlwimi 5,3,24,0,7 rlwimi 28,4,24,0,7 rlwimi 5,3,24,16,23 rlwimi 28,4,24,16,23 insrdi 28,5,32,0 rotrdi 3,8,14 rotrdi 4,8,18 and 5,9,8 xor 3,3,4 add 11,11,0 andc 0,10,8 rotrdi 4,4,23 or 5,5,0 add 11,11,28 xor 3,3,4 add 11,11,5 add 11,11,3 rotrdi 3,12,28 rotrdi 4,12,34 and 5,12,6 and 0,12,14 xor 3,3,4 rotrdi 4,4,5 xor 5,5,0 and 0,6,14 xor 3,3,4 add 15,15,11 xor 5,5,0 ld 0,104(7) add 11,11,3 add 11,11,5 lwz 3,104(31) lwz 4,108(31) rotlwi 5,3,8 rotlwi 29,4,8 rlwimi 5,3,24,0,7 rlwimi 29,4,24,0,7 rlwimi 5,3,24,16,23 rlwimi 29,4,24,16,23 insrdi 29,5,32,0 rotrdi 3,15,14 rotrdi 4,15,18 and 5,8,15 xor 3,3,4 add 10,10,0 andc 0,9,15 rotrdi 4,4,23 or 5,5,0 add 10,10,29 xor 3,3,4 add 10,10,5 add 10,10,3 rotrdi 3,11,28 rotrdi 4,11,34 and 5,11,12 and 0,11,6 xor 3,3,4 rotrdi 4,4,5 xor 5,5,0 and 0,12,6 xor 3,3,4 add 14,14,10 xor 5,5,0 ld 0,112(7) add 10,10,3 add 10,10,5 lwz 3,112(31) lwz 4,116(31) rotlwi 5,3,8 rotlwi 30,4,8 rlwimi 5,3,24,0,7 rlwimi 30,4,24,0,7 rlwimi 5,3,24,16,23 rlwimi 30,4,24,16,23 insrdi 30,5,32,0 rotrdi 3,14,14 rotrdi 4,14,18 and 5,15,14 xor 3,3,4 add 9,9,0 andc 0,8,14 rotrdi 4,4,23 or 5,5,0 add 9,9,30 xor 3,3,4 add 9,9,5 add 9,9,3 rotrdi 3,10,28 rotrdi 4,10,34 and 5,10,11 and 0,10,12 xor 3,3,4 rotrdi 4,4,5 xor 5,5,0 and 0,11,12 xor 3,3,4 add 6,6,9 xor 5,5,0 ld 0,120(7) add 9,9,3 add 9,9,5 lwz 3,120(31) lwz 4,124(31) rotlwi 5,3,8 rotlwi 31,4,8 rlwimi 5,3,24,0,7 rlwimi 31,4,24,0,7 rlwimi 5,3,24,16,23 rlwimi 31,4,24,16,23 insrdi 31,5,32,0 rotrdi 3,6,14 rotrdi 4,6,18 and 5,14,6 xor 3,3,4 add 8,8,0 andc 0,15,6 rotrdi 4,4,23 or 5,5,0 add 8,8,31 xor 3,3,4 add 8,8,5 add 8,8,3 rotrdi 3,9,28 rotrdi 4,9,34 and 5,9,10 and 0,9,11 xor 3,3,4 rotrdi 4,4,5 xor 5,5,0 and 0,10,11 xor 3,3,4 add 12,12,8 xor 5,5,0 add 8,8,3 add 8,8,5 li 5,4 mtctr 5 .align 4 .Lrounds: addi 7,7,128 rotrdi 3,17,1 rotrdi 4,17,8 rotrdi 5,30,19 rotrdi 0,30,61 xor 3,3,4 srdi 4,17,7 xor 5,5,0 srdi 0,30,6 add 16,16,25 xor 3,3,4 xor 5,5,0 ld 0,0(7) add 16,16,3 add 16,16,5 rotrdi 3,12,14 rotrdi 4,12,18 and 5,6,12 xor 3,3,4 add 15,15,0 andc 0,14,12 rotrdi 4,4,23 or 5,5,0 add 15,15,16 xor 3,3,4 add 15,15,5 add 15,15,3 rotrdi 3,8,28 rotrdi 4,8,34 and 5,8,9 and 0,8,10 xor 3,3,4 rotrdi 4,4,5 xor 5,5,0 and 0,9,10 xor 3,3,4 add 11,11,15 xor 5,5,0 add 15,15,3 add 15,15,5 rotrdi 3,18,1 rotrdi 4,18,8 rotrdi 5,31,19 rotrdi 0,31,61 xor 3,3,4 srdi 4,18,7 xor 5,5,0 srdi 0,31,6 add 17,17,26 xor 3,3,4 xor 5,5,0 ld 0,8(7) add 17,17,3 add 17,17,5 rotrdi 3,11,14 rotrdi 4,11,18 and 5,12,11 xor 3,3,4 add 14,14,0 andc 0,6,11 rotrdi 4,4,23 or 5,5,0 add 14,14,17 xor 3,3,4 add 14,14,5 add 14,14,3 rotrdi 3,15,28 rotrdi 4,15,34 and 5,15,8 and 0,15,9 xor 3,3,4 rotrdi 4,4,5 xor 5,5,0 and 0,8,9 xor 3,3,4 add 10,10,14 xor 5,5,0 add 14,14,3 add 14,14,5 rotrdi 3,19,1 rotrdi 4,19,8 rotrdi 5,16,19 rotrdi 0,16,61 xor 3,3,4 srdi 4,19,7 xor 5,5,0 srdi 0,16,6 add 18,18,27 xor 3,3,4 xor 5,5,0 ld 0,16(7) add 18,18,3 add 18,18,5 rotrdi 3,10,14 rotrdi 4,10,18 and 5,11,10 xor 3,3,4 add 6,6,0 andc 0,12,10 rotrdi 4,4,23 or 5,5,0 add 6,6,18 xor 3,3,4 add 6,6,5 add 6,6,3 rotrdi 3,14,28 rotrdi 4,14,34 and 5,14,15 and 0,14,8 xor 3,3,4 rotrdi 4,4,5 xor 5,5,0 and 0,15,8 xor 3,3,4 add 9,9,6 xor 5,5,0 add 6,6,3 add 6,6,5 rotrdi 3,20,1 rotrdi 4,20,8 rotrdi 5,17,19 rotrdi 0,17,61 xor 3,3,4 srdi 4,20,7 xor 5,5,0 srdi 0,17,6 add 19,19,28 xor 3,3,4 xor 5,5,0 ld 0,24(7) add 19,19,3 add 19,19,5 rotrdi 3,9,14 rotrdi 4,9,18 and 5,10,9 xor 3,3,4 add 12,12,0 andc 0,11,9 rotrdi 4,4,23 or 5,5,0 add 12,12,19 xor 3,3,4 add 12,12,5 add 12,12,3 rotrdi 3,6,28 rotrdi 4,6,34 and 5,6,14 and 0,6,15 xor 3,3,4 rotrdi 4,4,5 xor 5,5,0 and 0,14,15 xor 3,3,4 add 8,8,12 xor 5,5,0 add 12,12,3 add 12,12,5 rotrdi 3,21,1 rotrdi 4,21,8 rotrdi 5,18,19 rotrdi 0,18,61 xor 3,3,4 srdi 4,21,7 xor 5,5,0 srdi 0,18,6 add 20,20,29 xor 3,3,4 xor 5,5,0 ld 0,32(7) add 20,20,3 add 20,20,5 rotrdi 3,8,14 rotrdi 4,8,18 and 5,9,8 xor 3,3,4 add 11,11,0 andc 0,10,8 rotrdi 4,4,23 or 5,5,0 add 11,11,20 xor 3,3,4 add 11,11,5 add 11,11,3 rotrdi 3,12,28 rotrdi 4,12,34 and 5,12,6 and 0,12,14 xor 3,3,4 rotrdi 4,4,5 xor 5,5,0 and 0,6,14 xor 3,3,4 add 15,15,11 xor 5,5,0 add 11,11,3 add 11,11,5 rotrdi 3,22,1 rotrdi 4,22,8 rotrdi 5,19,19 rotrdi 0,19,61 xor 3,3,4 srdi 4,22,7 xor 5,5,0 srdi 0,19,6 add 21,21,30 xor 3,3,4 xor 5,5,0 ld 0,40(7) add 21,21,3 add 21,21,5 rotrdi 3,15,14 rotrdi 4,15,18 and 5,8,15 xor 3,3,4 add 10,10,0 andc 0,9,15 rotrdi 4,4,23 or 5,5,0 add 10,10,21 xor 3,3,4 add 10,10,5 add 10,10,3 rotrdi 3,11,28 rotrdi 4,11,34 and 5,11,12 and 0,11,6 xor 3,3,4 rotrdi 4,4,5 xor 5,5,0 and 0,12,6 xor 3,3,4 add 14,14,10 xor 5,5,0 add 10,10,3 add 10,10,5 rotrdi 3,23,1 rotrdi 4,23,8 rotrdi 5,20,19 rotrdi 0,20,61 xor 3,3,4 srdi 4,23,7 xor 5,5,0 srdi 0,20,6 add 22,22,31 xor 3,3,4 xor 5,5,0 ld 0,48(7) add 22,22,3 add 22,22,5 rotrdi 3,14,14 rotrdi 4,14,18 and 5,15,14 xor 3,3,4 add 9,9,0 andc 0,8,14 rotrdi 4,4,23 or 5,5,0 add 9,9,22 xor 3,3,4 add 9,9,5 add 9,9,3 rotrdi 3,10,28 rotrdi 4,10,34 and 5,10,11 and 0,10,12 xor 3,3,4 rotrdi 4,4,5 xor 5,5,0 and 0,11,12 xor 3,3,4 add 6,6,9 xor 5,5,0 add 9,9,3 add 9,9,5 rotrdi 3,24,1 rotrdi 4,24,8 rotrdi 5,21,19 rotrdi 0,21,61 xor 3,3,4 srdi 4,24,7 xor 5,5,0 srdi 0,21,6 add 23,23,16 xor 3,3,4 xor 5,5,0 ld 0,56(7) add 23,23,3 add 23,23,5 rotrdi 3,6,14 rotrdi 4,6,18 and 5,14,6 xor 3,3,4 add 8,8,0 andc 0,15,6 rotrdi 4,4,23 or 5,5,0 add 8,8,23 xor 3,3,4 add 8,8,5 add 8,8,3 rotrdi 3,9,28 rotrdi 4,9,34 and 5,9,10 and 0,9,11 xor 3,3,4 rotrdi 4,4,5 xor 5,5,0 and 0,10,11 xor 3,3,4 add 12,12,8 xor 5,5,0 add 8,8,3 add 8,8,5 rotrdi 3,25,1 rotrdi 4,25,8 rotrdi 5,22,19 rotrdi 0,22,61 xor 3,3,4 srdi 4,25,7 xor 5,5,0 srdi 0,22,6 add 24,24,17 xor 3,3,4 xor 5,5,0 ld 0,64(7) add 24,24,3 add 24,24,5 rotrdi 3,12,14 rotrdi 4,12,18 and 5,6,12 xor 3,3,4 add 15,15,0 andc 0,14,12 rotrdi 4,4,23 or 5,5,0 add 15,15,24 xor 3,3,4 add 15,15,5 add 15,15,3 rotrdi 3,8,28 rotrdi 4,8,34 and 5,8,9 and 0,8,10 xor 3,3,4 rotrdi 4,4,5 xor 5,5,0 and 0,9,10 xor 3,3,4 add 11,11,15 xor 5,5,0 add 15,15,3 add 15,15,5 rotrdi 3,26,1 rotrdi 4,26,8 rotrdi 5,23,19 rotrdi 0,23,61 xor 3,3,4 srdi 4,26,7 xor 5,5,0 srdi 0,23,6 add 25,25,18 xor 3,3,4 xor 5,5,0 ld 0,72(7) add 25,25,3 add 25,25,5 rotrdi 3,11,14 rotrdi 4,11,18 and 5,12,11 xor 3,3,4 add 14,14,0 andc 0,6,11 rotrdi 4,4,23 or 5,5,0 add 14,14,25 xor 3,3,4 add 14,14,5 add 14,14,3 rotrdi 3,15,28 rotrdi 4,15,34 and 5,15,8 and 0,15,9 xor 3,3,4 rotrdi 4,4,5 xor 5,5,0 and 0,8,9 xor 3,3,4 add 10,10,14 xor 5,5,0 add 14,14,3 add 14,14,5 rotrdi 3,27,1 rotrdi 4,27,8 rotrdi 5,24,19 rotrdi 0,24,61 xor 3,3,4 srdi 4,27,7 xor 5,5,0 srdi 0,24,6 add 26,26,19 xor 3,3,4 xor 5,5,0 ld 0,80(7) add 26,26,3 add 26,26,5 rotrdi 3,10,14 rotrdi 4,10,18 and 5,11,10 xor 3,3,4 add 6,6,0 andc 0,12,10 rotrdi 4,4,23 or 5,5,0 add 6,6,26 xor 3,3,4 add 6,6,5 add 6,6,3 rotrdi 3,14,28 rotrdi 4,14,34 and 5,14,15 and 0,14,8 xor 3,3,4 rotrdi 4,4,5 xor 5,5,0 and 0,15,8 xor 3,3,4 add 9,9,6 xor 5,5,0 add 6,6,3 add 6,6,5 rotrdi 3,28,1 rotrdi 4,28,8 rotrdi 5,25,19 rotrdi 0,25,61 xor 3,3,4 srdi 4,28,7 xor 5,5,0 srdi 0,25,6 add 27,27,20 xor 3,3,4 xor 5,5,0 ld 0,88(7) add 27,27,3 add 27,27,5 rotrdi 3,9,14 rotrdi 4,9,18 and 5,10,9 xor 3,3,4 add 12,12,0 andc 0,11,9 rotrdi 4,4,23 or 5,5,0 add 12,12,27 xor 3,3,4 add 12,12,5 add 12,12,3 rotrdi 3,6,28 rotrdi 4,6,34 and 5,6,14 and 0,6,15 xor 3,3,4 rotrdi 4,4,5 xor 5,5,0 and 0,14,15 xor 3,3,4 add 8,8,12 xor 5,5,0 add 12,12,3 add 12,12,5 rotrdi 3,29,1 rotrdi 4,29,8 rotrdi 5,26,19 rotrdi 0,26,61 xor 3,3,4 srdi 4,29,7 xor 5,5,0 srdi 0,26,6 add 28,28,21 xor 3,3,4 xor 5,5,0 ld 0,96(7) add 28,28,3 add 28,28,5 rotrdi 3,8,14 rotrdi 4,8,18 and 5,9,8 xor 3,3,4 add 11,11,0 andc 0,10,8 rotrdi 4,4,23 or 5,5,0 add 11,11,28 xor 3,3,4 add 11,11,5 add 11,11,3 rotrdi 3,12,28 rotrdi 4,12,34 and 5,12,6 and 0,12,14 xor 3,3,4 rotrdi 4,4,5 xor 5,5,0 and 0,6,14 xor 3,3,4 add 15,15,11 xor 5,5,0 add 11,11,3 add 11,11,5 rotrdi 3,30,1 rotrdi 4,30,8 rotrdi 5,27,19 rotrdi 0,27,61 xor 3,3,4 srdi 4,30,7 xor 5,5,0 srdi 0,27,6 add 29,29,22 xor 3,3,4 xor 5,5,0 ld 0,104(7) add 29,29,3 add 29,29,5 rotrdi 3,15,14 rotrdi 4,15,18 and 5,8,15 xor 3,3,4 add 10,10,0 andc 0,9,15 rotrdi 4,4,23 or 5,5,0 add 10,10,29 xor 3,3,4 add 10,10,5 add 10,10,3 rotrdi 3,11,28 rotrdi 4,11,34 and 5,11,12 and 0,11,6 xor 3,3,4 rotrdi 4,4,5 xor 5,5,0 and 0,12,6 xor 3,3,4 add 14,14,10 xor 5,5,0 add 10,10,3 add 10,10,5 rotrdi 3,31,1 rotrdi 4,31,8 rotrdi 5,28,19 rotrdi 0,28,61 xor 3,3,4 srdi 4,31,7 xor 5,5,0 srdi 0,28,6 add 30,30,23 xor 3,3,4 xor 5,5,0 ld 0,112(7) add 30,30,3 add 30,30,5 rotrdi 3,14,14 rotrdi 4,14,18 and 5,15,14 xor 3,3,4 add 9,9,0 andc 0,8,14 rotrdi 4,4,23 or 5,5,0 add 9,9,30 xor 3,3,4 add 9,9,5 add 9,9,3 rotrdi 3,10,28 rotrdi 4,10,34 and 5,10,11 and 0,10,12 xor 3,3,4 rotrdi 4,4,5 xor 5,5,0 and 0,11,12 xor 3,3,4 add 6,6,9 xor 5,5,0 add 9,9,3 add 9,9,5 rotrdi 3,16,1 rotrdi 4,16,8 rotrdi 5,29,19 rotrdi 0,29,61 xor 3,3,4 srdi 4,16,7 xor 5,5,0 srdi 0,29,6 add 31,31,24 xor 3,3,4 xor 5,5,0 ld 0,120(7) add 31,31,3 add 31,31,5 rotrdi 3,6,14 rotrdi 4,6,18 and 5,14,6 xor 3,3,4 add 8,8,0 andc 0,15,6 rotrdi 4,4,23 or 5,5,0 add 8,8,31 xor 3,3,4 add 8,8,5 add 8,8,3 rotrdi 3,9,28 rotrdi 4,9,34 and 5,9,10 and 0,9,11 xor 3,3,4 rotrdi 4,4,5 xor 5,5,0 and 0,10,11 xor 3,3,4 add 12,12,8 xor 5,5,0 add 8,8,3 add 8,8,5 bdnz .Lrounds ld 3,208(1) ld 31,200(1) ld 5,192(1) subi 7,7,512 ld 16,0(3) ld 17,8(3) ld 18,16(3) ld 19,24(3) ld 20,32(3) ld 21,40(3) ld 22,48(3) addi 31,31,128 ld 23,56(3) add 8,8,16 add 9,9,17 std 31,200(1) add 10,10,18 std 8,0(3) add 11,11,19 std 9,8(3) add 12,12,20 std 10,16(3) add 6,6,21 std 11,24(3) add 14,14,22 std 12,32(3) add 15,15,23 std 6,40(3) std 14,48(3) cmpld 31,5 std 15,56(3) bne .Lsha2_block_private blr .long 0 .byte 0,12,0x14,0,0,0,0,0 .size zfs_sha512_ppc,.-zfs_sha512_ppc .align 6 .LPICmeup: mflr 0 bcl 20,31,$+4 mflr 7 addi 7,7,56 mtlr 0 blr .long 0 .byte 0,12,0x14,0,0,0,0,0 .space 28 .long 0xd728ae22,0x428a2f98 .long 0x23ef65cd,0x71374491 .long 0xec4d3b2f,0xb5c0fbcf .long 0x8189dbbc,0xe9b5dba5 .long 0xf348b538,0x3956c25b .long 0xb605d019,0x59f111f1 .long 0xaf194f9b,0x923f82a4 .long 0xda6d8118,0xab1c5ed5 .long 0xa3030242,0xd807aa98 .long 0x45706fbe,0x12835b01 .long 0x4ee4b28c,0x243185be .long 0xd5ffb4e2,0x550c7dc3 .long 0xf27b896f,0x72be5d74 .long 0x3b1696b1,0x80deb1fe .long 0x25c71235,0x9bdc06a7 .long 0xcf692694,0xc19bf174 .long 0x9ef14ad2,0xe49b69c1 .long 0x384f25e3,0xefbe4786 .long 0x8b8cd5b5,0x0fc19dc6 .long 0x77ac9c65,0x240ca1cc .long 0x592b0275,0x2de92c6f .long 0x6ea6e483,0x4a7484aa .long 0xbd41fbd4,0x5cb0a9dc .long 0x831153b5,0x76f988da .long 0xee66dfab,0x983e5152 .long 0x2db43210,0xa831c66d .long 0x98fb213f,0xb00327c8 .long 0xbeef0ee4,0xbf597fc7 .long 0x3da88fc2,0xc6e00bf3 .long 0x930aa725,0xd5a79147 .long 0xe003826f,0x06ca6351 .long 0x0a0e6e70,0x14292967 .long 0x46d22ffc,0x27b70a85 .long 0x5c26c926,0x2e1b2138 .long 0x5ac42aed,0x4d2c6dfc .long 0x9d95b3df,0x53380d13 .long 0x8baf63de,0x650a7354 .long 0x3c77b2a8,0x766a0abb .long 0x47edaee6,0x81c2c92e .long 0x1482353b,0x92722c85 .long 0x4cf10364,0xa2bfe8a1 .long 0xbc423001,0xa81a664b .long 0xd0f89791,0xc24b8b70 .long 0x0654be30,0xc76c51a3 .long 0xd6ef5218,0xd192e819 .long 0x5565a910,0xd6990624 .long 0x5771202a,0xf40e3585 .long 0x32bbd1b8,0x106aa070 .long 0xb8d2d0c8,0x19a4c116 .long 0x5141ab53,0x1e376c08 .long 0xdf8eeb99,0x2748774c .long 0xe19b48a8,0x34b0bcb5 .long 0xc5c95a63,0x391c0cb3 .long 0xe3418acb,0x4ed8aa4a .long 0x7763e373,0x5b9cca4f .long 0xd6b2b8a3,0x682e6ff3 .long 0x5defb2fc,0x748f82ee .long 0x43172f60,0x78a5636f .long 0xa1f0ab72,0x84c87814 .long 0x1a6439ec,0x8cc70208 .long 0x23631e28,0x90befffa .long 0xde82bde9,0xa4506ceb .long 0xb2c67915,0xbef9a3f7 .long 0xe372532b,0xc67178f2 .long 0xea26619c,0xca273ece .long 0x21c0c207,0xd186b8c7 .long 0xcde0eb1e,0xeada7dd6 .long 0xee6ed178,0xf57d4f7f .long 0x72176fba,0x06f067aa .long 0xa2c898a6,0x0a637dc5 .long 0xbef90dae,0x113f9804 .long 0x131c471b,0x1b710b35 .long 0x23047d84,0x28db77f5 .long 0x40c72493,0x32caab7b .long 0x15c9bebc,0x3c9ebe0a .long 0x9c100d4c,0x431d67c4 .long 0xcb3e42b6,0x4cc5d4be .long 0xfc657e2a,0x597f299c .long 0x3ad6faec,0x5fcb6fab .long 0x4a475817,0x6c44198c #endif