[llvm] [IR] Add llvm `clmul` intrinsic (PR #140301)
Craig Topper via llvm-commits
llvm-commits at lists.llvm.org
Wed May 28 10:29:29 PDT 2025
================
@@ -5417,6 +5422,36 @@ void DAGTypeLegalizer::ExpandIntRes_FunnelShift(SDNode *N, SDValue &Lo,
Hi = DAG.getNode(Opc, DL, HalfVT, Select3, Select2, NewShAmt);
}
+void DAGTypeLegalizer::ExpandIntRes_CLMUL(SDNode *N, SDValue &Lo,
+ SDValue &Hi) {
+ // Values numbered from least significant to most significant.
+ SDValue LL, LH, RL, RH;
+ GetExpandedInteger(N->getOperand(0), LL, LH);
+ GetExpandedInteger(N->getOperand(1), RL, RH);
+ EVT HalfVT = LL.getValueType();
+ SDLoc DL(N);
+
+ // CLMUL is carryless so Lo is computed from the low half
----------------
topperc wrote:
Even regular MUL computes Lo from the low halves. I don't think being carryless is relevant.
https://github.com/llvm/llvm-project/pull/140301
More information about the llvm-commits
mailing list