RE: [PATCH 0/5] dilithium-kyber: Optimized (i)NTT support for
Danny Tsen via Gcrypt-devel <[email protected]> Tue, 14 Jul 2026 11:41:47 +0000
| Newsgroups | gmane.comp.encryption.gpg.libgcrypt.devel |
|---|---|
| Message-ID | <PH7PR15MB5426D1443DD411C6354E3D0C93F92@PH7PR15MB5426.namprd15.prod.outlook.com> |
--===============2775212582784141594== Content-Language: en-US Content-Type: multipart/alternative; boundary="_000_PH7PR15MB5426D1443DD411C6354E3D0C93F92PH7PR15MB5426namp_" --_000_PH7PR15MB5426D1443DD411C6354E3D0C93F92PH7PR15MB5426namp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi NIIBE, It's been a while. Do you have any progress on the new setup? BTW, ZETA layout may be implementation or platform specific due to optimiza= tion approach. Thanks. -Danny ________________________________ From: Danny Tsen <[email protected]> Sent: Monday, March 30, 2026 7:28 AM To: NIIBE Yutaka <[email protected]>; [email protected] <gcrypt-devel@gn= upg.org> Subject: Re: [EXTERNAL] Re: [PATCH 0/5] dilithium-kyber: Optimized (i)NTT s= upport for Hi, That's seems like a good idea. Let me know when you have the framework ava= ilable. I can follow that. Thanks. -Danny ________________________________ From: NIIBE Yutaka <[email protected]> Sent: Friday, March 27, 2026 1:21 AM To: Danny Tsen <[email protected]>; [email protected] <gcrypt-devel@gnu= pg.org> Subject: [EXTERNAL] Re: [PATCH 0/5] dilithium-kyber: Optimized (i)NTT suppo= rt for Hello, Sorry for late reply. Danny Tsen wrote: > Added optimized (i)NTT algorithm support for ppc64le (Power 8 and > above). Defined ENABLE_PPC_DILITHIUM and ENABLE_PPC_KYBER for > dilithium (ML-DSA) and kyber (ML-KEM) NTT and inverse NTT. Thank you for your work. The approach of optimizing NTT functions looks good. Let me start a discussion about Kyber. Then, we can apply the result to Dilithium. I wonder if we can do a bit more, so that we can avoid the duplication of the ZETA constant among NTT implementation and kyber-common.c. I'm considering about factoring following five functions from kyber-common.c: void _gcry_poly_ntt(poly *r); void _gcry_poly_invntt_tomont(poly *r); void _gcry_poly_reduce(poly *r) void _gcry_poly_tomont(poly *r); void _gcry_poly_basemul_montgomery(poly *r, const poly *a, const poly *= b); into, say, kyber-common-generic.c. And provide archtecture specific kyber-common-<ARCH>-<HWACC>.S for optimized version(s). This way, NTT functions are covered and ZETA is placed inside kyber-common-*. How do you think? I'll try with the optimized implementation of AVX2 in the reference code. https://urldefense.proofpoint.com/v2/url?u=3Dhttps-3A__www.pq-2Dcrystals.or= g_kyber_&d=3DDwIBAg&c=3DBSDicqBQBDjDI9RkVyTcHQ&r=3DzspFcGYEyUrRywX_TdjlLwwr= Cx0eBFnzcs6XZVVVMh0&m=3DcyhP1gGDXWh9JCIn4z5NrebvLkC7bN89aMGL_HFl26R2f9h7kqR= DsaD6W5C2Q8tQ&s=3DguKkLMabJUVbm4bjm61GKleAAubKCEyFJJobD1MSghQ&e=3D -- --_000_PH7PR15MB5426D1443DD411C6354E3D0C93F92PH7PR15MB5426namp_ Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable <html> <head> <meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii"= > <style type=3D"text/css" style=3D"display:none;"> P {margin-top:0;margin-bo= ttom:0;} </style> </head> <body dir=3D"ltr"> <div class=3D"elementToProof" style=3D"font-family: Aptos, Aptos_EmbeddedFo= nt, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; c= olor: rgb(0, 0, 0);"> Hi NIIBE,</div> <div class=3D"elementToProof" style=3D"font-family: Aptos, Aptos_EmbeddedFo= nt, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; c= olor: rgb(0, 0, 0);"> <br> </div> <div class=3D"elementToProof" style=3D"font-family: Aptos, Aptos_EmbeddedFo= nt, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; c= olor: rgb(0, 0, 0);"> It's been a while. Do you have any progress on the new setup?</div> <div class=3D"elementToProof" style=3D"font-family: Aptos, Aptos_EmbeddedFo= nt, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; c= olor: rgb(0, 0, 0);"> <br> </div> <div class=3D"elementToProof" style=3D"font-family: Aptos, Aptos_EmbeddedFo= nt, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; c= olor: rgb(0, 0, 0);"> BTW, ZETA layout may be implementation or platform specific due to optimiza= tion approach.</div> <div class=3D"elementToProof" style=3D"font-family: Aptos, Aptos_EmbeddedFo= nt, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; c= olor: rgb(0, 0, 0);"> <br> </div> <div class=3D"elementToProof" style=3D"font-family: Aptos, Aptos_EmbeddedFo= nt, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; c= olor: rgb(0, 0, 0);"> Thanks.</div> <div class=3D"elementToProof" style=3D"font-family: Aptos, Aptos_EmbeddedFo= nt, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; c= olor: rgb(0, 0, 0);"> -Danny</div> <div id=3D"appendonsend"></div> <hr style=3D"display:inline-block;width:98%" tabindex=3D"-1"> <div id=3D"divRplyFwdMsg" dir=3D"ltr"><font face=3D"Calibri, sans-serif" st= yle=3D"font-size:11pt" color=3D"#000000"><b>From:</b> Danny Tsen <dtsen@= us.ibm.com><br> <b>Sent:</b> Monday, March 30, 2026 7:28 AM<br> <b>To:</b> NIIBE Yutaka <[email protected]>; [email protected] <= ;[email protected]><br> <b>Subject:</b> Re: [EXTERNAL] Re: [PATCH 0/5] dilithium-kyber: Optimized (= i)NTT support for</font> <div> </div> </div> <style type=3D"text/css" style=3D"display:none"> <!-- p {margin-top:0; margin-bottom:0} --> </style> <div dir=3D"ltr"> <div class=3D"x_elementToProof" style=3D"font-family:Aptos,Aptos_EmbeddedFo= nt,Aptos_MSFontService,Calibri,Helvetica,sans-serif; font-size:12pt; color:= rgb(0,0,0)"> Hi,</div> <div class=3D"x_elementToProof" style=3D"font-family:Aptos,Aptos_EmbeddedFo= nt,Aptos_MSFontService,Calibri,Helvetica,sans-serif; font-size:12pt; color:= rgb(0,0,0)"> <br> </div> <div class=3D"x_elementToProof" style=3D"font-family:Aptos,Aptos_EmbeddedFo= nt,Aptos_MSFontService,Calibri,Helvetica,sans-serif; font-size:12pt; color:= rgb(0,0,0)"> That's seems like a good idea. Let me know when you have the framewor= k available. I can follow that.</div> <div class=3D"x_elementToProof" style=3D"font-family:Aptos,Aptos_EmbeddedFo= nt,Aptos_MSFontService,Calibri,Helvetica,sans-serif; font-size:12pt; color:= rgb(0,0,0)"> <br> </div> <div class=3D"x_elementToProof" style=3D"font-family:Aptos,Aptos_EmbeddedFo= nt,Aptos_MSFontService,Calibri,Helvetica,sans-serif; font-size:12pt; color:= rgb(0,0,0)"> Thanks.</div> <div class=3D"x_elementToProof" style=3D"font-family:Aptos,Aptos_EmbeddedFo= nt,Aptos_MSFontService,Calibri,Helvetica,sans-serif; font-size:12pt; color:= rgb(0,0,0)"> -Danny</div> <div class=3D"x_elementToProof" style=3D"font-family:Aptos,Aptos_EmbeddedFo= nt,Aptos_MSFontService,Calibri,Helvetica,sans-serif; font-size:12pt; color:= rgb(0,0,0)"> <br> </div> <div id=3D"x_appendonsend"></div> <hr tabindex=3D"-1" style=3D"display:inline-block; width:98%"> <div id=3D"x_divRplyFwdMsg" dir=3D"ltr"><font face=3D"Calibri, sans-serif" = color=3D"#000000" style=3D"font-size:11pt"><b>From:</b> NIIBE Yutaka <gn= [email protected]><br> <b>Sent:</b> Friday, March 27, 2026 1:21 AM<br> <b>To:</b> Danny Tsen <[email protected]>; [email protected] <= [email protected]><br> <b>Subject:</b> [EXTERNAL] Re: [PATCH 0/5] dilithium-kyber: Optimized (i)NT= T support for</font> <div> </div> </div> <div class=3D"x_BodyFragment"><font size=3D"2"><span style=3D"font-size:11p= t"> <div class=3D"x_PlainText">Hello,<br> <br> Sorry for late reply.<br> <br> Danny Tsen wrote:<br> > Added optimized (i)NTT algorithm support for ppc64le (Power 8 and<br> > above). Defined ENABLE_PPC_DILITHIUM and ENABLE_PPC_KYBER for<br= > > dilithium (ML-DSA) and kyber (ML-KEM) NTT and inverse NTT.<br> <br> Thank you for your work.<br> <br> The approach of optimizing NTT functions looks good.<br> <br> Let me start a discussion about Kyber. Then, we can apply the<br> result to Dilithium.<br> <br> <br> I wonder if we can do a bit more, so that we can avoid the duplication<br> of the ZETA constant among NTT implementation and kyber-common.c.<br> <br> I'm considering about factoring following five functions from<br> kyber-common.c:<br> <br> void _gcry_poly_ntt(poly *r);<br> void _gcry_poly_invntt_tomont(poly *r);<br> void _gcry_poly_reduce(poly *r)<br> void _gcry_poly_tomont(poly *r);<br> void _gcry_poly_basemul_montgomery(poly *r, const poly *= a, const poly *b);<br> <br> into, say, kyber-common-generic.c. And provide archtecture specific<b= r> kyber-common-<ARCH>-<HWACC>.S for optimized version(s).<br> <br> This way, NTT functions are covered and ZETA is placed inside<br> kyber-common-*.<br> <br> How do you think?<br> <br> I'll try with the optimized implementation of AVX2 in the reference code.<b= r> <a href=3D"https://urldefense.proofpoint.com/v2/url?u=3Dhttps-3A__www.pq-2D= crystals.org_kyber_&d=3DDwIBAg&c=3DBSDicqBQBDjDI9RkVyTcHQ&r=3Dz= spFcGYEyUrRywX_TdjlLwwrCx0eBFnzcs6XZVVVMh0&m=3DcyhP1gGDXWh9JCIn4z5Nrebv= LkC7bN89aMGL_HFl26R2f9h7kqRDsaD6W5C2Q8tQ&s=3DguKkLMabJUVbm4bjm61GKleAAu= bKCEyFJJobD1MSghQ&e=3D">https://urldefense.proofpoint.com/v2/url?u=3Dht= tps-3A__www.pq-2Dcrystals.org_kyber_&d=3DDwIBAg&c=3DBSDicqBQBDjDI9R= kVyTcHQ&r=3DzspFcGYEyUrRywX_TdjlLwwrCx0eBFnzcs6XZVVVMh0&m=3DcyhP1gG= DXWh9JCIn4z5NrebvLkC7bN89aMGL_HFl26R2f9h7kqRDsaD6W5C2Q8tQ&s=3DguKkLMabJ= UVbm4bjm61GKleAAubKCEyFJJobD1MSghQ&e=3D</a> <br> -- <br> </div> </span></font></div> </div> </body> </html> --_000_PH7PR15MB5426D1443DD411C6354E3D0C93F92PH7PR15MB5426namp_-- --===============2775212582784141594== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Gcrypt-devel mailing list [email protected] https://lists.gnupg.org/mailman/listinfo/gcrypt-devel --===============2775212582784141594==--