From: Tim Chen <tim.c.chen@linux.intel.com>
To: Herbert Xu <herbert@gondor.hengli.com.au>,
"H. Peter Anvin" <hpa@zytor.com>,
"David S.Miller" <davem@davemloft.net>
Cc: Jussi Kivilinna <jussi.kivilinna@iki.fi>,
Jim Kukunas <james.t.kukunas@linux.intel.com>,
Kirk Yap <kirk.s.yap@intel.com>,
David Cote <david.m.cote@intel.com>,
James Guilford <james.guilford@intel.com>,
Wajdi Feghali <wajdi.k.feghali@intel.com>,
linux-kernel <linux-kernel@vger.kernel.org>,
linux-crypto@vger.kernel.org
Subject: [PATCH v2 00/10] Optimize SHA256 and SHA512 for Intel x86_64 with SSSE3, AVX or AVX2 instructions
Date: Tue, 26 Mar 2013 13:58:39 -0700 [thread overview]
Message-ID: <1364331519.27102.10.camel@schen9-DESK> (raw)
In-Reply-To: <cover.1364303479.git.tim.c.chen@linux.intel.com>
Herbert,
The following patch series provides optimized SHA256 and SHA512 routines
using the SSSE3, AVX or AVX2 instructions on x86_64 for Intel cpus.
Depending on cpu capabilities, speedup between 40% to 70% or more can be achieved
over the generic SHA256 and SHA512 routines.
Tim
Version 2:
1. Check AVX2 feature directly in glue code
2. Add CONFGI_AS_AVX2 check for AVX2 code
3. Use ENTRY/ENDPROC macros for assembly routines
4. Fix SSSE3 feature check in glue code
Thanks to Peter Anvin, Jussi Kivilinna and Jim Kukunas for their reviews and comments.
Tim Chen (10):
Expose SHA256 generic routine to be callable externally.
Optimized sha256 x86_64 assembly routine using Supplemental SSE3
instructions.
Optimized sha256 x86_64 assembly routine with AVX instructions.
Optimized sha256 x86_64 routine using AVX2's RORX instructions
Create module providing optimized SHA256 routines using SSSE3, AVX or
AVX2 instructions.
Expose generic sha512 routine to be callable from other modules
Optimized SHA512 x86_64 assembly routine using Supplemental SSE3
instructions.
Optimized SHA512 x86_64 assembly routine using AVX instructions.
Optimized SHA512 x86_64 assembly routine using AVX2 RORX instruction.
Create module providing optimized SHA512 routines using SSSE3, AVX or
AVX2 instructions.
arch/x86/crypto/Makefile | 4 +
arch/x86/crypto/sha256-avx-asm.S | 496 +++++++++++++++++++++++
arch/x86/crypto/sha256-avx2-asm.S | 772 ++++++++++++++++++++++++++++++++++++
arch/x86/crypto/sha256-ssse3-asm.S | 506 +++++++++++++++++++++++
arch/x86/crypto/sha256_ssse3_glue.c | 275 +++++++++++++
arch/x86/crypto/sha512-avx-asm.S | 423 ++++++++++++++++++++
arch/x86/crypto/sha512-avx2-asm.S | 743 ++++++++++++++++++++++++++++++++++
arch/x86/crypto/sha512-ssse3-asm.S | 421 ++++++++++++++++++++
arch/x86/crypto/sha512_ssse3_glue.c | 282 +++++++++++++
crypto/Kconfig | 22 +
crypto/sha256_generic.c | 11 +-
crypto/sha512_generic.c | 13 +-
include/crypto/sha.h | 5 +
13 files changed, 3962 insertions(+), 11 deletions(-)
create mode 100644 arch/x86/crypto/sha256-avx-asm.S
create mode 100644 arch/x86/crypto/sha256-avx2-asm.S
create mode 100644 arch/x86/crypto/sha256-ssse3-asm.S
create mode 100644 arch/x86/crypto/sha256_ssse3_glue.c
create mode 100644 arch/x86/crypto/sha512-avx-asm.S
create mode 100644 arch/x86/crypto/sha512-avx2-asm.S
create mode 100644 arch/x86/crypto/sha512-ssse3-asm.S
create mode 100644 arch/x86/crypto/sha512_ssse3_glue.c
--
1.7.11.7
next parent reply other threads:[~2013-03-26 20:58 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <cover.1364303479.git.tim.c.chen@linux.intel.com>
2013-03-26 20:58 ` Tim Chen [this message]
2013-04-03 1:53 ` Herbert Xu
2013-04-19 20:25 ` [PATCH] Fix prototype definitions of sha256_transform_asm, sha512_transform_asm Tim Chen
2013-04-25 13:04 ` Herbert Xu
2013-06-07 16:47 ` Tim Chen
2013-06-07 16:51 ` Tim Chen
2013-03-26 20:58 ` [PATCH v2 01/10] Expose SHA256 generic routine to be callable externally Tim Chen
2013-03-26 20:58 ` [PATCH v2 02/10] Optimized sha256 x86_64 assembly routine using Supplemental SSE3 instructions Tim Chen
2013-03-26 20:59 ` [PATCH v2 03/10] Optimized sha256 x86_64 assembly routine with AVX instructions Tim Chen
2013-03-26 20:59 ` [PATCH v2 04/10] Optimized sha256 x86_64 routine using AVX2's RORX instructions Tim Chen
2013-03-26 20:59 ` [PATCH v2 05/10] Create module providing optimized SHA256 routines using SSSE3, AVX or AVX2 instructions Tim Chen
2013-03-26 20:59 ` [PATCH v2 06/10] Expose generic sha512 routine to be callable from other modules Tim Chen
2013-03-26 20:59 ` [PATCH v2 07/10] Optimized SHA512 x86_64 assembly routine using Supplemental SSE3 instructions Tim Chen
2013-03-26 20:59 ` [PATCH v2 08/10] Optimized SHA512 x86_64 assembly routine using AVX instructions Tim Chen
2013-03-26 20:59 ` [PATCH v2 09/10] Optimized SHA512 x86_64 assembly routine using AVX2 RORX instruction Tim Chen
2013-03-26 21:00 ` [PATCH v2 10/10] Create module providing optimized SHA512 routines using SSSE3, AVX or AVX2 instructions Tim Chen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1364331519.27102.10.camel@schen9-DESK \
--to=tim.c.chen@linux.intel.com \
--cc=davem@davemloft.net \
--cc=david.m.cote@intel.com \
--cc=herbert@gondor.hengli.com.au \
--cc=hpa@zytor.com \
--cc=james.guilford@intel.com \
--cc=james.t.kukunas@linux.intel.com \
--cc=jussi.kivilinna@iki.fi \
--cc=kirk.s.yap@intel.com \
--cc=linux-crypto@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=wajdi.k.feghali@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®