[llvm-dev] [RFC] carry-less multiplication instruction

Hal Finkel via llvm-dev llvm-dev at lists.llvm.org
Thu Jul 9 08:24:52 PDT 2020


On 7/9/20 10:13 AM, Steve (Numerics) Canon via llvm-dev wrote:
> CLMUL is absolutely useful outside of “crypto” contexts that 
> want/require “constant time” operation.
>
> To name just two families of uses, it’s the backbone of many 
> hash/checksum algorithms and error-correcting codes, where the goal is 
> often simply to go as fast as possible, and uArch side-channel 
> resistance is not a concern.
>
> – Steve


+1

See, e.g., 
https://lemire.me/blog/2015/10/26/crazily-fast-hashing-with-carry-less-multiplications/ 
-- and also, https://en.wikipedia.org/wiki/CLMUL_instruction_set, "One 
use of these instructions is to improve the speed of applications doing 
block cipher encryption in Galois/Counter Mode, which depends on finite 
field GF(2^k) multiplication. Another application is the fast 
calculation of CRC values, including those used to implement the LZ77 
sliding window DEFLATE algorithm in zlib and pngcrush."

  -Hal


>
>> On Jul 9, 2020, at 10:41 AM, Roman Lebedev via llvm-dev 
>> <llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>> wrote:
>>
>>
>> What i do *NOT* understand is: what is the actual/main goal/driving
>> factor of adding an LLVM intrinsic for it?
>>
>> The use that was mentioned is crypto, and i'm personally not really
>> registering anything else. Am i just misreading it?
>> The crypto use-case doesn't make sense to me, because
>> as of this moment LLVM "explicitly" has zero constant-time
>> guarantees for LLVM IR instructions/intrinsics.
>
>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev

-- 
Hal Finkel
Lead, Compiler Technology and Programming Languages
Leadership Computing Facility
Argonne National Laboratory

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20200709/191dcfd1/attachment.html>


More information about the llvm-dev mailing list