[swift-evolution] [Idea] A 128-bit unsigned integer value type

Károly Lőrentey karoly at lorentey.hu
Sat May 21 09:52:27 CDT 2016


On 2016-05-17 14:30:36 +0000, Muse M via swift-evolution said:

> Most programming languages does have 128-bit of type except Swift.

I don't think there is huge demand for a full-blown Int128 type in the 
standard library, but it would be nice to have double-width 
multiplication & division methods in Swift's existing integer types. I 
assume LLVM has intrinsics for this that compile down to single 
instructions on x86_64.

This would speed up some 64-bit fixed-point operations with 128-bit 
temporaries (such as Mach timestamp scaling arithmetic) and allow pure 
Swift arbitrary-precision integer packages to provide faster operations.

I currently need to emulate full-width multiplication/division with 
code such as this:

 
https://github.com/lorentey/BigInt/blob/master/Sources/BigDigit.swift#L102-L177 


A 128/64=64 full-width division done this way requires 2 single-width 
divisions and 6 multiplications. I'd love to replace this with a single 
full-width x86 DIV instruction.

-- 
Károly
@lorentey




More information about the swift-evolution mailing list