## Name

umulExtended — perform a 32- by 32-bit multiply to produce a 64-bit result

## Declaration

`void umulExtended(` | genUType x,
| genUType y,
| out genUType msb,
| out genUType lsb`)`;

`void imulExtended(` | genIType x,
| genIType y,
| out genIType msb,
| out genIType lsb`)`;

## Parameters

`x`

  Specifies the first multiplicand.

`y`

  Specifies the second multiplicand..

`msb`

  Specifies the variable to receive the most significant word of the product.

`lsb`

  Specifies the variable to receive the least significant word of the product.

## Description

`umulExtended` and `imulExtended` perform multiplication of the two 32-bit integer quantities `x` and `y`, producing a 64-bit integer result. The 32 least significant bits of this product are returned in `lsb` and the 32 most significant bits are returned in `msb`. `umulExtended` and `imulExtended` perform unsigned and signed multiplication, respectively.

## Version Support

| OpenGL Shading Language Version
--- | ---
Function Name | 1.10 | 1.20 | 1.30 | 1.40 | 1.50 | 3.30 | 4.00 | 4.10 | 4.20 | 4.30 | 4.40 | 4.50
umulExtended | - | - | - | - | - | - | ✔ | ✔ | ✔ | ✔ | ✔ | ✔

## See Also

uaddCarry

## Copyright

Copyright © 2011-2014 Khronos Group. This material may be distributed subject to the terms and conditions set forth in the Open Publication License, v 1.0, 8 June 1999. http://opencontent.org/openpub/.