Compute the full double-width product of LHS and RHS via a libcall or brute-force expansion.
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;
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.
| Name | Description |
|---|---|
| DAG | SelectionDAG providing context. |
| dl | Debug location for newly created nodes. |
| Signed | True for signed multiply. |
| LHS | Left-hand operand. |
| RHS | Right-hand operand. |
| Lo | Low half of a wide result. |
| Hi | High half of a wide result. |