[llvm] [ADT] Add implementations for mulhs and mulhu to APInt (PR #84609)

Shourya Goel via llvm-commits llvm-commits at lists.llvm.org
Sat Mar 9 08:23:20 PST 2024


================
@@ -3067,6 +3067,22 @@ void llvm::StoreIntToMemory(const APInt &IntVal, uint8_t *Dst,
   }
 }
 
+APInt APIntOps::mulhu(const APInt &C1, const APInt &C2) {
+  // Return higher order bits for unsigned (C1 * C2)
+  unsigned FullWidth = C1.getBitWidth() * 2;
+  APInt C1Ext = C1.zext(FullWidth);
+  APInt C2Ext = C2.zext(FullWidth);
+  return (C1Ext * C2Ext).extractBits(C1.getBitWidth(), C1.getBitWidth());
+}
+
+APInt APIntOps::mulhs(const APInt &C1, const APInt &C2) {
----------------
Sh0g0-1758 wrote:

done.

https://github.com/llvm/llvm-project/pull/84609


More information about the llvm-commits mailing list