From: Eric Biggers <ebiggers@kernel.org>
To: Stefan Kanthak <stefan.kanthak@nexgo.de>
Cc: linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2 4/4] crypto: x86/sha256-ni - simplify do_4rounds
Date: Mon, 15 Apr 2024 14:21:21 -0700 [thread overview]
Message-ID: <20240415212121.GA5206@sol.localdomain> (raw)
In-Reply-To: <2ECD48ACEA9540C083E6B797CFD18027@H270>
On Mon, Apr 15, 2024 at 10:41:07PM +0200, Stefan Kanthak wrote:
> "Eric Biggers" <ebiggers@kernel.org> wrote:
>
> > Instead of loading the message words into both MSG and \m0 and then
> > adding the round constants to MSG, load the message words into \m0 and
> > the round constants into MSG and then add \m0 to MSG. This shortens the
> > source code slightly. It changes the instructions slightly, but it
> > doesn't affect binary code size and doesn't seem to affect performance.
>
> At last the final change: write the macro straightforward and SIMPLE,
> closely matching NIST.FIPS.180-4.pdf and their order of operations.
>
> @@ ...
> +.macro sha256 m0 :req, m1 :req, m2 :req, m3 :req
> +.if \@ < 4
> + movdqu \@*16(DATA_PTR), \m0
> + pshufb SHUF_MASK, \m0 # \m0 = {w(\@*16), w(\@*16+1), w(\@*16+2), w(\@*16+3)}
> +.else
> + # \m0 = {w(\@*16-16), w(\@*16-15), w(\@*16-14), w(\@*16-13)}
> + # \m1 = {w(\@*16-12), w(\@*16-11), w(\@*16-10), w(\@*16-9)}
> + # \m2 = {w(\@*16-8), w(\@*16-7), w(\@*16-6), w(\@*16-5)}
> + # \m3 = {w(\@*16-4), w(\@*16-3), w(\@*16-2), w(\@*16-1)}
> + sha256msg1 \m1, \m0
> + movdqa \m3, TMP
> + palignr $4, \m2, TMP
> + paddd TMP, \m0
> + sha256msg2 \m3, \m0 # \m0 = {w(\@*16), w(\@*16+1), w(\@*16+2), w(\@*16+3)}
> +.endif
> + movdqa (\@-8)*16(SHA256CONSTANTS), MSG
> + paddd \m0, MSG
> + sha256rnds2 STATE0, STATE1 # STATE1 = {f', e', b', a'}
> + punpckhqdq MSG, MSG
> + sha256rnds2 STATE1, STATE0 # STATE0 = {f", e", b", a"},
> + # STATE1 = {h", g", d", c"}
> +.endm
>
> JFTR: you may simplify this further using .altmacro and generate \m0 to \m3
> as MSG%(4-\@&3), MSG%(5-\@&3), MSG%(6-\@&3) and MSG%(7-\@&3) within
> the macro, thus getting rid of its 4 arguments.
>
> @@ ...
> +.rept 4 # 4*4*4 rounds
> + sha256 MSG0, MSG1, MSG2, MSG3
> + sha256 MSG1, MSG2, MSG3, MSG0
> + sha256 MSG2, MSG3, MSG0, MSG1
> + sha256 MSG3, MSG0, MSG1, MSG2
> +.endr
Could you please send a real patch, following
Documentation/process/submitting-patches.rst? It's hard to understand what
you're proposing here.
> Now that all code written by Tim Chen and Sean Gulley is gone,
> remove their copyright notice and insert your and my name instead.
Well, their code has been cleaned up. We have to keep copyright notices around
unless we're certain they can go.
>
> regards
> Stefan
>
> PS: see <https://skanthak.homepage.t-online.de/fips-180.html>
> (which I still polish) not just for this implementation.
>
> PPS: if MASM had a counter like \@, I'd used it there.
Thanks,
- Eric
next prev parent reply other threads:[~2024-04-15 21:21 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-11 16:23 [PATCH v2 0/4] crypto: x86/sha256-ni - cleanup and optimization Eric Biggers
2024-04-11 16:23 ` [PATCH v2 1/4] crypto: x86/sha256-ni - convert to use rounds macros Eric Biggers
2024-04-11 16:23 ` [PATCH v2 2/4] crypto: x86/sha256-ni - rename some register aliases Eric Biggers
2024-04-11 16:23 ` [PATCH v2 3/4] crypto: x86/sha256-ni - optimize code size Eric Biggers
2024-04-11 16:23 ` [PATCH v2 4/4] crypto: x86/sha256-ni - simplify do_4rounds Eric Biggers
2024-04-15 20:41 ` Stefan Kanthak
2024-04-15 21:21 ` Eric Biggers [this message]
2024-04-15 22:04 ` Stefan Kanthak
2024-04-15 22:46 ` Eric Biggers
2024-04-16 0:17 ` Stefan Kanthak
2024-04-19 11:00 ` [PATCH v2 0/4] crypto: x86/sha256-ni - cleanup and optimization Herbert Xu
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=20240415212121.GA5206@sol.localdomain \
--to=ebiggers@kernel.org \
--cc=linux-crypto@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=stefan.kanthak@nexgo.de \
/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