From: "Stefan Kanthak" <stefan.kanthak@nexgo.de>
To: "Eric Biggers" <ebiggers@kernel.org>
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: Tue, 16 Apr 2024 00:04:56 +0200 [thread overview]
Message-ID: <65E53E4DD09F41CDA7EBCBD970E23C23@H270> (raw)
In-Reply-To: <20240415212121.GA5206@sol.localdomain>
"Eric Biggers" <ebiggers@kernel.org> wrote:
> On Mon, Apr 15, 2024 at 10:41:07PM +0200, Stefan Kanthak wrote:
[...]
>> 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.
1) I replace your macro (which unfortunately follows Tim Chens twisted code)
COMPLETELY with a clean and simple implementation: message schedule first,
update of state variables last.
You don't need ".if \i >= 12 && \i < 60"/".if \i >= 4 && \i < 52" at all!
2) I replace the .irp which invokes your macro with a .rept: my macro uses \@
instead of an argument for the round number.
<https://sourceware.org/binutils/docs/as.html#Macro>
| \@
| as maintains a counter of how many macros it has executed in this pseudo-
| variable; you can copy that number to your output with '\@', but only
| within a macro definition.
That's all.
regards
Stefan
next prev parent reply other threads:[~2024-04-15 22:09 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
2024-04-15 22:04 ` Stefan Kanthak [this message]
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=65E53E4DD09F41CDA7EBCBD970E23C23@H270 \
--to=stefan.kanthak@nexgo.de \
--cc=ebiggers@kernel.org \
--cc=linux-crypto@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.