4 #include "primitives.h"
6 struct uint128
softfloat_mul64To128( uint64_t a
, uint64_t b
)
8 uint32_t a32
, a0
, b32
, b0
;
10 uint64_t mid1
, mid2
, mid
;
16 z
.v0
= (uint64_t) a0
* b0
;
17 mid1
= (uint64_t) a32
* b0
;
18 mid2
= (uint64_t) a0
* b32
;
19 z
.v64
= (uint64_t) a32
* b32
;
21 z
.v64
+= ( (uint64_t) ( mid
< mid1
) )<<32 | mid
>>32;
24 z
.v64
+= ( z
.v0
< mid
);