llvm::TargetLowering::forceExpandWideMUL

Compute the full double-width product of LHS and RHS via a libcall or brute-force expansion.

Synopsis

Declared in <llvm/CodeGen/TargetLowering.h>

void
forceExpandWideMUL(
    SelectionDAG& DAG,
    SDLoc const& dl,
    bool Signed,
    SDValue const LHS,
    SDValue const RHS,
    SDValue& Lo,
    SDValue& Hi) const;

Description

Calculate full product of LHS and RHS either via a libcall or through brute force expansion of the multiplication. The expansion works by splitting the 2 inputs into 4 pieces that we can multiply and add together without needing MULH or MUL_LOHI.

Parameters

NameDescription
DAGSelectionDAG providing context.
dlDebug location for newly created nodes.
SignedTrue for signed multiply.
LHSLeft-hand operand.
RHSRight-hand operand.
LoLow half of a wide result.
HiHigh half of a wide result.