From e3ec2bf19078821614bef73c46e3d411f27a0ddb Mon Sep 17 00:00:00 2001 From: christos Date: Tue, 13 May 2008 15:35:40 +0000 Subject: [PATCH] Add ppc bits; untested --- lib/libcrypto/arch/powerpc/Makefile | 16 + lib/libcrypto/arch/powerpc/aes-ppc.S | 1385 +++++++++++++++++ lib/libcrypto/arch/powerpc/bn.inc | 3 + lib/libcrypto/arch/powerpc/ppc-mont.S | 213 +++ lib/libcrypto/arch/powerpc/ppc.S | 1826 +++++++++++++++++++++++ lib/libcrypto/arch/powerpc/ppccpuid.S | 71 + lib/libcrypto/arch/powerpc/sha1-ppc.S | 1102 ++++++++++++++ lib/libcrypto/arch/powerpc/sha512-ppc.S | 1319 ++++++++++++++++ 8 files changed, 5935 insertions(+) create mode 100644 lib/libcrypto/arch/powerpc/Makefile create mode 100644 lib/libcrypto/arch/powerpc/aes-ppc.S create mode 100644 lib/libcrypto/arch/powerpc/bn.inc create mode 100644 lib/libcrypto/arch/powerpc/ppc-mont.S create mode 100644 lib/libcrypto/arch/powerpc/ppc.S create mode 100644 lib/libcrypto/arch/powerpc/ppccpuid.S create mode 100644 lib/libcrypto/arch/powerpc/sha1-ppc.S create mode 100644 lib/libcrypto/arch/powerpc/sha512-ppc.S diff --git a/lib/libcrypto/arch/powerpc/Makefile b/lib/libcrypto/arch/powerpc/Makefile new file mode 100644 index 000000000000..9fc2a773e49b --- /dev/null +++ b/lib/libcrypto/arch/powerpc/Makefile @@ -0,0 +1,16 @@ +# $NetBSD: Makefile,v 1.1 2008/05/13 15:35:40 christos Exp $ + +.include "bsd.own.mk" + +CRYPTODIST=${NETBSDSRCDIR}/crypto/dist +.include "${NETBSDSRCDIR}/crypto/Makefile.openssl" +XLATE=${OPENSSLSRC}/crypto/perlasm/ppc-xlate.pl + +regen: + for i in $$(find ${OPENSSLSRC} -name \*ppc\*.pl); do \ + case $$i in \ + *xlate.pl) ;; \ + *64*) ;; \ + *) perl $$i 32 | perl ${XLATE} linux32 > $$(basename $$i .pl).S ;; \ + esac; \ + done diff --git a/lib/libcrypto/arch/powerpc/aes-ppc.S b/lib/libcrypto/arch/powerpc/aes-ppc.S new file mode 100644 index 000000000000..43fe3512010a --- /dev/null +++ b/lib/libcrypto/arch/powerpc/aes-ppc.S @@ -0,0 +1,1385 @@ +.text + +.align 7 +.LAES_Te: + mflr 0 + bcl 20,31,$+4 + mflr 3 + addi 3,3,120 + mtlr 0 + blr +.space 8 +.LAES_Td: + mflr 0 + bcl 20,31,$+4 + mflr 3 + addi 3,3,2392 + mtlr 0 + blr +.space 72 +.long 0xc66363a5,0xc66363a5 +.long 0xf87c7c84,0xf87c7c84 +.long 0xee777799,0xee777799 +.long 0xf67b7b8d,0xf67b7b8d +.long 0xfff2f20d,0xfff2f20d +.long 0xd66b6bbd,0xd66b6bbd +.long 0xde6f6fb1,0xde6f6fb1 +.long 0x91c5c554,0x91c5c554 +.long 0x60303050,0x60303050 +.long 0x02010103,0x02010103 +.long 0xce6767a9,0xce6767a9 +.long 0x562b2b7d,0x562b2b7d +.long 0xe7fefe19,0xe7fefe19 +.long 0xb5d7d762,0xb5d7d762 +.long 0x4dababe6,0x4dababe6 +.long 0xec76769a,0xec76769a +.long 0x8fcaca45,0x8fcaca45 +.long 0x1f82829d,0x1f82829d +.long 0x89c9c940,0x89c9c940 +.long 0xfa7d7d87,0xfa7d7d87 +.long 0xeffafa15,0xeffafa15 +.long 0xb25959eb,0xb25959eb +.long 0x8e4747c9,0x8e4747c9 +.long 0xfbf0f00b,0xfbf0f00b +.long 0x41adadec,0x41adadec +.long 0xb3d4d467,0xb3d4d467 +.long 0x5fa2a2fd,0x5fa2a2fd +.long 0x45afafea,0x45afafea +.long 0x239c9cbf,0x239c9cbf +.long 0x53a4a4f7,0x53a4a4f7 +.long 0xe4727296,0xe4727296 +.long 0x9bc0c05b,0x9bc0c05b +.long 0x75b7b7c2,0x75b7b7c2 +.long 0xe1fdfd1c,0xe1fdfd1c +.long 0x3d9393ae,0x3d9393ae +.long 0x4c26266a,0x4c26266a +.long 0x6c36365a,0x6c36365a +.long 0x7e3f3f41,0x7e3f3f41 +.long 0xf5f7f702,0xf5f7f702 +.long 0x83cccc4f,0x83cccc4f +.long 0x6834345c,0x6834345c +.long 0x51a5a5f4,0x51a5a5f4 +.long 0xd1e5e534,0xd1e5e534 +.long 0xf9f1f108,0xf9f1f108 +.long 0xe2717193,0xe2717193 +.long 0xabd8d873,0xabd8d873 +.long 0x62313153,0x62313153 +.long 0x2a15153f,0x2a15153f +.long 0x0804040c,0x0804040c +.long 0x95c7c752,0x95c7c752 +.long 0x46232365,0x46232365 +.long 0x9dc3c35e,0x9dc3c35e +.long 0x30181828,0x30181828 +.long 0x379696a1,0x379696a1 +.long 0x0a05050f,0x0a05050f +.long 0x2f9a9ab5,0x2f9a9ab5 +.long 0x0e070709,0x0e070709 +.long 0x24121236,0x24121236 +.long 0x1b80809b,0x1b80809b +.long 0xdfe2e23d,0xdfe2e23d +.long 0xcdebeb26,0xcdebeb26 +.long 0x4e272769,0x4e272769 +.long 0x7fb2b2cd,0x7fb2b2cd +.long 0xea75759f,0xea75759f +.long 0x1209091b,0x1209091b +.long 0x1d83839e,0x1d83839e +.long 0x582c2c74,0x582c2c74 +.long 0x341a1a2e,0x341a1a2e +.long 0x361b1b2d,0x361b1b2d +.long 0xdc6e6eb2,0xdc6e6eb2 +.long 0xb45a5aee,0xb45a5aee +.long 0x5ba0a0fb,0x5ba0a0fb +.long 0xa45252f6,0xa45252f6 +.long 0x763b3b4d,0x763b3b4d +.long 0xb7d6d661,0xb7d6d661 +.long 0x7db3b3ce,0x7db3b3ce +.long 0x5229297b,0x5229297b +.long 0xdde3e33e,0xdde3e33e +.long 0x5e2f2f71,0x5e2f2f71 +.long 0x13848497,0x13848497 +.long 0xa65353f5,0xa65353f5 +.long 0xb9d1d168,0xb9d1d168 +.long 0x00000000,0x00000000 +.long 0xc1eded2c,0xc1eded2c +.long 0x40202060,0x40202060 +.long 0xe3fcfc1f,0xe3fcfc1f +.long 0x79b1b1c8,0x79b1b1c8 +.long 0xb65b5bed,0xb65b5bed +.long 0xd46a6abe,0xd46a6abe +.long 0x8dcbcb46,0x8dcbcb46 +.long 0x67bebed9,0x67bebed9 +.long 0x7239394b,0x7239394b +.long 0x944a4ade,0x944a4ade +.long 0x984c4cd4,0x984c4cd4 +.long 0xb05858e8,0xb05858e8 +.long 0x85cfcf4a,0x85cfcf4a +.long 0xbbd0d06b,0xbbd0d06b +.long 0xc5efef2a,0xc5efef2a +.long 0x4faaaae5,0x4faaaae5 +.long 0xedfbfb16,0xedfbfb16 +.long 0x864343c5,0x864343c5 +.long 0x9a4d4dd7,0x9a4d4dd7 +.long 0x66333355,0x66333355 +.long 0x11858594,0x11858594 +.long 0x8a4545cf,0x8a4545cf +.long 0xe9f9f910,0xe9f9f910 +.long 0x04020206,0x04020206 +.long 0xfe7f7f81,0xfe7f7f81 +.long 0xa05050f0,0xa05050f0 +.long 0x783c3c44,0x783c3c44 +.long 0x259f9fba,0x259f9fba +.long 0x4ba8a8e3,0x4ba8a8e3 +.long 0xa25151f3,0xa25151f3 +.long 0x5da3a3fe,0x5da3a3fe +.long 0x804040c0,0x804040c0 +.long 0x058f8f8a,0x058f8f8a +.long 0x3f9292ad,0x3f9292ad +.long 0x219d9dbc,0x219d9dbc +.long 0x70383848,0x70383848 +.long 0xf1f5f504,0xf1f5f504 +.long 0x63bcbcdf,0x63bcbcdf +.long 0x77b6b6c1,0x77b6b6c1 +.long 0xafdada75,0xafdada75 +.long 0x42212163,0x42212163 +.long 0x20101030,0x20101030 +.long 0xe5ffff1a,0xe5ffff1a +.long 0xfdf3f30e,0xfdf3f30e +.long 0xbfd2d26d,0xbfd2d26d +.long 0x81cdcd4c,0x81cdcd4c +.long 0x180c0c14,0x180c0c14 +.long 0x26131335,0x26131335 +.long 0xc3ecec2f,0xc3ecec2f +.long 0xbe5f5fe1,0xbe5f5fe1 +.long 0x359797a2,0x359797a2 +.long 0x884444cc,0x884444cc +.long 0x2e171739,0x2e171739 +.long 0x93c4c457,0x93c4c457 +.long 0x55a7a7f2,0x55a7a7f2 +.long 0xfc7e7e82,0xfc7e7e82 +.long 0x7a3d3d47,0x7a3d3d47 +.long 0xc86464ac,0xc86464ac +.long 0xba5d5de7,0xba5d5de7 +.long 0x3219192b,0x3219192b +.long 0xe6737395,0xe6737395 +.long 0xc06060a0,0xc06060a0 +.long 0x19818198,0x19818198 +.long 0x9e4f4fd1,0x9e4f4fd1 +.long 0xa3dcdc7f,0xa3dcdc7f +.long 0x44222266,0x44222266 +.long 0x542a2a7e,0x542a2a7e +.long 0x3b9090ab,0x3b9090ab +.long 0x0b888883,0x0b888883 +.long 0x8c4646ca,0x8c4646ca +.long 0xc7eeee29,0xc7eeee29 +.long 0x6bb8b8d3,0x6bb8b8d3 +.long 0x2814143c,0x2814143c +.long 0xa7dede79,0xa7dede79 +.long 0xbc5e5ee2,0xbc5e5ee2 +.long 0x160b0b1d,0x160b0b1d +.long 0xaddbdb76,0xaddbdb76 +.long 0xdbe0e03b,0xdbe0e03b +.long 0x64323256,0x64323256 +.long 0x743a3a4e,0x743a3a4e +.long 0x140a0a1e,0x140a0a1e +.long 0x924949db,0x924949db +.long 0x0c06060a,0x0c06060a +.long 0x4824246c,0x4824246c +.long 0xb85c5ce4,0xb85c5ce4 +.long 0x9fc2c25d,0x9fc2c25d +.long 0xbdd3d36e,0xbdd3d36e +.long 0x43acacef,0x43acacef +.long 0xc46262a6,0xc46262a6 +.long 0x399191a8,0x399191a8 +.long 0x319595a4,0x319595a4 +.long 0xd3e4e437,0xd3e4e437 +.long 0xf279798b,0xf279798b +.long 0xd5e7e732,0xd5e7e732 +.long 0x8bc8c843,0x8bc8c843 +.long 0x6e373759,0x6e373759 +.long 0xda6d6db7,0xda6d6db7 +.long 0x018d8d8c,0x018d8d8c +.long 0xb1d5d564,0xb1d5d564 +.long 0x9c4e4ed2,0x9c4e4ed2 +.long 0x49a9a9e0,0x49a9a9e0 +.long 0xd86c6cb4,0xd86c6cb4 +.long 0xac5656fa,0xac5656fa +.long 0xf3f4f407,0xf3f4f407 +.long 0xcfeaea25,0xcfeaea25 +.long 0xca6565af,0xca6565af +.long 0xf47a7a8e,0xf47a7a8e +.long 0x47aeaee9,0x47aeaee9 +.long 0x10080818,0x10080818 +.long 0x6fbabad5,0x6fbabad5 +.long 0xf0787888,0xf0787888 +.long 0x4a25256f,0x4a25256f +.long 0x5c2e2e72,0x5c2e2e72 +.long 0x381c1c24,0x381c1c24 +.long 0x57a6a6f1,0x57a6a6f1 +.long 0x73b4b4c7,0x73b4b4c7 +.long 0x97c6c651,0x97c6c651 +.long 0xcbe8e823,0xcbe8e823 +.long 0xa1dddd7c,0xa1dddd7c +.long 0xe874749c,0xe874749c +.long 0x3e1f1f21,0x3e1f1f21 +.long 0x964b4bdd,0x964b4bdd +.long 0x61bdbddc,0x61bdbddc +.long 0x0d8b8b86,0x0d8b8b86 +.long 0x0f8a8a85,0x0f8a8a85 +.long 0xe0707090,0xe0707090 +.long 0x7c3e3e42,0x7c3e3e42 +.long 0x71b5b5c4,0x71b5b5c4 +.long 0xcc6666aa,0xcc6666aa +.long 0x904848d8,0x904848d8 +.long 0x06030305,0x06030305 +.long 0xf7f6f601,0xf7f6f601 +.long 0x1c0e0e12,0x1c0e0e12 +.long 0xc26161a3,0xc26161a3 +.long 0x6a35355f,0x6a35355f +.long 0xae5757f9,0xae5757f9 +.long 0x69b9b9d0,0x69b9b9d0 +.long 0x17868691,0x17868691 +.long 0x99c1c158,0x99c1c158 +.long 0x3a1d1d27,0x3a1d1d27 +.long 0x279e9eb9,0x279e9eb9 +.long 0xd9e1e138,0xd9e1e138 +.long 0xebf8f813,0xebf8f813 +.long 0x2b9898b3,0x2b9898b3 +.long 0x22111133,0x22111133 +.long 0xd26969bb,0xd26969bb +.long 0xa9d9d970,0xa9d9d970 +.long 0x078e8e89,0x078e8e89 +.long 0x339494a7,0x339494a7 +.long 0x2d9b9bb6,0x2d9b9bb6 +.long 0x3c1e1e22,0x3c1e1e22 +.long 0x15878792,0x15878792 +.long 0xc9e9e920,0xc9e9e920 +.long 0x87cece49,0x87cece49 +.long 0xaa5555ff,0xaa5555ff +.long 0x50282878,0x50282878 +.long 0xa5dfdf7a,0xa5dfdf7a +.long 0x038c8c8f,0x038c8c8f +.long 0x59a1a1f8,0x59a1a1f8 +.long 0x09898980,0x09898980 +.long 0x1a0d0d17,0x1a0d0d17 +.long 0x65bfbfda,0x65bfbfda +.long 0xd7e6e631,0xd7e6e631 +.long 0x844242c6,0x844242c6 +.long 0xd06868b8,0xd06868b8 +.long 0x824141c3,0x824141c3 +.long 0x299999b0,0x299999b0 +.long 0x5a2d2d77,0x5a2d2d77 +.long 0x1e0f0f11,0x1e0f0f11 +.long 0x7bb0b0cb,0x7bb0b0cb +.long 0xa85454fc,0xa85454fc +.long 0x6dbbbbd6,0x6dbbbbd6 +.long 0x2c16163a,0x2c16163a +.byte 0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5 +.byte 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76 +.byte 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0 +.byte 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0 +.byte 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc +.byte 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15 +.byte 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a +.byte 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75 +.byte 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0 +.byte 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84 +.byte 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b +.byte 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf +.byte 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85 +.byte 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8 +.byte 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5 +.byte 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2 +.byte 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17 +.byte 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73 +.byte 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88 +.byte 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb +.byte 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c +.byte 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79 +.byte 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9 +.byte 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08 +.byte 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6 +.byte 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a +.byte 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e +.byte 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e +.byte 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94 +.byte 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf +.byte 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68 +.byte 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16 +.long 0x51f4a750,0x51f4a750 +.long 0x7e416553,0x7e416553 +.long 0x1a17a4c3,0x1a17a4c3 +.long 0x3a275e96,0x3a275e96 +.long 0x3bab6bcb,0x3bab6bcb +.long 0x1f9d45f1,0x1f9d45f1 +.long 0xacfa58ab,0xacfa58ab +.long 0x4be30393,0x4be30393 +.long 0x2030fa55,0x2030fa55 +.long 0xad766df6,0xad766df6 +.long 0x88cc7691,0x88cc7691 +.long 0xf5024c25,0xf5024c25 +.long 0x4fe5d7fc,0x4fe5d7fc +.long 0xc52acbd7,0xc52acbd7 +.long 0x26354480,0x26354480 +.long 0xb562a38f,0xb562a38f +.long 0xdeb15a49,0xdeb15a49 +.long 0x25ba1b67,0x25ba1b67 +.long 0x45ea0e98,0x45ea0e98 +.long 0x5dfec0e1,0x5dfec0e1 +.long 0xc32f7502,0xc32f7502 +.long 0x814cf012,0x814cf012 +.long 0x8d4697a3,0x8d4697a3 +.long 0x6bd3f9c6,0x6bd3f9c6 +.long 0x038f5fe7,0x038f5fe7 +.long 0x15929c95,0x15929c95 +.long 0xbf6d7aeb,0xbf6d7aeb +.long 0x955259da,0x955259da +.long 0xd4be832d,0xd4be832d +.long 0x587421d3,0x587421d3 +.long 0x49e06929,0x49e06929 +.long 0x8ec9c844,0x8ec9c844 +.long 0x75c2896a,0x75c2896a +.long 0xf48e7978,0xf48e7978 +.long 0x99583e6b,0x99583e6b +.long 0x27b971dd,0x27b971dd +.long 0xbee14fb6,0xbee14fb6 +.long 0xf088ad17,0xf088ad17 +.long 0xc920ac66,0xc920ac66 +.long 0x7dce3ab4,0x7dce3ab4 +.long 0x63df4a18,0x63df4a18 +.long 0xe51a3182,0xe51a3182 +.long 0x97513360,0x97513360 +.long 0x62537f45,0x62537f45 +.long 0xb16477e0,0xb16477e0 +.long 0xbb6bae84,0xbb6bae84 +.long 0xfe81a01c,0xfe81a01c +.long 0xf9082b94,0xf9082b94 +.long 0x70486858,0x70486858 +.long 0x8f45fd19,0x8f45fd19 +.long 0x94de6c87,0x94de6c87 +.long 0x527bf8b7,0x527bf8b7 +.long 0xab73d323,0xab73d323 +.long 0x724b02e2,0x724b02e2 +.long 0xe31f8f57,0xe31f8f57 +.long 0x6655ab2a,0x6655ab2a +.long 0xb2eb2807,0xb2eb2807 +.long 0x2fb5c203,0x2fb5c203 +.long 0x86c57b9a,0x86c57b9a +.long 0xd33708a5,0xd33708a5 +.long 0x302887f2,0x302887f2 +.long 0x23bfa5b2,0x23bfa5b2 +.long 0x02036aba,0x02036aba +.long 0xed16825c,0xed16825c +.long 0x8acf1c2b,0x8acf1c2b +.long 0xa779b492,0xa779b492 +.long 0xf307f2f0,0xf307f2f0 +.long 0x4e69e2a1,0x4e69e2a1 +.long 0x65daf4cd,0x65daf4cd +.long 0x0605bed5,0x0605bed5 +.long 0xd134621f,0xd134621f +.long 0xc4a6fe8a,0xc4a6fe8a +.long 0x342e539d,0x342e539d +.long 0xa2f355a0,0xa2f355a0 +.long 0x058ae132,0x058ae132 +.long 0xa4f6eb75,0xa4f6eb75 +.long 0x0b83ec39,0x0b83ec39 +.long 0x4060efaa,0x4060efaa +.long 0x5e719f06,0x5e719f06 +.long 0xbd6e1051,0xbd6e1051 +.long 0x3e218af9,0x3e218af9 +.long 0x96dd063d,0x96dd063d +.long 0xdd3e05ae,0xdd3e05ae +.long 0x4de6bd46,0x4de6bd46 +.long 0x91548db5,0x91548db5 +.long 0x71c45d05,0x71c45d05 +.long 0x0406d46f,0x0406d46f +.long 0x605015ff,0x605015ff +.long 0x1998fb24,0x1998fb24 +.long 0xd6bde997,0xd6bde997 +.long 0x894043cc,0x894043cc +.long 0x67d99e77,0x67d99e77 +.long 0xb0e842bd,0xb0e842bd +.long 0x07898b88,0x07898b88 +.long 0xe7195b38,0xe7195b38 +.long 0x79c8eedb,0x79c8eedb +.long 0xa17c0a47,0xa17c0a47 +.long 0x7c420fe9,0x7c420fe9 +.long 0xf8841ec9,0xf8841ec9 +.long 0x00000000,0x00000000 +.long 0x09808683,0x09808683 +.long 0x322bed48,0x322bed48 +.long 0x1e1170ac,0x1e1170ac +.long 0x6c5a724e,0x6c5a724e +.long 0xfd0efffb,0xfd0efffb +.long 0x0f853856,0x0f853856 +.long 0x3daed51e,0x3daed51e +.long 0x362d3927,0x362d3927 +.long 0x0a0fd964,0x0a0fd964 +.long 0x685ca621,0x685ca621 +.long 0x9b5b54d1,0x9b5b54d1 +.long 0x24362e3a,0x24362e3a +.long 0x0c0a67b1,0x0c0a67b1 +.long 0x9357e70f,0x9357e70f +.long 0xb4ee96d2,0xb4ee96d2 +.long 0x1b9b919e,0x1b9b919e +.long 0x80c0c54f,0x80c0c54f +.long 0x61dc20a2,0x61dc20a2 +.long 0x5a774b69,0x5a774b69 +.long 0x1c121a16,0x1c121a16 +.long 0xe293ba0a,0xe293ba0a +.long 0xc0a02ae5,0xc0a02ae5 +.long 0x3c22e043,0x3c22e043 +.long 0x121b171d,0x121b171d +.long 0x0e090d0b,0x0e090d0b +.long 0xf28bc7ad,0xf28bc7ad +.long 0x2db6a8b9,0x2db6a8b9 +.long 0x141ea9c8,0x141ea9c8 +.long 0x57f11985,0x57f11985 +.long 0xaf75074c,0xaf75074c +.long 0xee99ddbb,0xee99ddbb +.long 0xa37f60fd,0xa37f60fd +.long 0xf701269f,0xf701269f +.long 0x5c72f5bc,0x5c72f5bc +.long 0x44663bc5,0x44663bc5 +.long 0x5bfb7e34,0x5bfb7e34 +.long 0x8b432976,0x8b432976 +.long 0xcb23c6dc,0xcb23c6dc +.long 0xb6edfc68,0xb6edfc68 +.long 0xb8e4f163,0xb8e4f163 +.long 0xd731dcca,0xd731dcca +.long 0x42638510,0x42638510 +.long 0x13972240,0x13972240 +.long 0x84c61120,0x84c61120 +.long 0x854a247d,0x854a247d +.long 0xd2bb3df8,0xd2bb3df8 +.long 0xaef93211,0xaef93211 +.long 0xc729a16d,0xc729a16d +.long 0x1d9e2f4b,0x1d9e2f4b +.long 0xdcb230f3,0xdcb230f3 +.long 0x0d8652ec,0x0d8652ec +.long 0x77c1e3d0,0x77c1e3d0 +.long 0x2bb3166c,0x2bb3166c +.long 0xa970b999,0xa970b999 +.long 0x119448fa,0x119448fa +.long 0x47e96422,0x47e96422 +.long 0xa8fc8cc4,0xa8fc8cc4 +.long 0xa0f03f1a,0xa0f03f1a +.long 0x567d2cd8,0x567d2cd8 +.long 0x223390ef,0x223390ef +.long 0x87494ec7,0x87494ec7 +.long 0xd938d1c1,0xd938d1c1 +.long 0x8ccaa2fe,0x8ccaa2fe +.long 0x98d40b36,0x98d40b36 +.long 0xa6f581cf,0xa6f581cf +.long 0xa57ade28,0xa57ade28 +.long 0xdab78e26,0xdab78e26 +.long 0x3fadbfa4,0x3fadbfa4 +.long 0x2c3a9de4,0x2c3a9de4 +.long 0x5078920d,0x5078920d +.long 0x6a5fcc9b,0x6a5fcc9b +.long 0x547e4662,0x547e4662 +.long 0xf68d13c2,0xf68d13c2 +.long 0x90d8b8e8,0x90d8b8e8 +.long 0x2e39f75e,0x2e39f75e +.long 0x82c3aff5,0x82c3aff5 +.long 0x9f5d80be,0x9f5d80be +.long 0x69d0937c,0x69d0937c +.long 0x6fd52da9,0x6fd52da9 +.long 0xcf2512b3,0xcf2512b3 +.long 0xc8ac993b,0xc8ac993b +.long 0x10187da7,0x10187da7 +.long 0xe89c636e,0xe89c636e +.long 0xdb3bbb7b,0xdb3bbb7b +.long 0xcd267809,0xcd267809 +.long 0x6e5918f4,0x6e5918f4 +.long 0xec9ab701,0xec9ab701 +.long 0x834f9aa8,0x834f9aa8 +.long 0xe6956e65,0xe6956e65 +.long 0xaaffe67e,0xaaffe67e +.long 0x21bccf08,0x21bccf08 +.long 0xef15e8e6,0xef15e8e6 +.long 0xbae79bd9,0xbae79bd9 +.long 0x4a6f36ce,0x4a6f36ce +.long 0xea9f09d4,0xea9f09d4 +.long 0x29b07cd6,0x29b07cd6 +.long 0x31a4b2af,0x31a4b2af +.long 0x2a3f2331,0x2a3f2331 +.long 0xc6a59430,0xc6a59430 +.long 0x35a266c0,0x35a266c0 +.long 0x744ebc37,0x744ebc37 +.long 0xfc82caa6,0xfc82caa6 +.long 0xe090d0b0,0xe090d0b0 +.long 0x33a7d815,0x33a7d815 +.long 0xf104984a,0xf104984a +.long 0x41ecdaf7,0x41ecdaf7 +.long 0x7fcd500e,0x7fcd500e +.long 0x1791f62f,0x1791f62f +.long 0x764dd68d,0x764dd68d +.long 0x43efb04d,0x43efb04d +.long 0xccaa4d54,0xccaa4d54 +.long 0xe49604df,0xe49604df +.long 0x9ed1b5e3,0x9ed1b5e3 +.long 0x4c6a881b,0x4c6a881b +.long 0xc12c1fb8,0xc12c1fb8 +.long 0x4665517f,0x4665517f +.long 0x9d5eea04,0x9d5eea04 +.long 0x018c355d,0x018c355d +.long 0xfa877473,0xfa877473 +.long 0xfb0b412e,0xfb0b412e +.long 0xb3671d5a,0xb3671d5a +.long 0x92dbd252,0x92dbd252 +.long 0xe9105633,0xe9105633 +.long 0x6dd64713,0x6dd64713 +.long 0x9ad7618c,0x9ad7618c +.long 0x37a10c7a,0x37a10c7a +.long 0x59f8148e,0x59f8148e +.long 0xeb133c89,0xeb133c89 +.long 0xcea927ee,0xcea927ee +.long 0xb761c935,0xb761c935 +.long 0xe11ce5ed,0xe11ce5ed +.long 0x7a47b13c,0x7a47b13c +.long 0x9cd2df59,0x9cd2df59 +.long 0x55f2733f,0x55f2733f +.long 0x1814ce79,0x1814ce79 +.long 0x73c737bf,0x73c737bf +.long 0x53f7cdea,0x53f7cdea +.long 0x5ffdaa5b,0x5ffdaa5b +.long 0xdf3d6f14,0xdf3d6f14 +.long 0x7844db86,0x7844db86 +.long 0xcaaff381,0xcaaff381 +.long 0xb968c43e,0xb968c43e +.long 0x3824342c,0x3824342c +.long 0xc2a3405f,0xc2a3405f +.long 0x161dc372,0x161dc372 +.long 0xbce2250c,0xbce2250c +.long 0x283c498b,0x283c498b +.long 0xff0d9541,0xff0d9541 +.long 0x39a80171,0x39a80171 +.long 0x080cb3de,0x080cb3de +.long 0xd8b4e49c,0xd8b4e49c +.long 0x6456c190,0x6456c190 +.long 0x7bcb8461,0x7bcb8461 +.long 0xd532b670,0xd532b670 +.long 0x486c5c74,0x486c5c74 +.long 0xd0b85742,0xd0b85742 +.byte 0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38 +.byte 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb +.byte 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87 +.byte 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb +.byte 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d +.byte 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e +.byte 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2 +.byte 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25 +.byte 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16 +.byte 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92 +.byte 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda +.byte 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84 +.byte 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a +.byte 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06 +.byte 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02 +.byte 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b +.byte 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea +.byte 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73 +.byte 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85 +.byte 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e +.byte 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89 +.byte 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b +.byte 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20 +.byte 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4 +.byte 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31 +.byte 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f +.byte 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d +.byte 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef +.byte 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0 +.byte 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61 +.byte 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26 +.byte 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d + + +.globl AES_encrypt +.type AES_encrypt,@function +.align 7 +AES_encrypt: + mflr 0 + stwu 1,-128(1) + + stw 0,44(1) + stw 2,48(1) + stw 13,52(1) + stw 14,56(1) + stw 15,60(1) + stw 16,64(1) + stw 17,68(1) + stw 18,72(1) + stw 19,76(1) + stw 20,80(1) + stw 21,84(1) + stw 22,88(1) + stw 23,92(1) + stw 24,96(1) + stw 25,100(1) + stw 26,104(1) + stw 27,108(1) + stw 28,112(1) + stw 29,116(1) + stw 30,120(1) + stw 31,124(1) + + lwz 8,0(3) + lwz 9,4(3) + lwz 10,8(3) + lwz 11,12(3) + bl .LAES_Te + bl .Lppc_AES_encrypt_compact + stw 8,0(4) + stw 9,4(4) + stw 10,8(4) + stw 11,12(4) + + lwz 0,44(1) + lwz 2,48(1) + lwz 13,52(1) + lwz 14,56(1) + lwz 15,60(1) + lwz 16,64(1) + lwz 17,68(1) + lwz 18,72(1) + lwz 19,76(1) + lwz 20,80(1) + lwz 21,84(1) + lwz 22,88(1) + lwz 23,92(1) + lwz 24,96(1) + lwz 25,100(1) + lwz 26,104(1) + lwz 27,108(1) + lwz 28,112(1) + lwz 29,116(1) + lwz 30,120(1) + lwz 31,124(1) + mtlr 0 + addi 1,1,128 + blr + +.align 4 +.Lppc_AES_encrypt: + lwz 16,240(5) + lwz 0,0(5) + lwz 13,4(5) + lwz 14,8(5) + lwz 15,12(5) + addi 6,3,3 + addi 7,3,2 + addi 12,3,1 + addi 16,16,-1 + addi 5,5,16 + xor 8,8,0 + xor 9,9,13 + xor 10,10,14 + xor 11,11,15 + mtctr 16 +.align 4 +.Lenc_loop: + rlwinm 16,8,11,21,28 + rlwinm 17,9,11,21,28 + lwz 0,0(5) + lwz 13,4(5) + rlwinm 18,10,11,21,28 + rlwinm 19,11,11,21,28 + lwz 14,8(5) + lwz 15,12(5) + rlwinm 20,9,19,21,28 + rlwinm 21,10,19,21,28 + lwzx 16,3,16 + lwzx 17,3,17 + rlwinm 22,11,19,21,28 + rlwinm 23,8,19,21,28 + lwzx 18,3,18 + lwzx 19,3,19 + rlwinm 24,10,27,21,28 + rlwinm 25,11,27,21,28 + lwzx 20,6,20 + lwzx 21,6,21 + rlwinm 26,8,27,21,28 + rlwinm 27,9,27,21,28 + lwzx 22,6,22 + lwzx 23,6,23 + rlwinm 28,11,3,21,28 + rlwinm 29,8,3,21,28 + lwzx 24,7,24 + lwzx 25,7,25 + rlwinm 30,9,3,21,28 + rlwinm 31,10,3,21,28 + lwzx 26,7,26 + lwzx 27,7,27 + xor 0,0,16 + xor 13,13,17 + lwzx 28,12,28 + lwzx 29,12,29 + xor 14,14,18 + xor 15,15,19 + lwzx 30,12,30 + lwzx 31,12,31 + xor 0,0,20 + xor 13,13,21 + xor 14,14,22 + xor 15,15,23 + xor 0,0,24 + xor 13,13,25 + xor 14,14,26 + xor 15,15,27 + xor 8,0,28 + xor 9,13,29 + xor 10,14,30 + xor 11,15,31 + addi 5,5,16 + bc 25,0,.Lenc_loop + + addi 7,3,2048 + nop + lwz 24,2048(3) + lwz 25,2080(3) + lwz 26,2112(3) + lwz 27,2144(3) + lwz 24,2176(3) + lwz 25,2208(3) + lwz 26,2240(3) + lwz 27,2272(3) + rlwinm 16,8,8,24,31 + rlwinm 17,9,8,24,31 + lwz 0,0(5) + lwz 13,4(5) + rlwinm 18,10,8,24,31 + rlwinm 19,11,8,24,31 + lwz 14,8(5) + lwz 15,12(5) + rlwinm 20,9,16,24,31 + rlwinm 21,10,16,24,31 + lbzx 16,7,16 + lbzx 17,7,17 + rlwinm 22,11,16,24,31 + rlwinm 23,8,16,24,31 + lbzx 18,7,18 + lbzx 19,7,19 + rlwinm 24,10,24,24,31 + rlwinm 25,11,24,24,31 + lbzx 20,7,20 + lbzx 21,7,21 + rlwinm 26,8,24,24,31 + rlwinm 27,9,24,24,31 + lbzx 22,7,22 + lbzx 23,7,23 + rlwinm 28,11,0,24,31 + rlwinm 29,8,0,24,31 + lbzx 24,7,24 + lbzx 25,7,25 + rlwinm 30,9,0,24,31 + rlwinm 31,10,0,24,31 + lbzx 26,7,26 + lbzx 27,7,27 + rlwinm 8,16,24,0,7 + rlwinm 9,17,24,0,7 + lbzx 28,7,28 + lbzx 29,7,29 + rlwinm 10,18,24,0,7 + rlwinm 11,19,24,0,7 + lbzx 30,7,30 + lbzx 31,7,31 + rlwimi 8,20,16,8,15 + rlwimi 9,21,16,8,15 + rlwimi 10,22,16,8,15 + rlwimi 11,23,16,8,15 + rlwimi 8,24,8,16,23 + rlwimi 9,25,8,16,23 + rlwimi 10,26,8,16,23 + rlwimi 11,27,8,16,23 + or 8,8,28 + or 9,9,29 + or 10,10,30 + or 11,11,31 + xor 8,8,0 + xor 9,9,13 + xor 10,10,14 + xor 11,11,15 + blr + +.align 4 +.Lppc_AES_encrypt_compact: + lwz 16,240(5) + lwz 0,0(5) + lwz 13,4(5) + lwz 14,8(5) + lwz 15,12(5) + addi 6,3,2048 + lis 7,0x8080 + lis 12,0x1b1b + addi 5,5,16 + ori 7,7,0x8080 + ori 12,12,0x1b1b + mtctr 16 +.align 4 +.Lenc_compact_loop: + xor 8,8,0 + xor 9,9,13 + xor 10,10,14 + xor 11,11,15 + rlwinm 16,8,8,24,31 + rlwinm 17,9,8,24,31 + rlwinm 18,10,8,24,31 + rlwinm 19,11,8,24,31 + lbzx 16,6,16 + lbzx 17,6,17 + rlwinm 20,9,16,24,31 + rlwinm 21,10,16,24,31 + lbzx 18,6,18 + lbzx 19,6,19 + rlwinm 22,11,16,24,31 + rlwinm 23,8,16,24,31 + lbzx 20,6,20 + lbzx 21,6,21 + rlwinm 24,10,24,24,31 + rlwinm 25,11,24,24,31 + lbzx 22,6,22 + lbzx 23,6,23 + rlwinm 26,8,24,24,31 + rlwinm 27,9,24,24,31 + lbzx 24,6,24 + lbzx 25,6,25 + rlwinm 28,11,0,24,31 + rlwinm 29,8,0,24,31 + lbzx 26,6,26 + lbzx 27,6,27 + rlwinm 30,9,0,24,31 + rlwinm 31,10,0,24,31 + lbzx 28,6,28 + lbzx 29,6,29 + rlwinm 8,16,24,0,7 + rlwinm 9,17,24,0,7 + lbzx 30,6,30 + lbzx 31,6,31 + rlwinm 10,18,24,0,7 + rlwinm 11,19,24,0,7 + rlwimi 8,20,16,8,15 + rlwimi 9,21,16,8,15 + rlwimi 10,22,16,8,15 + rlwimi 11,23,16,8,15 + rlwimi 8,24,8,16,23 + rlwimi 9,25,8,16,23 + rlwimi 10,26,8,16,23 + rlwimi 11,27,8,16,23 + lwz 0,0(5) + lwz 13,4(5) + or 8,8,28 + or 9,9,29 + lwz 14,8(5) + lwz 15,12(5) + or 10,10,30 + or 11,11,31 + + addi 5,5,16 + bdz .Lenc_compact_done + + and 16,8,7 + and 17,9,7 + and 18,10,7 + and 19,11,7 + srwi 20,16,7 + srwi 21,17,7 + srwi 22,18,7 + srwi 23,19,7 + andc 24,8,7 + andc 25,9,7 + andc 26,10,7 + andc 27,11,7 + sub 16,16,20 + sub 17,17,21 + sub 18,18,22 + sub 19,19,23 + add 24,24,24 + add 25,25,25 + add 26,26,26 + add 27,27,27 + and 16,16,12 + and 17,17,12 + and 18,18,12 + and 19,19,12 + xor 16,16,24 + xor 17,17,25 + xor 18,18,26 + xor 19,19,27 + + rotlwi 28,8,16 + rotlwi 29,9,16 + rotlwi 30,10,16 + rotlwi 31,11,16 + xor 8,8,16 + xor 9,9,17 + xor 10,10,18 + xor 11,11,19 + rotrwi 8,8,24 + rotrwi 9,9,24 + rotrwi 10,10,24 + rotrwi 11,11,24 + xor 8,8,16 + xor 9,9,17 + xor 10,10,18 + xor 11,11,19 + rotlwi 24,28,8 + rotlwi 25,29,8 + rotlwi 26,30,8 + rotlwi 27,31,8 + xor 8,8,28 + xor 9,9,29 + xor 10,10,30 + xor 11,11,31 + xor 8,8,24 + xor 9,9,25 + xor 10,10,26 + xor 11,11,27 + + b .Lenc_compact_loop +.align 4 +.Lenc_compact_done: + xor 8,8,0 + xor 9,9,13 + xor 10,10,14 + xor 11,11,15 + blr + +.globl AES_decrypt +.type AES_decrypt,@function +.align 7 +AES_decrypt: + mflr 0 + stwu 1,-128(1) + + stw 0,44(1) + stw 2,48(1) + stw 13,52(1) + stw 14,56(1) + stw 15,60(1) + stw 16,64(1) + stw 17,68(1) + stw 18,72(1) + stw 19,76(1) + stw 20,80(1) + stw 21,84(1) + stw 22,88(1) + stw 23,92(1) + stw 24,96(1) + stw 25,100(1) + stw 26,104(1) + stw 27,108(1) + stw 28,112(1) + stw 29,116(1) + stw 30,120(1) + stw 31,124(1) + + lwz 8,0(3) + lwz 9,4(3) + lwz 10,8(3) + lwz 11,12(3) + bl .LAES_Td + bl .Lppc_AES_decrypt_compact + stw 8,0(4) + stw 9,4(4) + stw 10,8(4) + stw 11,12(4) + + lwz 0,44(1) + lwz 2,48(1) + lwz 13,52(1) + lwz 14,56(1) + lwz 15,60(1) + lwz 16,64(1) + lwz 17,68(1) + lwz 18,72(1) + lwz 19,76(1) + lwz 20,80(1) + lwz 21,84(1) + lwz 22,88(1) + lwz 23,92(1) + lwz 24,96(1) + lwz 25,100(1) + lwz 26,104(1) + lwz 27,108(1) + lwz 28,112(1) + lwz 29,116(1) + lwz 30,120(1) + lwz 31,124(1) + mtlr 0 + addi 1,1,128 + blr + +.align 4 +.Lppc_AES_decrypt: + lwz 16,240(5) + lwz 0,0(5) + lwz 13,4(5) + lwz 14,8(5) + lwz 15,12(5) + addi 6,3,3 + addi 7,3,2 + addi 12,3,1 + addi 16,16,-1 + addi 5,5,16 + xor 8,8,0 + xor 9,9,13 + xor 10,10,14 + xor 11,11,15 + mtctr 16 +.align 4 +.Ldec_loop: + rlwinm 16,8,11,21,28 + rlwinm 17,9,11,21,28 + lwz 0,0(5) + lwz 13,4(5) + rlwinm 18,10,11,21,28 + rlwinm 19,11,11,21,28 + lwz 14,8(5) + lwz 15,12(5) + rlwinm 20,11,19,21,28 + rlwinm 21,8,19,21,28 + lwzx 16,3,16 + lwzx 17,3,17 + rlwinm 22,9,19,21,28 + rlwinm 23,10,19,21,28 + lwzx 18,3,18 + lwzx 19,3,19 + rlwinm 24,10,27,21,28 + rlwinm 25,11,27,21,28 + lwzx 20,6,20 + lwzx 21,6,21 + rlwinm 26,8,27,21,28 + rlwinm 27,9,27,21,28 + lwzx 22,6,22 + lwzx 23,6,23 + rlwinm 28,9,3,21,28 + rlwinm 29,10,3,21,28 + lwzx 24,7,24 + lwzx 25,7,25 + rlwinm 30,11,3,21,28 + rlwinm 31,8,3,21,28 + lwzx 26,7,26 + lwzx 27,7,27 + xor 0,0,16 + xor 13,13,17 + lwzx 28,12,28 + lwzx 29,12,29 + xor 14,14,18 + xor 15,15,19 + lwzx 30,12,30 + lwzx 31,12,31 + xor 0,0,20 + xor 13,13,21 + xor 14,14,22 + xor 15,15,23 + xor 0,0,24 + xor 13,13,25 + xor 14,14,26 + xor 15,15,27 + xor 8,0,28 + xor 9,13,29 + xor 10,14,30 + xor 11,15,31 + addi 5,5,16 + bc 25,0,.Ldec_loop + + addi 7,3,2048 + nop + lwz 24,2048(3) + lwz 25,2080(3) + lwz 26,2112(3) + lwz 27,2144(3) + lwz 24,2176(3) + lwz 25,2208(3) + lwz 26,2240(3) + lwz 27,2272(3) + rlwinm 16,8,8,24,31 + rlwinm 17,9,8,24,31 + lwz 0,0(5) + lwz 13,4(5) + rlwinm 18,10,8,24,31 + rlwinm 19,11,8,24,31 + lwz 14,8(5) + lwz 15,12(5) + rlwinm 20,11,16,24,31 + rlwinm 21,8,16,24,31 + lbzx 16,7,16 + lbzx 17,7,17 + rlwinm 22,9,16,24,31 + rlwinm 23,10,16,24,31 + lbzx 18,7,18 + lbzx 19,7,19 + rlwinm 24,10,24,24,31 + rlwinm 25,11,24,24,31 + lbzx 20,7,20 + lbzx 21,7,21 + rlwinm 26,8,24,24,31 + rlwinm 27,9,24,24,31 + lbzx 22,7,22 + lbzx 23,7,23 + rlwinm 28,9,0,24,31 + rlwinm 29,10,0,24,31 + lbzx 24,7,24 + lbzx 25,7,25 + rlwinm 30,11,0,24,31 + rlwinm 31,8,0,24,31 + lbzx 26,7,26 + lbzx 27,7,27 + rlwinm 8,16,24,0,7 + rlwinm 9,17,24,0,7 + lbzx 28,7,28 + lbzx 29,7,29 + rlwinm 10,18,24,0,7 + rlwinm 11,19,24,0,7 + lbzx 30,7,30 + lbzx 31,7,31 + rlwimi 8,20,16,8,15 + rlwimi 9,21,16,8,15 + rlwimi 10,22,16,8,15 + rlwimi 11,23,16,8,15 + rlwimi 8,24,8,16,23 + rlwimi 9,25,8,16,23 + rlwimi 10,26,8,16,23 + rlwimi 11,27,8,16,23 + or 8,8,28 + or 9,9,29 + or 10,10,30 + or 11,11,31 + xor 8,8,0 + xor 9,9,13 + xor 10,10,14 + xor 11,11,15 + blr + +.align 4 +.Lppc_AES_decrypt_compact: + lwz 16,240(5) + lwz 0,0(5) + lwz 13,4(5) + lwz 14,8(5) + lwz 15,12(5) + addi 6,3,2048 + lis 7,0x8080 + lis 12,0x1b1b + addi 5,5,16 + ori 7,7,0x8080 + ori 12,12,0x1b1b + mtctr 16 +.align 4 +.Ldec_compact_loop: + xor 8,8,0 + xor 9,9,13 + xor 10,10,14 + xor 11,11,15 + rlwinm 16,8,8,24,31 + rlwinm 17,9,8,24,31 + rlwinm 18,10,8,24,31 + rlwinm 19,11,8,24,31 + lbzx 16,6,16 + lbzx 17,6,17 + rlwinm 20,11,16,24,31 + rlwinm 21,8,16,24,31 + lbzx 18,6,18 + lbzx 19,6,19 + rlwinm 22,9,16,24,31 + rlwinm 23,10,16,24,31 + lbzx 20,6,20 + lbzx 21,6,21 + rlwinm 24,10,24,24,31 + rlwinm 25,11,24,24,31 + lbzx 22,6,22 + lbzx 23,6,23 + rlwinm 26,8,24,24,31 + rlwinm 27,9,24,24,31 + lbzx 24,6,24 + lbzx 25,6,25 + rlwinm 28,9,0,24,31 + rlwinm 29,10,0,24,31 + lbzx 26,6,26 + lbzx 27,6,27 + rlwinm 30,11,0,24,31 + rlwinm 31,8,0,24,31 + lbzx 28,6,28 + lbzx 29,6,29 + rlwinm 8,16,24,0,7 + rlwinm 9,17,24,0,7 + lbzx 30,6,30 + lbzx 31,6,31 + rlwinm 10,18,24,0,7 + rlwinm 11,19,24,0,7 + rlwimi 8,20,16,8,15 + rlwimi 9,21,16,8,15 + rlwimi 10,22,16,8,15 + rlwimi 11,23,16,8,15 + rlwimi 8,24,8,16,23 + rlwimi 9,25,8,16,23 + rlwimi 10,26,8,16,23 + rlwimi 11,27,8,16,23 + lwz 0,0(5) + lwz 13,4(5) + or 8,8,28 + or 9,9,29 + lwz 14,8(5) + lwz 15,12(5) + or 10,10,30 + or 11,11,31 + + addi 5,5,16 + bdz .Ldec_compact_done + and 16,8,7 + and 17,9,7 + and 18,10,7 + and 19,11,7 + srwi 20,16,7 + srwi 21,17,7 + srwi 22,18,7 + srwi 23,19,7 + andc 24,8,7 + andc 25,9,7 + andc 26,10,7 + andc 27,11,7 + sub 16,16,20 + sub 17,17,21 + sub 18,18,22 + sub 19,19,23 + add 24,24,24 + add 25,25,25 + add 26,26,26 + add 27,27,27 + and 16,16,12 + and 17,17,12 + and 18,18,12 + and 19,19,12 + xor 16,16,24 + xor 17,17,25 + xor 18,18,26 + xor 19,19,27 + + and 20,16,7 + and 21,17,7 + and 22,18,7 + and 23,19,7 + srwi 24,20,7 + srwi 25,21,7 + srwi 26,22,7 + srwi 27,23,7 + andc 28,16,7 + andc 29,17,7 + andc 30,18,7 + andc 31,19,7 + sub 20,20,24 + sub 21,21,25 + sub 22,22,26 + sub 23,23,27 + add 28,28,28 + add 29,29,29 + add 30,30,30 + add 31,31,31 + and 20,20,12 + and 21,21,12 + and 22,22,12 + and 23,23,12 + xor 20,20,28 + xor 21,21,29 + xor 22,22,30 + xor 23,23,31 + + and 24,20,7 + and 25,21,7 + and 26,22,7 + and 27,23,7 + srwi 28,24,7 + srwi 29,25,7 + srwi 30,26,7 + srwi 31,27,7 + sub 24,24,28 + sub 25,25,29 + sub 26,26,30 + sub 27,27,31 + andc 28,20,7 + andc 29,21,7 + andc 30,22,7 + andc 31,23,7 + add 28,28,28 + add 29,29,29 + add 30,30,30 + add 31,31,31 + and 24,24,12 + and 25,25,12 + and 26,26,12 + and 27,27,12 + xor 24,24,28 + xor 25,25,29 + xor 26,26,30 + xor 27,27,31 + + xor 16,16,8 + xor 17,17,9 + xor 18,18,10 + xor 19,19,11 + xor 20,20,8 + xor 21,21,9 + xor 22,22,10 + xor 23,23,11 + rotrwi 8,8,8 + rotrwi 9,9,8 + rotrwi 10,10,8 + rotrwi 11,11,8 + xor 8,8,16 + xor 9,9,17 + xor 10,10,18 + xor 11,11,19 + xor 16,16,24 + xor 17,17,25 + xor 18,18,26 + xor 19,19,27 + xor 8,8,20 + xor 9,9,21 + xor 10,10,22 + xor 11,11,23 + rotrwi 16,16,24 + rotrwi 17,17,24 + rotrwi 18,18,24 + rotrwi 19,19,24 + xor 20,20,24 + xor 21,21,25 + xor 22,22,26 + xor 23,23,27 + xor 8,8,24 + xor 9,9,25 + xor 10,10,26 + xor 11,11,27 + rotrwi 20,20,16 + rotrwi 21,21,16 + rotrwi 22,22,16 + rotrwi 23,23,16 + xor 8,8,16 + xor 9,9,17 + xor 10,10,18 + xor 11,11,19 + rotrwi 24,24,8 + rotrwi 25,25,8 + rotrwi 26,26,8 + rotrwi 27,27,8 + xor 8,8,20 + xor 9,9,21 + xor 10,10,22 + xor 11,11,23 + xor 8,8,24 + xor 9,9,25 + xor 10,10,26 + xor 11,11,27 + + b .Ldec_compact_loop +.align 4 +.Ldec_compact_done: + xor 8,8,0 + xor 9,9,13 + xor 10,10,14 + xor 11,11,15 + blr +.long 0 +.byte 65,69,83,32,102,111,114,32,80,80,67,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.align 2 +.align 7 diff --git a/lib/libcrypto/arch/powerpc/bn.inc b/lib/libcrypto/arch/powerpc/bn.inc new file mode 100644 index 000000000000..87b889e3f379 --- /dev/null +++ b/lib/libcrypto/arch/powerpc/bn.inc @@ -0,0 +1,3 @@ +.PATH.S: ${.PARSEDIR} +BN_SRCS = ppc.S +.include "../../bn.inc" diff --git a/lib/libcrypto/arch/powerpc/ppc-mont.S b/lib/libcrypto/arch/powerpc/ppc-mont.S new file mode 100644 index 000000000000..442f102199bf --- /dev/null +++ b/lib/libcrypto/arch/powerpc/ppc-mont.S @@ -0,0 +1,213 @@ +.machine "any" +.text + +.globl bn_mul_mont +.type bn_mul_mont,@function +.align 4 +bn_mul_mont: + cmpwi 8,4 + mr 9,3 + li 3,0 + bclr 12,0 + + slwi 8,8,2 + li 12,-4096 + addi 3,8,288 + subf 3,3,1 + and 3,3,12 + subf 3,1,3 + srwi 8,8,2 + stwux 1,1,3 + + stw 14,16(1) + stw 15,20(1) + stw 16,24(1) + stw 17,28(1) + stw 18,32(1) + stw 19,36(1) + stw 20,40(1) + stw 21,44(1) + stw 22,48(1) + stw 23,52(1) + stw 24,56(1) + stw 25,60(1) + + lwz 7,0(7) + addi 8,8,-2 + + lwz 17,0(5) + lwz 10,0(4) + addi 16,1,64 + mullw 19,10,17 + mulhwu 20,10,17 + + lwz 10,4(4) + lwz 11,0(6) + + mullw 18,19,7 + + mullw 23,10,17 + mulhwu 24,10,17 + + mullw 21,11,18 + mulhwu 22,11,18 + lwz 11,4(6) + addc 21,21,19 + addze 22,22 + + mullw 25,11,18 + mulhwu 0,11,18 + + mtctr 8 + li 15,8 +.align 4 +.L1st: + lwzx 10,4,15 + addc 19,23,20 + lwzx 11,6,15 + addze 20,24 + mullw 23,10,17 + addc 21,25,22 + mulhwu 24,10,17 + addze 22,0 + mullw 25,11,18 + addc 21,21,19 + mulhwu 0,11,18 + addze 22,22 + stw 21,0(16) + + addi 15,15,4 + addi 16,16,4 + bc 25,0,.L1st + + addc 19,23,20 + addze 20,24 + + addc 21,25,22 + addze 22,0 + addc 21,21,19 + addze 22,22 + stw 21,0(16) + + li 3,0 + addc 22,22,20 + addze 3,3 + stw 22,4(16) + + li 14,4 +.align 4 +.Louter: + lwzx 17,5,14 + lwz 10,0(4) + addi 16,1,64 + lwz 12,64(1) + mullw 19,10,17 + mulhwu 20,10,17 + lwz 10,4(4) + lwz 11,0(6) + addc 19,19,12 + mullw 23,10,17 + addze 20,20 + mullw 18,19,7 + mulhwu 24,10,17 + mullw 21,11,18 + mulhwu 22,11,18 + lwz 11,4(6) + addc 21,21,19 + mullw 25,11,18 + addze 22,22 + mulhwu 0,11,18 + + mtctr 8 + li 15,8 +.align 4 +.Linner: + lwzx 10,4,15 + addc 19,23,20 + lwz 12,4(16) + addze 20,24 + lwzx 11,6,15 + addc 21,25,22 + mullw 23,10,17 + addze 22,0 + mulhwu 24,10,17 + addc 19,19,12 + mullw 25,11,18 + addze 20,20 + mulhwu 0,11,18 + addc 21,21,19 + addi 15,15,4 + addze 22,22 + stw 21,0(16) + addi 16,16,4 + bc 25,0,.Linner + + lwz 12,4(16) + addc 19,23,20 + addze 20,24 + addc 19,19,12 + addze 20,20 + + addc 21,25,22 + addze 22,0 + addc 21,21,19 + addze 22,22 + stw 21,0(16) + + addic 3,3,-1 + li 3,0 + adde 22,22,20 + addze 3,3 + stw 22,4(16) + + slwi 12,8,2 + .long 0x7c0e6040 + addi 14,14,4 + ble- .Louter + + addi 8,8,2 + subfc 15,15,15 + addi 16,1,64 + mtctr 8 + +.align 4 +.Lsub: lwzx 12,16,15 + lwzx 11,6,15 + subfe 10,11,12 + stwx 10,9,15 + addi 15,15,4 + bc 25,0,.Lsub + + li 15,0 + mtctr 8 + subfe 3,15,3 + and 4,16,3 + andc 6,9,3 + or 4,4,6 + +.align 4 +.Lcopy: + lwzx 12,4,15 + stwx 12,9,15 + stwx 15,16,15 + addi 15,15,4 + bc 25,0,.Lcopy + + lwz 14,16(1) + lwz 15,20(1) + lwz 16,24(1) + lwz 17,28(1) + lwz 18,32(1) + lwz 19,36(1) + lwz 20,40(1) + lwz 21,44(1) + lwz 22,48(1) + lwz 23,52(1) + lwz 24,56(1) + lwz 25,60(1) + lwz 1,0(1) + li 3,1 + blr +.long 0 +.byte 77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105,112,108,105,99,97,116,105,111,110,32,102,111,114,32,80,80,67,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,102,121,46,99,104,97,108,109,101,114,115,46,115,101,62,0 +.align 2 diff --git a/lib/libcrypto/arch/powerpc/ppc.S b/lib/libcrypto/arch/powerpc/ppc.S new file mode 100644 index 000000000000..5fe2c2f5122d --- /dev/null +++ b/lib/libcrypto/arch/powerpc/ppc.S @@ -0,0 +1,1826 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +.globl bn_sqr_comba4 +.type bn_sqr_comba4,@function +.globl bn_sqr_comba8 +.type bn_sqr_comba8,@function +.globl bn_mul_comba4 +.type bn_mul_comba4,@function +.globl bn_mul_comba8 +.type bn_mul_comba8,@function +.globl bn_sub_words +.type bn_sub_words,@function +.globl bn_add_words +.type bn_add_words,@function +.globl bn_div_words +.type bn_div_words,@function +.globl bn_sqr_words +.type bn_sqr_words,@function +.globl bn_mul_words +.type bn_mul_words,@function +.globl bn_mul_add_words +.type bn_mul_add_words,@function + + + +.machine "ppc" + + + + + + + + +.align 4 +bn_sqr_comba4: + + + + + + + + + + + + + + + + xor 0,0,0 + + + + lwz 5,0(4) + mullw 9,5,5 + mulhwu 10,5,5 + + + + + stw 9,0(3) + + lwz 6,4(4) + mullw 7,5,6 + mulhwu 8,5,6 + + addc 7,7,7 + adde 8,8,8 + addze 9,0 + + + addc 10,7,10 + addze 11,8 + addze 9,9 + + stw 10,4(3) + + mullw 7,6,6 + mulhwu 8,6,6 + addc 11,7,11 + adde 9,8,9 + addze 10,0 + + lwz 6,8(4) + mullw 7,5,6 + mulhwu 8,5,6 + + addc 7,7,7 + adde 8,8,8 + addze 10,10 + + addc 11,7,11 + adde 9,8,9 + addze 10,10 + stw 11,8(3) + + lwz 6,12(4) + mullw 7,5,6 + mulhwu 8,5,6 + addc 7,7,7 + adde 8,8,8 + addze 11,0 + + addc 9,7,9 + adde 10,8,10 + addze 11,11 + + lwz 5,4(4) + lwz 6,8(4) + mullw 7,5,6 + mulhwu 8,5,6 + + addc 7,7,7 + adde 8,8,8 + addze 11,11 + addc 9,7,9 + adde 10,8,10 + addze 11,11 + stw 9,12(3) + + mullw 7,6,6 + mulhwu 8,6,6 + addc 10,7,10 + adde 11,8,11 + addze 9,0 + + lwz 6,12(4) + mullw 7,5,6 + mulhwu 8,5,6 + addc 7,7,7 + adde 8,8,8 + addze 9,9 + + addc 10,7,10 + adde 11,8,11 + addze 9,9 + stw 10,16(3) + + lwz 5,8(4) + mullw 7,5,6 + mulhwu 8,5,6 + addc 7,7,7 + adde 8,8,8 + addze 10,0 + + addc 11,7,11 + adde 9,8,9 + addze 10,10 + stw 11,20(3) + + mullw 7,6,6 + mulhwu 8,6,6 + addc 9,7,9 + adde 10,8,10 + + stw 9,24(3) + stw 10,28(3) + blr +.long 0x00000000 + + + + + + + + +.align 4 +bn_sqr_comba8: + + + + + + + + + + + + + + + + + + + + xor 0,0,0 + + + + lwz 5,0(4) + mullw 9,5,5 + mulhwu 10,5,5 + stw 9,0(3) + + lwz 6,4(4) + mullw 7,5,6 + mulhwu 8,5,6 + + addc 10,7,10 + adde 11,8,0 + addze 9,0 + + addc 10,7,10 + adde 11,8,11 + addze 9,9 + + stw 10,4(3) + + + mullw 7,6,6 + mulhwu 8,6,6 + addc 11,7,11 + adde 9,8,9 + addze 10,0 + + lwz 6,8(4) + mullw 7,5,6 + mulhwu 8,5,6 + + addc 11,7,11 + adde 9,8,9 + addze 10,10 + + addc 11,7,11 + adde 9,8,9 + addze 10,10 + + stw 11,8(3) + + lwz 6,12(4) + mullw 7,5,6 + mulhwu 8,5,6 + + addc 9,7,9 + adde 10,8,10 + addze 11,0 + + addc 9,7,9 + adde 10,8,10 + addze 11,11 + + lwz 5,4(4) + lwz 6,8(4) + mullw 7,5,6 + mulhwu 8,5,6 + + addc 9,7,9 + adde 10,8,10 + addze 11,11 + + addc 9,7,9 + adde 10,8,10 + addze 11,11 + + stw 9,12(3) + + mullw 7,6,6 + mulhwu 8,6,6 + + addc 10,7,10 + adde 11,8,11 + addze 9,0 + + lwz 6,12(4) + mullw 7,5,6 + mulhwu 8,5,6 + + addc 10,7,10 + adde 11,8,11 + addze 9,9 + + addc 10,7,10 + adde 11,8,11 + addze 9,9 + + lwz 5,0(4) + lwz 6,16(4) + mullw 7,5,6 + mulhwu 8,5,6 + + addc 10,7,10 + adde 11,8,11 + addze 9,9 + + addc 10,7,10 + adde 11,8,11 + addze 9,9 + stw 10,16(3) + + lwz 6,20(4) + mullw 7,5,6 + mulhwu 8,5,6 + + addc 11,7,11 + adde 9,8,9 + addze 10,0 + + addc 11,7,11 + adde 9,8,9 + addze 10,10 + + lwz 5,4(4) + lwz 6,16(4) + mullw 7,5,6 + mulhwu 8,5,6 + + addc 11,7,11 + adde 9,8,9 + addze 10,10 + + addc 11,7,11 + adde 9,8,9 + addze 10,10 + + lwz 5,8(4) + lwz 6,12(4) + mullw 7,5,6 + mulhwu 8,5,6 + + addc 11,7,11 + adde 9,8,9 + addze 10,10 + + addc 11,7,11 + adde 9,8,9 + addze 10,10 + stw 11,20(3) + + mullw 7,6,6 + mulhwu 8,6,6 + addc 9,7,9 + adde 10,8,10 + addze 11,0 + + lwz 6,16(4) + mullw 7,5,6 + mulhwu 8,5,6 + + addc 9,7,9 + adde 10,8,10 + addze 11,11 + + addc 9,7,9 + adde 10,8,10 + addze 11,11 + + lwz 5,4(4) + lwz 6,20(4) + mullw 7,5,6 + mulhwu 8,5,6 + + addc 9,7,9 + adde 10,8,10 + addze 11,11 + + addc 9,7,9 + adde 10,8,10 + addze 11,11 + + lwz 5,0(4) + lwz 6,24(4) + mullw 7,5,6 + mulhwu 8,5,6 + addc 9,7,9 + adde 10,8,10 + addze 11,11 + addc 9,7,9 + adde 10,8,10 + addze 11,11 + stw 9,24(3) + + lwz 6,28(4) + mullw 7,5,6 + mulhwu 8,5,6 + + addc 10,7,10 + adde 11,8,11 + addze 9,0 + addc 10,7,10 + adde 11,8,11 + addze 9,9 + + lwz 5,4(4) + lwz 6,24(4) + mullw 7,5,6 + mulhwu 8,5,6 + + addc 10,7,10 + adde 11,8,11 + addze 9,9 + addc 10,7,10 + adde 11,8,11 + addze 9,9 + + lwz 5,8(4) + lwz 6,20(4) + mullw 7,5,6 + mulhwu 8,5,6 + addc 10,7,10 + adde 11,8,11 + addze 9,9 + addc 10,7,10 + adde 11,8,11 + addze 9,9 + + lwz 5,12(4) + lwz 6,16(4) + mullw 7,5,6 + mulhwu 8,5,6 + + addc 10,7,10 + adde 11,8,11 + addze 9,9 + addc 10,7,10 + adde 11,8,11 + addze 9,9 + stw 10,28(3) + + mullw 7,6,6 + mulhwu 8,6,6 + addc 11,7,11 + adde 9,8,9 + addze 10,0 + + lwz 6,20(4) + mullw 7,5,6 + mulhwu 8,5,6 + addc 11,7,11 + adde 9,8,9 + addze 10,10 + addc 11,7,11 + adde 9,8,9 + addze 10,10 + + lwz 5,8(4) + lwz 6,24(4) + mullw 7,5,6 + mulhwu 8,5,6 + addc 11,7,11 + adde 9,8,9 + addze 10,10 + + addc 11,7,11 + adde 9,8,9 + addze 10,10 + + lwz 5,4(4) + lwz 6,28(4) + mullw 7,5,6 + mulhwu 8,5,6 + addc 11,7,11 + adde 9,8,9 + addze 10,10 + addc 11,7,11 + adde 9,8,9 + addze 10,10 + stw 11,32(3) + + lwz 5,8(4) + mullw 7,5,6 + mulhwu 8,5,6 + + addc 9,7,9 + adde 10,8,10 + addze 11,0 + addc 9,7,9 + adde 10,8,10 + addze 11,11 + + lwz 5,12(4) + lwz 6,24(4) + mullw 7,5,6 + mulhwu 8,5,6 + addc 9,7,9 + adde 10,8,10 + addze 11,11 + addc 9,7,9 + adde 10,8,10 + addze 11,11 + + lwz 5,16(4) + lwz 6,20(4) + mullw 7,5,6 + mulhwu 8,5,6 + addc 9,7,9 + adde 10,8,10 + addze 11,11 + addc 9,7,9 + adde 10,8,10 + addze 11,11 + stw 9,36(3) + + mullw 7,6,6 + mulhwu 8,6,6 + addc 10,7,10 + adde 11,8,11 + addze 9,0 + + lwz 6,24(4) + mullw 7,5,6 + mulhwu 8,5,6 + addc 10,7,10 + adde 11,8,11 + addze 9,9 + addc 10,7,10 + adde 11,8,11 + addze 9,9 + + lwz 5,12(4) + lwz 6,28(4) + mullw 7,5,6 + mulhwu 8,5,6 + addc 10,7,10 + adde 11,8,11 + addze 9,9 + addc 10,7,10 + adde 11,8,11 + addze 9,9 + stw 10,40(3) + + lwz 5,16(4) + mullw 7,5,6 + mulhwu 8,5,6 + addc 11,7,11 + adde 9,8,9 + addze 10,0 + addc 11,7,11 + adde 9,8,9 + addze 10,10 + + lwz 5,20(4) + lwz 6,24(4) + mullw 7,5,6 + mulhwu 8,5,6 + addc 11,7,11 + adde 9,8,9 + addze 10,10 + addc 11,7,11 + adde 9,8,9 + addze 10,10 + stw 11,44(3) + + mullw 7,6,6 + mulhwu 8,6,6 + addc 9,7,9 + adde 10,8,10 + addze 11,0 + + lwz 6,28(4) + mullw 7,5,6 + mulhwu 8,5,6 + addc 9,7,9 + adde 10,8,10 + addze 11,11 + addc 9,7,9 + adde 10,8,10 + addze 11,11 + stw 9,48(3) + + + lwz 5,24(4) + mullw 7,5,6 + mulhwu 8,5,6 + addc 10,7,10 + adde 11,8,11 + addze 9,0 + addc 10,7,10 + adde 11,8,11 + addze 9,9 + stw 10,52(3) + + mullw 7,6,6 + mulhwu 8,6,6 + addc 11,7,11 + adde 9,8,9 + stw 11,56(3) + stw 9, 60(3) + + + blr + +.long 0x00000000 + + + + + + + + +.align 4 +bn_mul_comba4: + + + + + + + + + + + + xor 0,0,0 + + lwz 6,0(4) + lwz 7,0(5) + mullw 10,6,7 + mulhwu 11,6,7 + stw 10,0(3) + + lwz 7,4(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 11,8,11 + adde 12,9,0 + addze 10,0 + + lwz 6, 4(4) + lwz 7, 0(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 11,8,11 + adde 12,9,12 + addze 10,10 + stw 11,4(3) + + lwz 6,8(4) + mullw 8,6,7 + mulhwu 9,6,7 + addc 12,8,12 + adde 10,9,10 + addze 11,0 + + lwz 6,4(4) + lwz 7,4(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 12,8,12 + adde 10,9,10 + addze 11,11 + + lwz 6,0(4) + lwz 7,8(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 12,8,12 + adde 10,9,10 + addze 11,11 + stw 12,8(3) + + lwz 7,12(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 10,8,10 + adde 11,9,11 + addze 12,0 + + lwz 6,4(4) + lwz 7,8(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 10,8,10 + adde 11,9,11 + addze 12,12 + + lwz 6,8(4) + lwz 7,4(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 10,8,10 + adde 11,9,11 + addze 12,12 + + lwz 6,12(4) + lwz 7,0(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 10,8,10 + adde 11,9,11 + addze 12,12 + stw 10,12(3) + + lwz 7,4(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 11,8,11 + adde 12,9,12 + addze 10,0 + + lwz 6,8(4) + lwz 7,8(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 11,8,11 + adde 12,9,12 + addze 10,10 + + lwz 6,4(4) + lwz 7,12(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 11,8,11 + adde 12,9,12 + addze 10,10 + stw 11,16(3) + + lwz 6,8(4) + mullw 8,6,7 + mulhwu 9,6,7 + addc 12,8,12 + adde 10,9,10 + addze 11,0 + + lwz 6,12(4) + lwz 7,8(4) + mullw 8,6,7 + mulhwu 9,6,7 + addc 12,8,12 + adde 10,9,10 + addze 11,11 + stw 12,20(3) + + lwz 7,12(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 10,8,10 + adde 11,9,11 + + stw 10,24(3) + stw 11,28(3) + blr +.long 0x00000000 + + + + + + + + +.align 4 +bn_mul_comba8: + + + + + + + + + + + + xor 0,0,0 + + + lwz 6,0(4) + lwz 7,0(5) + mullw 10,6,7 + mulhwu 11,6,7 + stw 10,0(3) + + lwz 7,4(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 11,11,8 + addze 12,9 + addze 10,0 + + lwz 6,4(4) + lwz 7,0(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 11,11,8 + adde 12,12,9 + addze 10,10 + stw 11,4(3) + + lwz 6,8(4) + mullw 8,6,7 + mulhwu 9,6,7 + addc 12,12,8 + adde 10,10,9 + addze 11,0 + + lwz 6,4(4) + lwz 7,4(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 12,12,8 + adde 10,10,9 + addze 11,11 + + lwz 6,0(4) + lwz 7,8(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 12,12,8 + adde 10,10,9 + addze 11,11 + stw 12,8(3) + + lwz 7,12(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 10,10,8 + adde 11,11,9 + addze 12,0 + + lwz 6,4(4) + lwz 7,8(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 10,10,8 + adde 11,11,9 + addze 12,12 + + + lwz 6,8(4) + lwz 7,4(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 10,10,8 + adde 11,11,9 + addze 12,12 + + lwz 6,12(4) + lwz 7,0(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 10,10,8 + adde 11,11,9 + addze 12,12 + stw 10,12(3) + + lwz 6,16(4) + mullw 8,6,7 + mulhwu 9,6,7 + addc 11,11,8 + adde 12,12,9 + addze 10,0 + + lwz 6,12(4) + lwz 7,4(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 11,11,8 + adde 12,12,9 + addze 10,10 + + lwz 6,8(4) + lwz 7,8(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 11,11,8 + adde 12,12,9 + addze 10,10 + + lwz 6,4(4) + lwz 7,12(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 11,11,8 + adde 12,12,9 + addze 10,10 + + lwz 6,0(4) + lwz 7,16(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 11,11,8 + adde 12,12,9 + addze 10,10 + stw 11,16(3) + + lwz 7,20(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 12,12,8 + adde 10,10,9 + addze 11,0 + + lwz 6,4(4) + lwz 7,16(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 12,12,8 + adde 10,10,9 + addze 11,11 + + lwz 6,8(4) + lwz 7,12(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 12,12,8 + adde 10,10,9 + addze 11,11 + + lwz 6,12(4) + lwz 7,8(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 12,12,8 + adde 10,10,9 + addze 11,11 + + lwz 6,16(4) + lwz 7,4(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 12,12,8 + adde 10,10,9 + addze 11,11 + + lwz 6,20(4) + lwz 7,0(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 12,12,8 + adde 10,10,9 + addze 11,11 + stw 12,20(3) + + lwz 6,24(4) + mullw 8,6,7 + mulhwu 9,6,7 + addc 10,10,8 + adde 11,11,9 + addze 12,0 + + lwz 6,20(4) + lwz 7,4(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 10,10,8 + adde 11,11,9 + addze 12,12 + + lwz 6,16(4) + lwz 7,8(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 10,10,8 + adde 11,11,9 + addze 12,12 + + lwz 6,12(4) + lwz 7,12(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 10,10,8 + adde 11,11,9 + addze 12,12 + + lwz 6,8(4) + lwz 7,16(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 10,10,8 + adde 11,11,9 + addze 12,12 + + lwz 6,4(4) + lwz 7,20(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 10,10,8 + adde 11,11,9 + addze 12,12 + + lwz 6,0(4) + lwz 7,24(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 10,10,8 + adde 11,11,9 + addze 12,12 + stw 10,24(3) + + lwz 7,28(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 11,11,8 + adde 12,12,9 + addze 10,0 + + lwz 6,4(4) + lwz 7,24(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 11,11,8 + adde 12,12,9 + addze 10,10 + + lwz 6,8(4) + lwz 7,20(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 11,11,8 + adde 12,12,9 + addze 10,10 + + lwz 6,12(4) + lwz 7,16(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 11,11,8 + adde 12,12,9 + addze 10,10 + + lwz 6,16(4) + lwz 7,12(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 11,11,8 + adde 12,12,9 + addze 10,10 + + lwz 6,20(4) + lwz 7,8(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 11,11,8 + adde 12,12,9 + addze 10,10 + + lwz 6,24(4) + lwz 7,4(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 11,11,8 + adde 12,12,9 + addze 10,10 + + lwz 6,28(4) + lwz 7,0(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 11,11,8 + adde 12,12,9 + addze 10,10 + stw 11,28(3) + + lwz 7,4(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 12,12,8 + adde 10,10,9 + addze 11,0 + + lwz 6,24(4) + lwz 7,8(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 12,12,8 + adde 10,10,9 + addze 11,11 + + lwz 6,20(4) + lwz 7,12(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 12,12,8 + adde 10,10,9 + addze 11,11 + + lwz 6,16(4) + lwz 7,16(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 12,12,8 + adde 10,10,9 + addze 11,11 + + lwz 6,12(4) + lwz 7,20(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 12,12,8 + adde 10,10,9 + addze 11,11 + + lwz 6,8(4) + lwz 7,24(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 12,12,8 + adde 10,10,9 + addze 11,11 + + lwz 6,4(4) + lwz 7,28(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 12,12,8 + adde 10,10,9 + addze 11,11 + stw 12,32(3) + + lwz 6,8(4) + mullw 8,6,7 + mulhwu 9,6,7 + addc 10,10,8 + adde 11,11,9 + addze 12,0 + + lwz 6,12(4) + lwz 7,24(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 10,10,8 + adde 11,11,9 + addze 12,12 + + lwz 6,16(4) + lwz 7,20(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 10,10,8 + adde 11,11,9 + addze 12,12 + + lwz 6,20(4) + lwz 7,16(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 10,10,8 + adde 11,11,9 + addze 12,12 + + lwz 6,24(4) + lwz 7,12(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 10,10,8 + adde 11,11,9 + addze 12,12 + + lwz 6,28(4) + lwz 7,8(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 10,10,8 + adde 11,11,9 + addze 12,12 + stw 10,36(3) + + lwz 7,12(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 11,11,8 + adde 12,12,9 + addze 10,0 + + lwz 6,24(4) + lwz 7,16(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 11,11,8 + adde 12,12,9 + addze 10,10 + + lwz 6,20(4) + lwz 7,20(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 11,11,8 + adde 12,12,9 + addze 10,10 + + lwz 6,16(4) + lwz 7,24(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 11,11,8 + adde 12,12,9 + addze 10,10 + + lwz 6,12(4) + lwz 7,28(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 11,11,8 + adde 12,12,9 + addze 10,10 + stw 11,40(3) + + lwz 6,16(4) + mullw 8,6,7 + mulhwu 9,6,7 + addc 12,12,8 + adde 10,10,9 + addze 11,0 + + lwz 6,20(4) + lwz 7,24(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 12,12,8 + adde 10,10,9 + addze 11,11 + + lwz 6,24(4) + lwz 7,20(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 12,12,8 + adde 10,10,9 + addze 11,11 + + lwz 6,28(4) + lwz 7,16(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 12,12,8 + adde 10,10,9 + addze 11,11 + stw 12,44(3) + + lwz 7,20(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 10,10,8 + adde 11,11,9 + addze 12,0 + + lwz 6,24(4) + lwz 7,24(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 10,10,8 + adde 11,11,9 + addze 12,12 + + lwz 6,20(4) + lwz 7,28(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 10,10,8 + adde 11,11,9 + addze 12,12 + stw 10,48(3) + + lwz 6,24(4) + mullw 8,6,7 + mulhwu 9,6,7 + addc 11,11,8 + adde 12,12,9 + addze 10,0 + + lwz 6,28(4) + lwz 7,24(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 11,11,8 + adde 12,12,9 + addze 10,10 + stw 11,52(3) + + lwz 7,28(5) + mullw 8,6,7 + mulhwu 9,6,7 + addc 12,12,8 + adde 10,10,9 + stw 12,56(3) + stw 10,60(3) + blr +.long 0x00000000 + + + + + + + + +.align 4 +bn_sub_words: + + + + + + + + + + + + + + xor 0,0,0 + + + + subfc. 7,0,6 + + + beq .Lppcasm_sub_adios + addi 4,4,-4 + addi 3,3,-4 + addi 5,5,-4 + mtctr 6 +.Lppcasm_sub_mainloop: + lwzu 7,4(4) + lwzu 8,4(5) + subfe 6,8,7 + + + stwu 6,4(3) + bc 25,0,.Lppcasm_sub_mainloop +.Lppcasm_sub_adios: + subfze 3,0 + andi. 3,3,1 + blr +.long 0x00000000 + + + + + + + + + +.align 4 +bn_add_words: + + + + + + + + + + + + + + xor 0,0,0 + + + + addic. 6,6,0 + beq .Lppcasm_add_adios + addi 4,4,-4 + addi 3,3,-4 + addi 5,5,-4 + mtctr 6 +.Lppcasm_add_mainloop: + lwzu 7,4(4) + lwzu 8,4(5) + adde 8,7,8 + stwu 8,4(3) + bc 25,0,.Lppcasm_add_mainloop +.Lppcasm_add_adios: + addze 3,0 + blr +.long 0x00000000 + + + + + + + + +.align 4 +bn_div_words: + + + + + + + + + + + + cmplwi 0,5,0 + bne .Lppcasm_div1 + li 3,-1 + blr +.Lppcasm_div1: + xor 0,0,0 + li 8,32 + cntlzw. 7,5 + beq .Lppcasm_div2 + subf 8,7,8 + srw. 9,3,8 + tw 16,9,0 +.Lppcasm_div2: + .long 0x7c032840 + blt .Lppcasm_div3 + subf 3,5,3 +.Lppcasm_div3: + cmpi 0,0,7,0 + beq .Lppcasm_div4 + slw 3,3,7 + srw 8,4,8 + slw 5,5,7 + or 3,3,8 + slw 4,4,7 +.Lppcasm_div4: + srwi 9,5,16 + + + li 6,2 + mtctr 6 +.Lppcasm_divouterloop: + srwi 8,3,16 + srwi 11,4,16 + + .long 0x7c084840 + bne .Lppcasm_div5 + + li 8,-1 + clrlwi 8,8,16 + b .Lppcasm_div6 +.Lppcasm_div5: + divwu 8,3,9 +.Lppcasm_div6: + mullw 12,9,8 + clrlwi 10,5,16 + mullw 6,8,10 + +.Lppcasm_divinnerloop: + subf 10,12,3 + srwi 7,10,16 + addic. 7,7,0 + + + + slwi 7,10,16 + or 7,7,11 + .long 0x7c863840 + bne .Lppcasm_divinnerexit + ble 1,.Lppcasm_divinnerexit + addi 8,8,-1 + subf 12,9,12 + clrlwi 10,5,16 + subf 6,10,6 + b .Lppcasm_divinnerloop +.Lppcasm_divinnerexit: + srwi 10,6,16 + slwi 11,6,16 + .long 0x7c845840 + add 12,12,10 + bge 1,.Lppcasm_div7 + addi 12,12,1 +.Lppcasm_div7: + subf 11,11,4 + .long 0x7c836040 + bge 1,.Lppcasm_div8 + addi 8,8,-1 + add 3,5,3 +.Lppcasm_div8: + subf 12,12,3 + slwi 4,11,16 + + + + insrwi 11,12,16,16 + rotlwi 3,11,16 + bdz .Lppcasm_div9 + slwi 0,8,16 + b .Lppcasm_divouterloop +.Lppcasm_div9: + or 3,8,0 + blr +.long 0x00000000 + + + + + + + +.align 4 +bn_sqr_words: + + + + + + + + + + + + + + + addic. 5,5,0 + beq .Lppcasm_sqr_adios + addi 4,4,-4 + addi 3,3,-4 + mtctr 5 +.Lppcasm_sqr_mainloop: + + lwzu 6,4(4) + mullw 7,6,6 + mulhwu 8,6,6 + stwu 7,4(3) + stwu 8,4(3) + bc 25,0,.Lppcasm_sqr_mainloop +.Lppcasm_sqr_adios: + blr +.long 0x00000000 + + + + + + + + + +.align 4 +bn_mul_words: + + + + + + + + xor 0,0,0 + xor 12,12,12 + rlwinm. 7,5,30,2,31 + beq .Lppcasm_mw_REM + mtctr 7 +.Lppcasm_mw_LOOP: + + lwz 8,0(4) + mullw 9,6,8 + mulhwu 10,6,8 + addc 9,9,12 + + + + + stw 9,0(3) + + lwz 8,4(4) + mullw 11,6,8 + mulhwu 12,6,8 + adde 11,11,10 + + stw 11,4(3) + + lwz 8,8(4) + mullw 9,6,8 + mulhwu 10,6,8 + adde 9,9,12 + + stw 9,8(3) + + lwz 8,12(4) + mullw 11,6,8 + mulhwu 12,6,8 + adde 11,11,10 + addze 12,12 + + stw 11,12(3) + + addi 3,3,16 + addi 4,4,16 + bc 25,0,.Lppcasm_mw_LOOP + +.Lppcasm_mw_REM: + andi. 5,5,0x3 + beq .Lppcasm_mw_OVER + + lwz 8,0(4) + mullw 9,6,8 + mulhwu 10,6,8 + addc 9,9,12 + addze 10,10 + stw 9,0(3) + addi 12,10,0 + + addi 5,5,-1 + cmpli 0,0,5,0 + beq .Lppcasm_mw_OVER + + + + lwz 8,4(4) + mullw 9,6,8 + mulhwu 10,6,8 + addc 9,9,12 + addze 10,10 + stw 9,4(3) + addi 12,10,0 + + addi 5,5,-1 + cmpli 0,0,5,0 + beq .Lppcasm_mw_OVER + + + lwz 8,8(4) + mullw 9,6,8 + mulhwu 10,6,8 + addc 9,9,12 + addze 10,10 + stw 9,8(3) + addi 12,10,0 + +.Lppcasm_mw_OVER: + addi 3,12,0 + blr +.long 0x00000000 + + + + + + + + +.align 4 +bn_mul_add_words: + + + + + + + + + + + xor 0,0,0 + xor 12,12,12 + rlwinm. 7,5,30,2,31 + beq .Lppcasm_maw_leftover + mtctr 7 +.Lppcasm_maw_mainloop: + + lwz 8,0(4) + lwz 11,0(3) + mullw 9,6,8 + mulhwu 10,6,8 + addc 9,9,12 + addze 10,10 + addc 9,9,11 + + + + + + + stw 9,0(3) + + + lwz 8,4(4) + lwz 9,4(3) + mullw 11,6,8 + mulhwu 12,6,8 + adde 11,11,10 + addze 12,12 + addc 11,11,9 + + stw 11,4(3) + + + lwz 8,8(4) + mullw 9,6,8 + lwz 11,8(3) + mulhwu 10,6,8 + adde 9,9,12 + addze 10,10 + addc 9,9,11 + + stw 9,8(3) + + + lwz 8,12(4) + mullw 11,6,8 + lwz 9,12(3) + mulhwu 12,6,8 + adde 11,11,10 + addze 12,12 + addc 11,11,9 + addze 12,12 + stw 11,12(3) + addi 3,3,16 + addi 4,4,16 + bc 25,0,.Lppcasm_maw_mainloop + +.Lppcasm_maw_leftover: + andi. 5,5,0x3 + beq .Lppcasm_maw_adios + addi 3,3,-4 + addi 4,4,-4 + + mtctr 5 + lwzu 8,4(4) + mullw 9,6,8 + mulhwu 10,6,8 + lwzu 11,4(3) + addc 9,9,11 + addze 10,10 + addc 9,9,12 + addze 12,10 + stw 9,0(3) + + bdz .Lppcasm_maw_adios + + lwzu 8,4(4) + mullw 9,6,8 + mulhwu 10,6,8 + lwzu 11,4(3) + addc 9,9,11 + addze 10,10 + addc 9,9,12 + addze 12,10 + stw 9,0(3) + + bdz .Lppcasm_maw_adios + + lwzu 8,4(4) + mullw 9,6,8 + mulhwu 10,6,8 + lwzu 11,4(3) + addc 9,9,11 + addze 10,10 + addc 9,9,12 + addze 12,10 + stw 9,0(3) + +.Lppcasm_maw_adios: + addi 3,12,0 + blr +.long 0x00000000 +.align 4 diff --git a/lib/libcrypto/arch/powerpc/ppccpuid.S b/lib/libcrypto/arch/powerpc/ppccpuid.S new file mode 100644 index 000000000000..3b3cd3f5e50f --- /dev/null +++ b/lib/libcrypto/arch/powerpc/ppccpuid.S @@ -0,0 +1,71 @@ +.text + +.globl OPENSSL_cpuid_setup +.type OPENSSL_cpuid_setup,@function +.align 4 +OPENSSL_cpuid_setup: + blr + +.globl OPENSSL_wipe_cpu +.type OPENSSL_wipe_cpu,@function +.align 4 +OPENSSL_wipe_cpu: + xor 0,0,0 + mr 3,1 + xor 4,4,4 + xor 5,5,5 + xor 6,6,6 + xor 7,7,7 + xor 8,8,8 + xor 9,9,9 + xor 10,10,10 + xor 11,11,11 + xor 12,12,12 + blr + +.globl OPENSSL_atomic_add +.type OPENSSL_atomic_add,@function +.align 4 +OPENSSL_atomic_add: +.Loop: lwarx 5,0,3 + add 0,4,5 + stwcx. 0,0,3 + bne- .Loop + mr 3,0 + blr + +.globl OPENSSL_rdtsc +.type OPENSSL_rdtsc,@function +.align 4 +OPENSSL_rdtsc: + mftb 3 + mftbu 4 + blr + +.globl OPENSSL_cleanse +.type OPENSSL_cleanse,@function +.align 4 +OPENSSL_cleanse: + cmplwi 4,7 + li 0,0 + bge .Lot +.Little: mtctr 4 + stb 0,0(3) + addi 3,3,1 + bc 25,0,$-8 + blr +.Lot: andi. 5,3,3 + beq .Laligned + stb 0,0(3) + subi 4,4,1 + addi 3,3,1 + b .Lot +.Laligned: + srwi 5,4,2 + mtctr 5 + stw 0,0(3) + addi 3,3,4 + bc 25,0,$-8 + andi. 4,4,3 + bne .Little + blr diff --git a/lib/libcrypto/arch/powerpc/sha1-ppc.S b/lib/libcrypto/arch/powerpc/sha1-ppc.S new file mode 100644 index 000000000000..82641aac6073 --- /dev/null +++ b/lib/libcrypto/arch/powerpc/sha1-ppc.S @@ -0,0 +1,1102 @@ +.text + +.globl sha1_block_data_order +.type sha1_block_data_order,@function +.align 4 +sha1_block_data_order: + mflr 0 + stwu 1,-160(1) + stw 0,24(1) + stw 15,28(1) + stw 16,32(1) + stw 17,36(1) + stw 18,40(1) + stw 19,44(1) + stw 20,48(1) + stw 21,52(1) + stw 22,56(1) + stw 23,60(1) + stw 24,64(1) + stw 25,68(1) + stw 26,72(1) + stw 27,76(1) + stw 28,80(1) + stw 29,84(1) + stw 30,88(1) + stw 31,92(1) + lwz 7,0(3) + lwz 8,4(3) + lwz 9,8(3) + lwz 10,12(3) + lwz 11,16(3) + andi. 0,4,3 + bne .Lunaligned +.Laligned: + mtctr 5 + bl .Lsha1_block_private +.Ldone: + lwz 0,24(1) + lwz 15,28(1) + lwz 16,32(1) + lwz 17,36(1) + lwz 18,40(1) + lwz 19,44(1) + lwz 20,48(1) + lwz 21,52(1) + lwz 22,56(1) + lwz 23,60(1) + lwz 24,64(1) + lwz 25,68(1) + lwz 26,72(1) + lwz 27,76(1) + lwz 28,80(1) + lwz 29,84(1) + lwz 30,88(1) + lwz 31,92(1) + mtlr 0 + addi 1,1,160 + blr +.align 4 +.Lunaligned: + subfic 6,4,4096 + andi. 6,6,4095 + srwi. 6,6,6 + beq .Lcross_page + .long 0x7c053040 + ble- .Laligned + mtctr 6 + subfc 5,6,5 + bl .Lsha1_block_private +.Lcross_page: + li 6,16 + mtctr 6 + addi 20,1,96 +.Lmemcpy: + lbz 16,0(4) + lbz 17,1(4) + lbz 18,2(4) + lbz 19,3(4) + addi 4,4,4 + stb 16,0(20) + stb 17,1(20) + stb 18,2(20) + stb 19,3(20) + addi 20,20,4 + bc 16,0,.Lmemcpy + + stw 4,20(1) + li 6,1 + addi 4,1,96 + mtctr 6 + bl .Lsha1_block_private + lwz 4,20(1) + addic. 5,5,-1 + bne- .Lunaligned + b .Ldone +.align 4 +.Lsha1_block_private: + lis 0,0x5a82 + ori 0,0,0x7999 + lwz 16,0(4) + lwz 17,4(4) + add 12,0,11 + rotlwi 11,7,5 + add 12,12,16 + and 15,9,8 + add 12,12,11 + andc 6,10,8 + rotlwi 8,8,30 + or 15,15,6 + add 12,12,15 + lwz 18,8(4) + add 11,0,10 + rotlwi 10,12,5 + add 11,11,17 + and 15,8,7 + add 11,11,10 + andc 6,9,7 + rotlwi 7,7,30 + or 15,15,6 + add 11,11,15 + lwz 19,12(4) + add 10,0,9 + rotlwi 9,11,5 + add 10,10,18 + and 15,7,12 + add 10,10,9 + andc 6,8,12 + rotlwi 12,12,30 + or 15,15,6 + add 10,10,15 + lwz 20,16(4) + add 9,0,8 + rotlwi 8,10,5 + add 9,9,19 + and 15,12,11 + add 9,9,8 + andc 6,7,11 + rotlwi 11,11,30 + or 15,15,6 + add 9,9,15 + lwz 21,20(4) + add 8,0,7 + rotlwi 7,9,5 + add 8,8,20 + and 15,11,10 + add 8,8,7 + andc 6,12,10 + rotlwi 10,10,30 + or 15,15,6 + add 8,8,15 + lwz 22,24(4) + add 7,0,12 + rotlwi 12,8,5 + add 7,7,21 + and 15,10,9 + add 7,7,12 + andc 6,11,9 + rotlwi 9,9,30 + or 15,15,6 + add 7,7,15 + lwz 23,28(4) + add 12,0,11 + rotlwi 11,7,5 + add 12,12,22 + and 15,9,8 + add 12,12,11 + andc 6,10,8 + rotlwi 8,8,30 + or 15,15,6 + add 12,12,15 + lwz 24,32(4) + add 11,0,10 + rotlwi 10,12,5 + add 11,11,23 + and 15,8,7 + add 11,11,10 + andc 6,9,7 + rotlwi 7,7,30 + or 15,15,6 + add 11,11,15 + lwz 25,36(4) + add 10,0,9 + rotlwi 9,11,5 + add 10,10,24 + and 15,7,12 + add 10,10,9 + andc 6,8,12 + rotlwi 12,12,30 + or 15,15,6 + add 10,10,15 + lwz 26,40(4) + add 9,0,8 + rotlwi 8,10,5 + add 9,9,25 + and 15,12,11 + add 9,9,8 + andc 6,7,11 + rotlwi 11,11,30 + or 15,15,6 + add 9,9,15 + lwz 27,44(4) + add 8,0,7 + rotlwi 7,9,5 + add 8,8,26 + and 15,11,10 + add 8,8,7 + andc 6,12,10 + rotlwi 10,10,30 + or 15,15,6 + add 8,8,15 + lwz 28,48(4) + add 7,0,12 + rotlwi 12,8,5 + add 7,7,27 + and 15,10,9 + add 7,7,12 + andc 6,11,9 + rotlwi 9,9,30 + or 15,15,6 + add 7,7,15 + lwz 29,52(4) + add 12,0,11 + rotlwi 11,7,5 + add 12,12,28 + and 15,9,8 + add 12,12,11 + andc 6,10,8 + rotlwi 8,8,30 + or 15,15,6 + add 12,12,15 + lwz 30,56(4) + add 11,0,10 + rotlwi 10,12,5 + add 11,11,29 + and 15,8,7 + add 11,11,10 + andc 6,9,7 + rotlwi 7,7,30 + or 15,15,6 + add 11,11,15 + lwz 31,60(4) + add 10,0,9 + rotlwi 9,11,5 + add 10,10,30 + and 15,7,12 + add 10,10,9 + andc 6,8,12 + rotlwi 12,12,30 + or 15,15,6 + add 10,10,15 + add 9,0,8 + rotlwi 8,10,5 + xor 16,16,18 + add 9,9,31 + and 15,12,11 + xor 16,16,24 + add 9,9,8 + andc 6,7,11 + rotlwi 11,11,30 + or 15,15,6 + xor 16,16,29 + add 9,9,15 + rotlwi 16,16,1 + add 8,0,7 + rotlwi 7,9,5 + xor 17,17,19 + add 8,8,16 + and 15,11,10 + xor 17,17,25 + add 8,8,7 + andc 6,12,10 + rotlwi 10,10,30 + or 15,15,6 + xor 17,17,30 + add 8,8,15 + rotlwi 17,17,1 + add 7,0,12 + rotlwi 12,8,5 + xor 18,18,20 + add 7,7,17 + and 15,10,9 + xor 18,18,26 + add 7,7,12 + andc 6,11,9 + rotlwi 9,9,30 + or 15,15,6 + xor 18,18,31 + add 7,7,15 + rotlwi 18,18,1 + add 12,0,11 + rotlwi 11,7,5 + xor 19,19,21 + add 12,12,18 + and 15,9,8 + xor 19,19,27 + add 12,12,11 + andc 6,10,8 + rotlwi 8,8,30 + or 15,15,6 + xor 19,19,16 + add 12,12,15 + rotlwi 19,19,1 + add 11,0,10 + rotlwi 10,12,5 + xor 20,20,22 + add 11,11,19 + and 15,8,7 + xor 20,20,28 + add 11,11,10 + andc 6,9,7 + rotlwi 7,7,30 + or 15,15,6 + xor 20,20,17 + add 11,11,15 + rotlwi 20,20,1 + lis 0,0x6ed9 + ori 0,0,0xeba1 + add 10,0,9 + rotlwi 9,11,5 + xor 21,21,23 + add 10,10,20 + xor 15,12,7 + xor 21,21,29 + add 10,10,9 + rotlwi 12,12,30 + xor 15,15,8 + xor 21,21,18 + add 10,10,15 + rotlwi 21,21,1 + add 9,0,8 + rotlwi 8,10,5 + xor 22,22,24 + add 9,9,21 + xor 15,11,12 + xor 22,22,30 + add 9,9,8 + rotlwi 11,11,30 + xor 15,15,7 + xor 22,22,19 + add 9,9,15 + rotlwi 22,22,1 + add 8,0,7 + rotlwi 7,9,5 + xor 23,23,25 + add 8,8,22 + xor 15,10,11 + xor 23,23,31 + add 8,8,7 + rotlwi 10,10,30 + xor 15,15,12 + xor 23,23,20 + add 8,8,15 + rotlwi 23,23,1 + add 7,0,12 + rotlwi 12,8,5 + xor 24,24,26 + add 7,7,23 + xor 15,9,10 + xor 24,24,16 + add 7,7,12 + rotlwi 9,9,30 + xor 15,15,11 + xor 24,24,21 + add 7,7,15 + rotlwi 24,24,1 + add 12,0,11 + rotlwi 11,7,5 + xor 25,25,27 + add 12,12,24 + xor 15,8,9 + xor 25,25,17 + add 12,12,11 + rotlwi 8,8,30 + xor 15,15,10 + xor 25,25,22 + add 12,12,15 + rotlwi 25,25,1 + add 11,0,10 + rotlwi 10,12,5 + xor 26,26,28 + add 11,11,25 + xor 15,7,8 + xor 26,26,18 + add 11,11,10 + rotlwi 7,7,30 + xor 15,15,9 + xor 26,26,23 + add 11,11,15 + rotlwi 26,26,1 + add 10,0,9 + rotlwi 9,11,5 + xor 27,27,29 + add 10,10,26 + xor 15,12,7 + xor 27,27,19 + add 10,10,9 + rotlwi 12,12,30 + xor 15,15,8 + xor 27,27,24 + add 10,10,15 + rotlwi 27,27,1 + add 9,0,8 + rotlwi 8,10,5 + xor 28,28,30 + add 9,9,27 + xor 15,11,12 + xor 28,28,20 + add 9,9,8 + rotlwi 11,11,30 + xor 15,15,7 + xor 28,28,25 + add 9,9,15 + rotlwi 28,28,1 + add 8,0,7 + rotlwi 7,9,5 + xor 29,29,31 + add 8,8,28 + xor 15,10,11 + xor 29,29,21 + add 8,8,7 + rotlwi 10,10,30 + xor 15,15,12 + xor 29,29,26 + add 8,8,15 + rotlwi 29,29,1 + add 7,0,12 + rotlwi 12,8,5 + xor 30,30,16 + add 7,7,29 + xor 15,9,10 + xor 30,30,22 + add 7,7,12 + rotlwi 9,9,30 + xor 15,15,11 + xor 30,30,27 + add 7,7,15 + rotlwi 30,30,1 + add 12,0,11 + rotlwi 11,7,5 + xor 31,31,17 + add 12,12,30 + xor 15,8,9 + xor 31,31,23 + add 12,12,11 + rotlwi 8,8,30 + xor 15,15,10 + xor 31,31,28 + add 12,12,15 + rotlwi 31,31,1 + add 11,0,10 + rotlwi 10,12,5 + xor 16,16,18 + add 11,11,31 + xor 15,7,8 + xor 16,16,24 + add 11,11,10 + rotlwi 7,7,30 + xor 15,15,9 + xor 16,16,29 + add 11,11,15 + rotlwi 16,16,1 + add 10,0,9 + rotlwi 9,11,5 + xor 17,17,19 + add 10,10,16 + xor 15,12,7 + xor 17,17,25 + add 10,10,9 + rotlwi 12,12,30 + xor 15,15,8 + xor 17,17,30 + add 10,10,15 + rotlwi 17,17,1 + add 9,0,8 + rotlwi 8,10,5 + xor 18,18,20 + add 9,9,17 + xor 15,11,12 + xor 18,18,26 + add 9,9,8 + rotlwi 11,11,30 + xor 15,15,7 + xor 18,18,31 + add 9,9,15 + rotlwi 18,18,1 + add 8,0,7 + rotlwi 7,9,5 + xor 19,19,21 + add 8,8,18 + xor 15,10,11 + xor 19,19,27 + add 8,8,7 + rotlwi 10,10,30 + xor 15,15,12 + xor 19,19,16 + add 8,8,15 + rotlwi 19,19,1 + add 7,0,12 + rotlwi 12,8,5 + xor 20,20,22 + add 7,7,19 + xor 15,9,10 + xor 20,20,28 + add 7,7,12 + rotlwi 9,9,30 + xor 15,15,11 + xor 20,20,17 + add 7,7,15 + rotlwi 20,20,1 + add 12,0,11 + rotlwi 11,7,5 + xor 21,21,23 + add 12,12,20 + xor 15,8,9 + xor 21,21,29 + add 12,12,11 + rotlwi 8,8,30 + xor 15,15,10 + xor 21,21,18 + add 12,12,15 + rotlwi 21,21,1 + add 11,0,10 + rotlwi 10,12,5 + xor 22,22,24 + add 11,11,21 + xor 15,7,8 + xor 22,22,30 + add 11,11,10 + rotlwi 7,7,30 + xor 15,15,9 + xor 22,22,19 + add 11,11,15 + rotlwi 22,22,1 + add 10,0,9 + rotlwi 9,11,5 + xor 23,23,25 + add 10,10,22 + xor 15,12,7 + xor 23,23,31 + add 10,10,9 + rotlwi 12,12,30 + xor 15,15,8 + xor 23,23,20 + add 10,10,15 + rotlwi 23,23,1 + add 9,0,8 + rotlwi 8,10,5 + xor 24,24,26 + add 9,9,23 + xor 15,11,12 + xor 24,24,16 + add 9,9,8 + rotlwi 11,11,30 + xor 15,15,7 + xor 24,24,21 + add 9,9,15 + rotlwi 24,24,1 + lis 0,0x8f1b + ori 0,0,0xbcdc + add 8,0,7 + rotlwi 7,9,5 + xor 25,25,27 + add 8,8,24 + and 15,10,11 + xor 25,25,17 + add 8,8,7 + or 6,10,11 + rotlwi 10,10,30 + xor 25,25,22 + and 6,6,12 + or 15,15,6 + rotlwi 25,25,1 + add 8,8,15 + add 7,0,12 + rotlwi 12,8,5 + xor 26,26,28 + add 7,7,25 + and 15,9,10 + xor 26,26,18 + add 7,7,12 + or 6,9,10 + rotlwi 9,9,30 + xor 26,26,23 + and 6,6,11 + or 15,15,6 + rotlwi 26,26,1 + add 7,7,15 + add 12,0,11 + rotlwi 11,7,5 + xor 27,27,29 + add 12,12,26 + and 15,8,9 + xor 27,27,19 + add 12,12,11 + or 6,8,9 + rotlwi 8,8,30 + xor 27,27,24 + and 6,6,10 + or 15,15,6 + rotlwi 27,27,1 + add 12,12,15 + add 11,0,10 + rotlwi 10,12,5 + xor 28,28,30 + add 11,11,27 + and 15,7,8 + xor 28,28,20 + add 11,11,10 + or 6,7,8 + rotlwi 7,7,30 + xor 28,28,25 + and 6,6,9 + or 15,15,6 + rotlwi 28,28,1 + add 11,11,15 + add 10,0,9 + rotlwi 9,11,5 + xor 29,29,31 + add 10,10,28 + and 15,12,7 + xor 29,29,21 + add 10,10,9 + or 6,12,7 + rotlwi 12,12,30 + xor 29,29,26 + and 6,6,8 + or 15,15,6 + rotlwi 29,29,1 + add 10,10,15 + add 9,0,8 + rotlwi 8,10,5 + xor 30,30,16 + add 9,9,29 + and 15,11,12 + xor 30,30,22 + add 9,9,8 + or 6,11,12 + rotlwi 11,11,30 + xor 30,30,27 + and 6,6,7 + or 15,15,6 + rotlwi 30,30,1 + add 9,9,15 + add 8,0,7 + rotlwi 7,9,5 + xor 31,31,17 + add 8,8,30 + and 15,10,11 + xor 31,31,23 + add 8,8,7 + or 6,10,11 + rotlwi 10,10,30 + xor 31,31,28 + and 6,6,12 + or 15,15,6 + rotlwi 31,31,1 + add 8,8,15 + add 7,0,12 + rotlwi 12,8,5 + xor 16,16,18 + add 7,7,31 + and 15,9,10 + xor 16,16,24 + add 7,7,12 + or 6,9,10 + rotlwi 9,9,30 + xor 16,16,29 + and 6,6,11 + or 15,15,6 + rotlwi 16,16,1 + add 7,7,15 + add 12,0,11 + rotlwi 11,7,5 + xor 17,17,19 + add 12,12,16 + and 15,8,9 + xor 17,17,25 + add 12,12,11 + or 6,8,9 + rotlwi 8,8,30 + xor 17,17,30 + and 6,6,10 + or 15,15,6 + rotlwi 17,17,1 + add 12,12,15 + add 11,0,10 + rotlwi 10,12,5 + xor 18,18,20 + add 11,11,17 + and 15,7,8 + xor 18,18,26 + add 11,11,10 + or 6,7,8 + rotlwi 7,7,30 + xor 18,18,31 + and 6,6,9 + or 15,15,6 + rotlwi 18,18,1 + add 11,11,15 + add 10,0,9 + rotlwi 9,11,5 + xor 19,19,21 + add 10,10,18 + and 15,12,7 + xor 19,19,27 + add 10,10,9 + or 6,12,7 + rotlwi 12,12,30 + xor 19,19,16 + and 6,6,8 + or 15,15,6 + rotlwi 19,19,1 + add 10,10,15 + add 9,0,8 + rotlwi 8,10,5 + xor 20,20,22 + add 9,9,19 + and 15,11,12 + xor 20,20,28 + add 9,9,8 + or 6,11,12 + rotlwi 11,11,30 + xor 20,20,17 + and 6,6,7 + or 15,15,6 + rotlwi 20,20,1 + add 9,9,15 + add 8,0,7 + rotlwi 7,9,5 + xor 21,21,23 + add 8,8,20 + and 15,10,11 + xor 21,21,29 + add 8,8,7 + or 6,10,11 + rotlwi 10,10,30 + xor 21,21,18 + and 6,6,12 + or 15,15,6 + rotlwi 21,21,1 + add 8,8,15 + add 7,0,12 + rotlwi 12,8,5 + xor 22,22,24 + add 7,7,21 + and 15,9,10 + xor 22,22,30 + add 7,7,12 + or 6,9,10 + rotlwi 9,9,30 + xor 22,22,19 + and 6,6,11 + or 15,15,6 + rotlwi 22,22,1 + add 7,7,15 + add 12,0,11 + rotlwi 11,7,5 + xor 23,23,25 + add 12,12,22 + and 15,8,9 + xor 23,23,31 + add 12,12,11 + or 6,8,9 + rotlwi 8,8,30 + xor 23,23,20 + and 6,6,10 + or 15,15,6 + rotlwi 23,23,1 + add 12,12,15 + add 11,0,10 + rotlwi 10,12,5 + xor 24,24,26 + add 11,11,23 + and 15,7,8 + xor 24,24,16 + add 11,11,10 + or 6,7,8 + rotlwi 7,7,30 + xor 24,24,21 + and 6,6,9 + or 15,15,6 + rotlwi 24,24,1 + add 11,11,15 + add 10,0,9 + rotlwi 9,11,5 + xor 25,25,27 + add 10,10,24 + and 15,12,7 + xor 25,25,17 + add 10,10,9 + or 6,12,7 + rotlwi 12,12,30 + xor 25,25,22 + and 6,6,8 + or 15,15,6 + rotlwi 25,25,1 + add 10,10,15 + add 9,0,8 + rotlwi 8,10,5 + xor 26,26,28 + add 9,9,25 + and 15,11,12 + xor 26,26,18 + add 9,9,8 + or 6,11,12 + rotlwi 11,11,30 + xor 26,26,23 + and 6,6,7 + or 15,15,6 + rotlwi 26,26,1 + add 9,9,15 + add 8,0,7 + rotlwi 7,9,5 + xor 27,27,29 + add 8,8,26 + and 15,10,11 + xor 27,27,19 + add 8,8,7 + or 6,10,11 + rotlwi 10,10,30 + xor 27,27,24 + and 6,6,12 + or 15,15,6 + rotlwi 27,27,1 + add 8,8,15 + add 7,0,12 + rotlwi 12,8,5 + xor 28,28,30 + add 7,7,27 + and 15,9,10 + xor 28,28,20 + add 7,7,12 + or 6,9,10 + rotlwi 9,9,30 + xor 28,28,25 + and 6,6,11 + or 15,15,6 + rotlwi 28,28,1 + add 7,7,15 + lis 0,0xca62 + ori 0,0,0xc1d6 + add 12,0,11 + rotlwi 11,7,5 + xor 29,29,31 + add 12,12,28 + xor 15,8,9 + xor 29,29,21 + add 12,12,11 + rotlwi 8,8,30 + xor 15,15,10 + xor 29,29,26 + add 12,12,15 + rotlwi 29,29,1 + add 11,0,10 + rotlwi 10,12,5 + xor 30,30,16 + add 11,11,29 + xor 15,7,8 + xor 30,30,22 + add 11,11,10 + rotlwi 7,7,30 + xor 15,15,9 + xor 30,30,27 + add 11,11,15 + rotlwi 30,30,1 + add 10,0,9 + rotlwi 9,11,5 + xor 31,31,17 + add 10,10,30 + xor 15,12,7 + xor 31,31,23 + add 10,10,9 + rotlwi 12,12,30 + xor 15,15,8 + xor 31,31,28 + add 10,10,15 + rotlwi 31,31,1 + add 9,0,8 + rotlwi 8,10,5 + xor 16,16,18 + add 9,9,31 + xor 15,11,12 + xor 16,16,24 + add 9,9,8 + rotlwi 11,11,30 + xor 15,15,7 + xor 16,16,29 + add 9,9,15 + rotlwi 16,16,1 + add 8,0,7 + rotlwi 7,9,5 + xor 17,17,19 + add 8,8,16 + xor 15,10,11 + xor 17,17,25 + add 8,8,7 + rotlwi 10,10,30 + xor 15,15,12 + xor 17,17,30 + add 8,8,15 + rotlwi 17,17,1 + add 7,0,12 + rotlwi 12,8,5 + xor 18,18,20 + add 7,7,17 + xor 15,9,10 + xor 18,18,26 + add 7,7,12 + rotlwi 9,9,30 + xor 15,15,11 + xor 18,18,31 + add 7,7,15 + rotlwi 18,18,1 + add 12,0,11 + rotlwi 11,7,5 + xor 19,19,21 + add 12,12,18 + xor 15,8,9 + xor 19,19,27 + add 12,12,11 + rotlwi 8,8,30 + xor 15,15,10 + xor 19,19,16 + add 12,12,15 + rotlwi 19,19,1 + add 11,0,10 + rotlwi 10,12,5 + xor 20,20,22 + add 11,11,19 + xor 15,7,8 + xor 20,20,28 + add 11,11,10 + rotlwi 7,7,30 + xor 15,15,9 + xor 20,20,17 + add 11,11,15 + rotlwi 20,20,1 + add 10,0,9 + rotlwi 9,11,5 + xor 21,21,23 + add 10,10,20 + xor 15,12,7 + xor 21,21,29 + add 10,10,9 + rotlwi 12,12,30 + xor 15,15,8 + xor 21,21,18 + add 10,10,15 + rotlwi 21,21,1 + add 9,0,8 + rotlwi 8,10,5 + xor 22,22,24 + add 9,9,21 + xor 15,11,12 + xor 22,22,30 + add 9,9,8 + rotlwi 11,11,30 + xor 15,15,7 + xor 22,22,19 + add 9,9,15 + rotlwi 22,22,1 + add 8,0,7 + rotlwi 7,9,5 + xor 23,23,25 + add 8,8,22 + xor 15,10,11 + xor 23,23,31 + add 8,8,7 + rotlwi 10,10,30 + xor 15,15,12 + xor 23,23,20 + add 8,8,15 + rotlwi 23,23,1 + add 7,0,12 + rotlwi 12,8,5 + xor 24,24,26 + add 7,7,23 + xor 15,9,10 + xor 24,24,16 + add 7,7,12 + rotlwi 9,9,30 + xor 15,15,11 + xor 24,24,21 + add 7,7,15 + rotlwi 24,24,1 + add 12,0,11 + rotlwi 11,7,5 + xor 25,25,27 + add 12,12,24 + xor 15,8,9 + xor 25,25,17 + add 12,12,11 + rotlwi 8,8,30 + xor 15,15,10 + xor 25,25,22 + add 12,12,15 + rotlwi 25,25,1 + add 11,0,10 + rotlwi 10,12,5 + xor 26,26,28 + add 11,11,25 + xor 15,7,8 + xor 26,26,18 + add 11,11,10 + rotlwi 7,7,30 + xor 15,15,9 + xor 26,26,23 + add 11,11,15 + rotlwi 26,26,1 + add 10,0,9 + rotlwi 9,11,5 + xor 27,27,29 + add 10,10,26 + xor 15,12,7 + xor 27,27,19 + add 10,10,9 + rotlwi 12,12,30 + xor 15,15,8 + xor 27,27,24 + add 10,10,15 + rotlwi 27,27,1 + add 9,0,8 + rotlwi 8,10,5 + xor 28,28,30 + add 9,9,27 + xor 15,11,12 + xor 28,28,20 + add 9,9,8 + rotlwi 11,11,30 + xor 15,15,7 + xor 28,28,25 + add 9,9,15 + rotlwi 28,28,1 + add 8,0,7 + rotlwi 7,9,5 + xor 29,29,31 + add 8,8,28 + xor 15,10,11 + xor 29,29,21 + add 8,8,7 + rotlwi 10,10,30 + xor 15,15,12 + xor 29,29,26 + add 8,8,15 + rotlwi 29,29,1 + add 7,0,12 + rotlwi 12,8,5 + xor 30,30,16 + add 7,7,29 + xor 15,9,10 + xor 30,30,22 + add 7,7,12 + rotlwi 9,9,30 + xor 15,15,11 + xor 30,30,27 + add 7,7,15 + rotlwi 30,30,1 + add 12,0,11 + rotlwi 11,7,5 + xor 31,31,17 + add 12,12,30 + xor 15,8,9 + xor 31,31,23 + add 12,12,11 + rotlwi 8,8,30 + xor 15,15,10 + xor 31,31,28 + add 12,12,15 + rotlwi 31,31,1 + add 11,0,10 + rotlwi 10,12,5 + lwz 16,0(3) + add 11,11,31 + xor 15,7,8 + lwz 17,4(3) + add 11,11,10 + rotlwi 7,7,30 + lwz 18,8(3) + xor 15,15,9 + lwz 19,12(3) + add 11,11,15 + lwz 20,16(3) + add 16,16,11 + add 17,17,12 + add 18,18,7 + add 19,19,8 + add 20,20,9 + stw 16,0(3) + mr 7,16 + stw 17,4(3) + mr 8,17 + stw 18,8(3) + mr 9,18 + stw 19,12(3) + mr 10,19 + stw 20,16(3) + mr 11,20 + addi 4,4,64 + bc 25,0,.Lsha1_block_private + blr +.byte 83,72,65,49,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,80,80,67,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,102,121,46,99,104,97,108,109,101,114,115,46,115,101,62,0 +.align 2 diff --git a/lib/libcrypto/arch/powerpc/sha512-ppc.S b/lib/libcrypto/arch/powerpc/sha512-ppc.S new file mode 100644 index 000000000000..93ada54c3148 --- /dev/null +++ b/lib/libcrypto/arch/powerpc/sha512-ppc.S @@ -0,0 +1,1319 @@ +.text + +.globl sha256_block_data_order +.type sha256_block_data_order,@function +.align 6 +sha256_block_data_order: + mflr 0 + stwu 1,-192(1) + slwi 5,5,6 + + stw 3,40(1) + + stw 0,44(1) + stw 2,48(1) + stw 13,52(1) + stw 14,56(1) + stw 15,60(1) + stw 16,64(1) + stw 17,68(1) + stw 18,72(1) + stw 19,76(1) + stw 20,80(1) + stw 21,84(1) + stw 22,88(1) + stw 23,92(1) + stw 24,96(1) + stw 25,100(1) + stw 26,104(1) + stw 27,108(1) + stw 28,112(1) + stw 29,116(1) + stw 30,120(1) + stw 31,124(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 13,20(3) + lwz 14,24(3) + lwz 15,28(3) + + b .LPICmeup +.LPICedup: + andi. 0,31,3 + bne .Lunaligned +.Laligned: + add 5,31,5 + stw 5,32(1) + stw 31,36(1) + bl .Lsha2_block_private +.Ldone: + lwz 0,44(1) + lwz 2,48(1) + lwz 13,52(1) + lwz 14,56(1) + lwz 15,60(1) + lwz 16,64(1) + lwz 17,68(1) + lwz 18,72(1) + lwz 19,76(1) + lwz 20,80(1) + lwz 21,84(1) + lwz 22,88(1) + lwz 23,92(1) + lwz 24,96(1) + lwz 25,100(1) + lwz 26,104(1) + lwz 27,108(1) + lwz 28,112(1) + lwz 29,116(1) + lwz 30,120(1) + lwz 31,124(1) + mtlr 0 + addi 1,1,192 + blr +.align 4 +.Lunaligned: + subfic 6,31,4096 + andi. 6,6,4032 + beq .Lcross_page + .long 0x7c053040 + ble- .Laligned + subfc 5,6,5 + add 6,31,6 + stw 5,28(1) + stw 6,32(1) + stw 31,36(1) + bl .Lsha2_block_private + + lwz 5,28(1) +.Lcross_page: + li 6,16 + mtctr 6 + addi 20,1,128 +.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 + bc 16,0,.Lmemcpy + + stw 31,24(1) + addi 6,1,192 + addi 31,1,128 + stw 5,28(1) + stw 6,32(1) + stw 31,36(1) + bl .Lsha2_block_private + lwz 31,24(1) + lwz 5,28(1) + addic. 5,5,-64 + bne- .Lunaligned + b .Ldone +.align 4 +.Lsha2_block_private: + lwz 16,0(31) + lwz 0,0(7) + rotrwi 3,12,6 + rotrwi 4,12,11 + and 5,13,12 + andc 6,14,12 + add 0,0,15 + xor 3,3,4 + rotrwi 4,4,14 + or 5,5,6 + add 0,0,16 + xor 3,3,4 + add 0,0,5 + add 0,0,3 + + rotrwi 3,8,2 + rotrwi 4,8,13 + and 5,8,9 + and 6,8,10 + xor 3,3,4 + rotrwi 4,4,9 + xor 5,5,6 + and 6,9,10 + xor 3,3,4 + add 11,11,0 + xor 5,5,6 + add 15,0,3 + add 15,15,5 + + lwz 17,4(31) + lwz 0,4(7) + rotrwi 3,11,6 + rotrwi 4,11,11 + and 5,12,11 + andc 6,13,11 + add 0,0,14 + xor 3,3,4 + rotrwi 4,4,14 + or 5,5,6 + add 0,0,17 + xor 3,3,4 + add 0,0,5 + add 0,0,3 + + rotrwi 3,15,2 + rotrwi 4,15,13 + and 5,15,8 + and 6,15,9 + xor 3,3,4 + rotrwi 4,4,9 + xor 5,5,6 + and 6,8,9 + xor 3,3,4 + add 10,10,0 + xor 5,5,6 + add 14,0,3 + add 14,14,5 + + lwz 18,8(31) + lwz 0,8(7) + rotrwi 3,10,6 + rotrwi 4,10,11 + and 5,11,10 + andc 6,12,10 + add 0,0,13 + xor 3,3,4 + rotrwi 4,4,14 + or 5,5,6 + add 0,0,18 + xor 3,3,4 + add 0,0,5 + add 0,0,3 + + rotrwi 3,14,2 + rotrwi 4,14,13 + and 5,14,15 + and 6,14,8 + xor 3,3,4 + rotrwi 4,4,9 + xor 5,5,6 + and 6,15,8 + xor 3,3,4 + add 9,9,0 + xor 5,5,6 + add 13,0,3 + add 13,13,5 + + lwz 19,12(31) + lwz 0,12(7) + rotrwi 3,9,6 + rotrwi 4,9,11 + and 5,10,9 + andc 6,11,9 + add 0,0,12 + xor 3,3,4 + rotrwi 4,4,14 + or 5,5,6 + add 0,0,19 + xor 3,3,4 + add 0,0,5 + add 0,0,3 + + rotrwi 3,13,2 + rotrwi 4,13,13 + and 5,13,14 + and 6,13,15 + xor 3,3,4 + rotrwi 4,4,9 + xor 5,5,6 + and 6,14,15 + xor 3,3,4 + add 8,8,0 + xor 5,5,6 + add 12,0,3 + add 12,12,5 + + lwz 20,16(31) + lwz 0,16(7) + rotrwi 3,8,6 + rotrwi 4,8,11 + and 5,9,8 + andc 6,10,8 + add 0,0,11 + xor 3,3,4 + rotrwi 4,4,14 + or 5,5,6 + add 0,0,20 + xor 3,3,4 + add 0,0,5 + add 0,0,3 + + rotrwi 3,12,2 + rotrwi 4,12,13 + and 5,12,13 + and 6,12,14 + xor 3,3,4 + rotrwi 4,4,9 + xor 5,5,6 + and 6,13,14 + xor 3,3,4 + add 15,15,0 + xor 5,5,6 + add 11,0,3 + add 11,11,5 + + lwz 21,20(31) + lwz 0,20(7) + rotrwi 3,15,6 + rotrwi 4,15,11 + and 5,8,15 + andc 6,9,15 + add 0,0,10 + xor 3,3,4 + rotrwi 4,4,14 + or 5,5,6 + add 0,0,21 + xor 3,3,4 + add 0,0,5 + add 0,0,3 + + rotrwi 3,11,2 + rotrwi 4,11,13 + and 5,11,12 + and 6,11,13 + xor 3,3,4 + rotrwi 4,4,9 + xor 5,5,6 + and 6,12,13 + xor 3,3,4 + add 14,14,0 + xor 5,5,6 + add 10,0,3 + add 10,10,5 + + lwz 22,24(31) + lwz 0,24(7) + rotrwi 3,14,6 + rotrwi 4,14,11 + and 5,15,14 + andc 6,8,14 + add 0,0,9 + xor 3,3,4 + rotrwi 4,4,14 + or 5,5,6 + add 0,0,22 + xor 3,3,4 + add 0,0,5 + add 0,0,3 + + rotrwi 3,10,2 + rotrwi 4,10,13 + and 5,10,11 + and 6,10,12 + xor 3,3,4 + rotrwi 4,4,9 + xor 5,5,6 + and 6,11,12 + xor 3,3,4 + add 13,13,0 + xor 5,5,6 + add 9,0,3 + add 9,9,5 + + lwz 23,28(31) + lwz 0,28(7) + rotrwi 3,13,6 + rotrwi 4,13,11 + and 5,14,13 + andc 6,15,13 + add 0,0,8 + xor 3,3,4 + rotrwi 4,4,14 + or 5,5,6 + add 0,0,23 + xor 3,3,4 + add 0,0,5 + add 0,0,3 + + rotrwi 3,9,2 + rotrwi 4,9,13 + and 5,9,10 + and 6,9,11 + xor 3,3,4 + rotrwi 4,4,9 + xor 5,5,6 + and 6,10,11 + xor 3,3,4 + add 12,12,0 + xor 5,5,6 + add 8,0,3 + add 8,8,5 + + lwz 24,32(31) + lwz 0,32(7) + rotrwi 3,12,6 + rotrwi 4,12,11 + and 5,13,12 + andc 6,14,12 + add 0,0,15 + xor 3,3,4 + rotrwi 4,4,14 + or 5,5,6 + add 0,0,24 + xor 3,3,4 + add 0,0,5 + add 0,0,3 + + rotrwi 3,8,2 + rotrwi 4,8,13 + and 5,8,9 + and 6,8,10 + xor 3,3,4 + rotrwi 4,4,9 + xor 5,5,6 + and 6,9,10 + xor 3,3,4 + add 11,11,0 + xor 5,5,6 + add 15,0,3 + add 15,15,5 + + lwz 25,36(31) + lwz 0,36(7) + rotrwi 3,11,6 + rotrwi 4,11,11 + and 5,12,11 + andc 6,13,11 + add 0,0,14 + xor 3,3,4 + rotrwi 4,4,14 + or 5,5,6 + add 0,0,25 + xor 3,3,4 + add 0,0,5 + add 0,0,3 + + rotrwi 3,15,2 + rotrwi 4,15,13 + and 5,15,8 + and 6,15,9 + xor 3,3,4 + rotrwi 4,4,9 + xor 5,5,6 + and 6,8,9 + xor 3,3,4 + add 10,10,0 + xor 5,5,6 + add 14,0,3 + add 14,14,5 + + lwz 26,40(31) + lwz 0,40(7) + rotrwi 3,10,6 + rotrwi 4,10,11 + and 5,11,10 + andc 6,12,10 + add 0,0,13 + xor 3,3,4 + rotrwi 4,4,14 + or 5,5,6 + add 0,0,26 + xor 3,3,4 + add 0,0,5 + add 0,0,3 + + rotrwi 3,14,2 + rotrwi 4,14,13 + and 5,14,15 + and 6,14,8 + xor 3,3,4 + rotrwi 4,4,9 + xor 5,5,6 + and 6,15,8 + xor 3,3,4 + add 9,9,0 + xor 5,5,6 + add 13,0,3 + add 13,13,5 + + lwz 27,44(31) + lwz 0,44(7) + rotrwi 3,9,6 + rotrwi 4,9,11 + and 5,10,9 + andc 6,11,9 + add 0,0,12 + xor 3,3,4 + rotrwi 4,4,14 + or 5,5,6 + add 0,0,27 + xor 3,3,4 + add 0,0,5 + add 0,0,3 + + rotrwi 3,13,2 + rotrwi 4,13,13 + and 5,13,14 + and 6,13,15 + xor 3,3,4 + rotrwi 4,4,9 + xor 5,5,6 + and 6,14,15 + xor 3,3,4 + add 8,8,0 + xor 5,5,6 + add 12,0,3 + add 12,12,5 + + lwz 28,48(31) + lwz 0,48(7) + rotrwi 3,8,6 + rotrwi 4,8,11 + and 5,9,8 + andc 6,10,8 + add 0,0,11 + xor 3,3,4 + rotrwi 4,4,14 + or 5,5,6 + add 0,0,28 + xor 3,3,4 + add 0,0,5 + add 0,0,3 + + rotrwi 3,12,2 + rotrwi 4,12,13 + and 5,12,13 + and 6,12,14 + xor 3,3,4 + rotrwi 4,4,9 + xor 5,5,6 + and 6,13,14 + xor 3,3,4 + add 15,15,0 + xor 5,5,6 + add 11,0,3 + add 11,11,5 + + lwz 29,52(31) + lwz 0,52(7) + rotrwi 3,15,6 + rotrwi 4,15,11 + and 5,8,15 + andc 6,9,15 + add 0,0,10 + xor 3,3,4 + rotrwi 4,4,14 + or 5,5,6 + add 0,0,29 + xor 3,3,4 + add 0,0,5 + add 0,0,3 + + rotrwi 3,11,2 + rotrwi 4,11,13 + and 5,11,12 + and 6,11,13 + xor 3,3,4 + rotrwi 4,4,9 + xor 5,5,6 + and 6,12,13 + xor 3,3,4 + add 14,14,0 + xor 5,5,6 + add 10,0,3 + add 10,10,5 + + lwz 30,56(31) + lwz 0,56(7) + rotrwi 3,14,6 + rotrwi 4,14,11 + and 5,15,14 + andc 6,8,14 + add 0,0,9 + xor 3,3,4 + rotrwi 4,4,14 + or 5,5,6 + add 0,0,30 + xor 3,3,4 + add 0,0,5 + add 0,0,3 + + rotrwi 3,10,2 + rotrwi 4,10,13 + and 5,10,11 + and 6,10,12 + xor 3,3,4 + rotrwi 4,4,9 + xor 5,5,6 + and 6,11,12 + xor 3,3,4 + add 13,13,0 + xor 5,5,6 + add 9,0,3 + add 9,9,5 + + lwz 31,60(31) + lwz 0,60(7) + rotrwi 3,13,6 + rotrwi 4,13,11 + and 5,14,13 + andc 6,15,13 + add 0,0,8 + xor 3,3,4 + rotrwi 4,4,14 + or 5,5,6 + add 0,0,31 + xor 3,3,4 + add 0,0,5 + add 0,0,3 + + rotrwi 3,9,2 + rotrwi 4,9,13 + and 5,9,10 + and 6,9,11 + xor 3,3,4 + rotrwi 4,4,9 + xor 5,5,6 + and 6,10,11 + xor 3,3,4 + add 12,12,0 + xor 5,5,6 + add 8,0,3 + add 8,8,5 + + li 0,3 + mtctr 0 +.align 4 +.Lrounds: + addi 7,7,64 + rotrwi 3,17,7 + rotrwi 4,17,18 + rotrwi 5,30,17 + rotrwi 6,30,19 + xor 3,3,4 + srwi 4,17,3 + xor 5,5,6 + srwi 6,30,10 + add 16,16,25 + xor 3,3,4 + xor 5,5,6 + add 16,16,3 + add 16,16,5 + lwz 0,0(7) + rotrwi 3,12,6 + rotrwi 4,12,11 + and 5,13,12 + andc 6,14,12 + add 0,0,15 + xor 3,3,4 + rotrwi 4,4,14 + or 5,5,6 + add 0,0,16 + xor 3,3,4 + add 0,0,5 + add 0,0,3 + + rotrwi 3,8,2 + rotrwi 4,8,13 + and 5,8,9 + and 6,8,10 + xor 3,3,4 + rotrwi 4,4,9 + xor 5,5,6 + and 6,9,10 + xor 3,3,4 + add 11,11,0 + xor 5,5,6 + add 15,0,3 + add 15,15,5 + + rotrwi 3,18,7 + rotrwi 4,18,18 + rotrwi 5,31,17 + rotrwi 6,31,19 + xor 3,3,4 + srwi 4,18,3 + xor 5,5,6 + srwi 6,31,10 + add 17,17,26 + xor 3,3,4 + xor 5,5,6 + add 17,17,3 + add 17,17,5 + lwz 0,4(7) + rotrwi 3,11,6 + rotrwi 4,11,11 + and 5,12,11 + andc 6,13,11 + add 0,0,14 + xor 3,3,4 + rotrwi 4,4,14 + or 5,5,6 + add 0,0,17 + xor 3,3,4 + add 0,0,5 + add 0,0,3 + + rotrwi 3,15,2 + rotrwi 4,15,13 + and 5,15,8 + and 6,15,9 + xor 3,3,4 + rotrwi 4,4,9 + xor 5,5,6 + and 6,8,9 + xor 3,3,4 + add 10,10,0 + xor 5,5,6 + add 14,0,3 + add 14,14,5 + + rotrwi 3,19,7 + rotrwi 4,19,18 + rotrwi 5,16,17 + rotrwi 6,16,19 + xor 3,3,4 + srwi 4,19,3 + xor 5,5,6 + srwi 6,16,10 + add 18,18,27 + xor 3,3,4 + xor 5,5,6 + add 18,18,3 + add 18,18,5 + lwz 0,8(7) + rotrwi 3,10,6 + rotrwi 4,10,11 + and 5,11,10 + andc 6,12,10 + add 0,0,13 + xor 3,3,4 + rotrwi 4,4,14 + or 5,5,6 + add 0,0,18 + xor 3,3,4 + add 0,0,5 + add 0,0,3 + + rotrwi 3,14,2 + rotrwi 4,14,13 + and 5,14,15 + and 6,14,8 + xor 3,3,4 + rotrwi 4,4,9 + xor 5,5,6 + and 6,15,8 + xor 3,3,4 + add 9,9,0 + xor 5,5,6 + add 13,0,3 + add 13,13,5 + + rotrwi 3,20,7 + rotrwi 4,20,18 + rotrwi 5,17,17 + rotrwi 6,17,19 + xor 3,3,4 + srwi 4,20,3 + xor 5,5,6 + srwi 6,17,10 + add 19,19,28 + xor 3,3,4 + xor 5,5,6 + add 19,19,3 + add 19,19,5 + lwz 0,12(7) + rotrwi 3,9,6 + rotrwi 4,9,11 + and 5,10,9 + andc 6,11,9 + add 0,0,12 + xor 3,3,4 + rotrwi 4,4,14 + or 5,5,6 + add 0,0,19 + xor 3,3,4 + add 0,0,5 + add 0,0,3 + + rotrwi 3,13,2 + rotrwi 4,13,13 + and 5,13,14 + and 6,13,15 + xor 3,3,4 + rotrwi 4,4,9 + xor 5,5,6 + and 6,14,15 + xor 3,3,4 + add 8,8,0 + xor 5,5,6 + add 12,0,3 + add 12,12,5 + + rotrwi 3,21,7 + rotrwi 4,21,18 + rotrwi 5,18,17 + rotrwi 6,18,19 + xor 3,3,4 + srwi 4,21,3 + xor 5,5,6 + srwi 6,18,10 + add 20,20,29 + xor 3,3,4 + xor 5,5,6 + add 20,20,3 + add 20,20,5 + lwz 0,16(7) + rotrwi 3,8,6 + rotrwi 4,8,11 + and 5,9,8 + andc 6,10,8 + add 0,0,11 + xor 3,3,4 + rotrwi 4,4,14 + or 5,5,6 + add 0,0,20 + xor 3,3,4 + add 0,0,5 + add 0,0,3 + + rotrwi 3,12,2 + rotrwi 4,12,13 + and 5,12,13 + and 6,12,14 + xor 3,3,4 + rotrwi 4,4,9 + xor 5,5,6 + and 6,13,14 + xor 3,3,4 + add 15,15,0 + xor 5,5,6 + add 11,0,3 + add 11,11,5 + + rotrwi 3,22,7 + rotrwi 4,22,18 + rotrwi 5,19,17 + rotrwi 6,19,19 + xor 3,3,4 + srwi 4,22,3 + xor 5,5,6 + srwi 6,19,10 + add 21,21,30 + xor 3,3,4 + xor 5,5,6 + add 21,21,3 + add 21,21,5 + lwz 0,20(7) + rotrwi 3,15,6 + rotrwi 4,15,11 + and 5,8,15 + andc 6,9,15 + add 0,0,10 + xor 3,3,4 + rotrwi 4,4,14 + or 5,5,6 + add 0,0,21 + xor 3,3,4 + add 0,0,5 + add 0,0,3 + + rotrwi 3,11,2 + rotrwi 4,11,13 + and 5,11,12 + and 6,11,13 + xor 3,3,4 + rotrwi 4,4,9 + xor 5,5,6 + and 6,12,13 + xor 3,3,4 + add 14,14,0 + xor 5,5,6 + add 10,0,3 + add 10,10,5 + + rotrwi 3,23,7 + rotrwi 4,23,18 + rotrwi 5,20,17 + rotrwi 6,20,19 + xor 3,3,4 + srwi 4,23,3 + xor 5,5,6 + srwi 6,20,10 + add 22,22,31 + xor 3,3,4 + xor 5,5,6 + add 22,22,3 + add 22,22,5 + lwz 0,24(7) + rotrwi 3,14,6 + rotrwi 4,14,11 + and 5,15,14 + andc 6,8,14 + add 0,0,9 + xor 3,3,4 + rotrwi 4,4,14 + or 5,5,6 + add 0,0,22 + xor 3,3,4 + add 0,0,5 + add 0,0,3 + + rotrwi 3,10,2 + rotrwi 4,10,13 + and 5,10,11 + and 6,10,12 + xor 3,3,4 + rotrwi 4,4,9 + xor 5,5,6 + and 6,11,12 + xor 3,3,4 + add 13,13,0 + xor 5,5,6 + add 9,0,3 + add 9,9,5 + + rotrwi 3,24,7 + rotrwi 4,24,18 + rotrwi 5,21,17 + rotrwi 6,21,19 + xor 3,3,4 + srwi 4,24,3 + xor 5,5,6 + srwi 6,21,10 + add 23,23,16 + xor 3,3,4 + xor 5,5,6 + add 23,23,3 + add 23,23,5 + lwz 0,28(7) + rotrwi 3,13,6 + rotrwi 4,13,11 + and 5,14,13 + andc 6,15,13 + add 0,0,8 + xor 3,3,4 + rotrwi 4,4,14 + or 5,5,6 + add 0,0,23 + xor 3,3,4 + add 0,0,5 + add 0,0,3 + + rotrwi 3,9,2 + rotrwi 4,9,13 + and 5,9,10 + and 6,9,11 + xor 3,3,4 + rotrwi 4,4,9 + xor 5,5,6 + and 6,10,11 + xor 3,3,4 + add 12,12,0 + xor 5,5,6 + add 8,0,3 + add 8,8,5 + + rotrwi 3,25,7 + rotrwi 4,25,18 + rotrwi 5,22,17 + rotrwi 6,22,19 + xor 3,3,4 + srwi 4,25,3 + xor 5,5,6 + srwi 6,22,10 + add 24,24,17 + xor 3,3,4 + xor 5,5,6 + add 24,24,3 + add 24,24,5 + lwz 0,32(7) + rotrwi 3,12,6 + rotrwi 4,12,11 + and 5,13,12 + andc 6,14,12 + add 0,0,15 + xor 3,3,4 + rotrwi 4,4,14 + or 5,5,6 + add 0,0,24 + xor 3,3,4 + add 0,0,5 + add 0,0,3 + + rotrwi 3,8,2 + rotrwi 4,8,13 + and 5,8,9 + and 6,8,10 + xor 3,3,4 + rotrwi 4,4,9 + xor 5,5,6 + and 6,9,10 + xor 3,3,4 + add 11,11,0 + xor 5,5,6 + add 15,0,3 + add 15,15,5 + + rotrwi 3,26,7 + rotrwi 4,26,18 + rotrwi 5,23,17 + rotrwi 6,23,19 + xor 3,3,4 + srwi 4,26,3 + xor 5,5,6 + srwi 6,23,10 + add 25,25,18 + xor 3,3,4 + xor 5,5,6 + add 25,25,3 + add 25,25,5 + lwz 0,36(7) + rotrwi 3,11,6 + rotrwi 4,11,11 + and 5,12,11 + andc 6,13,11 + add 0,0,14 + xor 3,3,4 + rotrwi 4,4,14 + or 5,5,6 + add 0,0,25 + xor 3,3,4 + add 0,0,5 + add 0,0,3 + + rotrwi 3,15,2 + rotrwi 4,15,13 + and 5,15,8 + and 6,15,9 + xor 3,3,4 + rotrwi 4,4,9 + xor 5,5,6 + and 6,8,9 + xor 3,3,4 + add 10,10,0 + xor 5,5,6 + add 14,0,3 + add 14,14,5 + + rotrwi 3,27,7 + rotrwi 4,27,18 + rotrwi 5,24,17 + rotrwi 6,24,19 + xor 3,3,4 + srwi 4,27,3 + xor 5,5,6 + srwi 6,24,10 + add 26,26,19 + xor 3,3,4 + xor 5,5,6 + add 26,26,3 + add 26,26,5 + lwz 0,40(7) + rotrwi 3,10,6 + rotrwi 4,10,11 + and 5,11,10 + andc 6,12,10 + add 0,0,13 + xor 3,3,4 + rotrwi 4,4,14 + or 5,5,6 + add 0,0,26 + xor 3,3,4 + add 0,0,5 + add 0,0,3 + + rotrwi 3,14,2 + rotrwi 4,14,13 + and 5,14,15 + and 6,14,8 + xor 3,3,4 + rotrwi 4,4,9 + xor 5,5,6 + and 6,15,8 + xor 3,3,4 + add 9,9,0 + xor 5,5,6 + add 13,0,3 + add 13,13,5 + + rotrwi 3,28,7 + rotrwi 4,28,18 + rotrwi 5,25,17 + rotrwi 6,25,19 + xor 3,3,4 + srwi 4,28,3 + xor 5,5,6 + srwi 6,25,10 + add 27,27,20 + xor 3,3,4 + xor 5,5,6 + add 27,27,3 + add 27,27,5 + lwz 0,44(7) + rotrwi 3,9,6 + rotrwi 4,9,11 + and 5,10,9 + andc 6,11,9 + add 0,0,12 + xor 3,3,4 + rotrwi 4,4,14 + or 5,5,6 + add 0,0,27 + xor 3,3,4 + add 0,0,5 + add 0,0,3 + + rotrwi 3,13,2 + rotrwi 4,13,13 + and 5,13,14 + and 6,13,15 + xor 3,3,4 + rotrwi 4,4,9 + xor 5,5,6 + and 6,14,15 + xor 3,3,4 + add 8,8,0 + xor 5,5,6 + add 12,0,3 + add 12,12,5 + + rotrwi 3,29,7 + rotrwi 4,29,18 + rotrwi 5,26,17 + rotrwi 6,26,19 + xor 3,3,4 + srwi 4,29,3 + xor 5,5,6 + srwi 6,26,10 + add 28,28,21 + xor 3,3,4 + xor 5,5,6 + add 28,28,3 + add 28,28,5 + lwz 0,48(7) + rotrwi 3,8,6 + rotrwi 4,8,11 + and 5,9,8 + andc 6,10,8 + add 0,0,11 + xor 3,3,4 + rotrwi 4,4,14 + or 5,5,6 + add 0,0,28 + xor 3,3,4 + add 0,0,5 + add 0,0,3 + + rotrwi 3,12,2 + rotrwi 4,12,13 + and 5,12,13 + and 6,12,14 + xor 3,3,4 + rotrwi 4,4,9 + xor 5,5,6 + and 6,13,14 + xor 3,3,4 + add 15,15,0 + xor 5,5,6 + add 11,0,3 + add 11,11,5 + + rotrwi 3,30,7 + rotrwi 4,30,18 + rotrwi 5,27,17 + rotrwi 6,27,19 + xor 3,3,4 + srwi 4,30,3 + xor 5,5,6 + srwi 6,27,10 + add 29,29,22 + xor 3,3,4 + xor 5,5,6 + add 29,29,3 + add 29,29,5 + lwz 0,52(7) + rotrwi 3,15,6 + rotrwi 4,15,11 + and 5,8,15 + andc 6,9,15 + add 0,0,10 + xor 3,3,4 + rotrwi 4,4,14 + or 5,5,6 + add 0,0,29 + xor 3,3,4 + add 0,0,5 + add 0,0,3 + + rotrwi 3,11,2 + rotrwi 4,11,13 + and 5,11,12 + and 6,11,13 + xor 3,3,4 + rotrwi 4,4,9 + xor 5,5,6 + and 6,12,13 + xor 3,3,4 + add 14,14,0 + xor 5,5,6 + add 10,0,3 + add 10,10,5 + + rotrwi 3,31,7 + rotrwi 4,31,18 + rotrwi 5,28,17 + rotrwi 6,28,19 + xor 3,3,4 + srwi 4,31,3 + xor 5,5,6 + srwi 6,28,10 + add 30,30,23 + xor 3,3,4 + xor 5,5,6 + add 30,30,3 + add 30,30,5 + lwz 0,56(7) + rotrwi 3,14,6 + rotrwi 4,14,11 + and 5,15,14 + andc 6,8,14 + add 0,0,9 + xor 3,3,4 + rotrwi 4,4,14 + or 5,5,6 + add 0,0,30 + xor 3,3,4 + add 0,0,5 + add 0,0,3 + + rotrwi 3,10,2 + rotrwi 4,10,13 + and 5,10,11 + and 6,10,12 + xor 3,3,4 + rotrwi 4,4,9 + xor 5,5,6 + and 6,11,12 + xor 3,3,4 + add 13,13,0 + xor 5,5,6 + add 9,0,3 + add 9,9,5 + + rotrwi 3,16,7 + rotrwi 4,16,18 + rotrwi 5,29,17 + rotrwi 6,29,19 + xor 3,3,4 + srwi 4,16,3 + xor 5,5,6 + srwi 6,29,10 + add 31,31,24 + xor 3,3,4 + xor 5,5,6 + add 31,31,3 + add 31,31,5 + lwz 0,60(7) + rotrwi 3,13,6 + rotrwi 4,13,11 + and 5,14,13 + andc 6,15,13 + add 0,0,8 + xor 3,3,4 + rotrwi 4,4,14 + or 5,5,6 + add 0,0,31 + xor 3,3,4 + add 0,0,5 + add 0,0,3 + + rotrwi 3,9,2 + rotrwi 4,9,13 + and 5,9,10 + and 6,9,11 + xor 3,3,4 + rotrwi 4,4,9 + xor 5,5,6 + and 6,10,11 + xor 3,3,4 + add 12,12,0 + xor 5,5,6 + add 8,0,3 + add 8,8,5 + + bc 25,0,.Lrounds + + lwz 3,40(1) + lwz 31,36(1) + lwz 5,32(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 + stw 31,36(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 13,13,21 + stw 11,12(3) + add 14,14,22 + stw 12,16(3) + add 15,15,23 + stw 13,20(3) + stw 14,24(3) + .long 0x7c1f2840 + stw 15,28(3) + bne .Lsha2_block_private + blr +.align 6 +.LPICmeup: + bl .LPIC + addi 7,7,60 + b .LPICedup + nop + nop + nop + nop + nop +.LPIC: mflr 7 + blr + nop + nop + nop + nop + nop + nop +.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