multiply high (unsigned/signed) would be similar to the routines laid out here:
CE-Programming/toolchain#645
they should have the same calling convention as the regular multiplication routines, but return the upper half of the result instead of the lower half.
Multiply high routines are used to optimize division by a constant, and I have seen code output at -O2 that uses __imulu48 to do unsigned 24 bit division.
I don't believe there is a direct intrinsic for this in LLVM (since multiply high is just zero or sign extending the arguments and then multiplying basically)
multiply high (unsigned/signed) would be similar to the routines laid out here:
CE-Programming/toolchain#645
they should have the same calling convention as the regular multiplication routines, but return the upper half of the result instead of the lower half.
Multiply high routines are used to optimize division by a constant, and I have seen code output at
-O2that uses__imulu48to do unsigned 24 bit division.I don't believe there is a direct intrinsic for this in LLVM (since multiply high is just zero or sign extending the arguments and then multiplying basically)