Fix undefined behavior when shifting left by 32 bits

See https://bugzilla.nasm.us/show_bug.cgi?id=3392368

Signed-off-by: Michael Bradshaw <mjbshaw@google.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
diff --git a/asm/float.c b/asm/float.c
index 37f5585..7d313a5 100644
--- a/asm/float.c
+++ b/asm/float.c
@@ -556,7 +556,7 @@
                         mp = &mult[MANT_LIMBS]; /* Guard slot */
                     ms += LIMB_BITS;
                 }
-                *mp |= v << ms;
+                *mp |= v << (ms % (sizeof(fp_limb) * CHAR_BIT));
                 ms -= bits;
 
                 if (!seendot)