Page MenuHomePhabricator

[LLVM] New carry-less multiplication instruction llvm.experimental.clmul
Changes PlannedPublic

Authored by shawnl on Jul 10 2020, 9:48 AM.

Details

Summary

This is mostly glue code, with only a few instructions in ARM wired up
(PMUL but not PMULL), and no fallback code.

Diff Detail

Event Timeline

shawnl created this revision.Jul 10 2020, 9:48 AM
craig.topper added inline comments.
llvm/docs/LangRef.rst
8417

Glois - > Galois?

equivilent -> equivalent

shawnl updated this revision to Diff 279081.Jul 19 2020, 6:46 AM
shawnl retitled this revision from [RFC][WIP] New carry-less multiplication instruction llvm.experimental.clmul to [LLVM] New carry-less multiplication instruction llvm.experimental.clmul.
shawnl edited the summary of this revision. (Show Details)

updated docs

nikic added a subscriber: nikic.Jul 19 2020, 7:06 AM
jdoerfert resigned from this revision.Jul 19 2020, 9:37 AM
shawnl planned changes to this revision.Jul 19 2020, 10:01 AM
kparzysz added inline comments.Jul 20 2020, 5:40 AM
llvm/docs/LangRef.rst
8471

I would reword this to define what this operation does, then add a remark about how it's different from integer multiplication. Something like:

"In the scalar version with operands of type iN, both operands are assumed to be polynomials with binary coefficients, where the most significant bit corresponds to the coefficient at x^(N-1). The operation calculates the result of polynomial multiplication of the operands, modulo x^N.
The vector version treats each element of the input vector as a separate polynomial.

Note that this is different from integer multiplication ..."