<div> </div><div> </div><div>05.07.2020, 07:12, "Nicolai Hähnle" <nhaehnle@gmail.com>:</div><blockquote><p>On 05.07.20 12:21, Roman Lebedev via llvm-dev wrote:</p><blockquote> On Sun, Jul 5, 2020 at 12:18 PM Shawn Landden via llvm-dev<br /> <<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>> wrote:<blockquote> This proposal is to add a llvm.clmul instruction.</blockquote><br /> What benefit would this intrinsic would bring to the middle-end IR,<br /> over it's current naive expanded form?</blockquote><p><br />Isn't a "naive" expansion of NxN carryless multiply extremely involved?</p></blockquote><div><br />Yes it is. And this is then sped up with a table (such as in the official GCM spec), however using a table can introduce key-dependent loads and security problems. The 32+32->64 or 64+64->64 multiplication lowering is generally constant-time and does not have these security problems.</div><blockquote><p>I'd expect something like 2N shifts, N truncs, N selects, and N xors.<br /><br />That link mentions an alternative that is more efficient, but I wouldn't<br />exactly call it naive...<br /><br />Cheers,<br />Nicolai<br /><br /> </p><blockquote><br /> Note that teaching backends to produce it, or even adding it to<br /> backend (ISD opcodes)<br /> and matching it in DAGCombiner has much lower barrier of entry, i<br /> would suggest to start there.<br /> <blockquote> (First posted to discord<br /><br /> --<br /> Shawn Landden</blockquote> Roman<br /> <blockquote> _______________________________________________<br /> LLVM Developers mailing list<br /> <a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a><br /> <a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a></blockquote> _______________________________________________<br /> LLVM Developers mailing list<br /> <a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a><br /> <a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br /> </blockquote><p> </p>--<br />Lerne, wie die Welt wirklich ist,<br />Aber vergiss niemals, wie sie sein sollte.</blockquote><div> </div><div> </div><div>-- </div><div>Shawn Landden</div><div> </div>