36 val = (a.
low & 0xFFFFFFFFULL) + (b.
low & 0xFFFFFFFFULL);
37 out.
i32[0] = (uint32_t)(val & 0xFFFFFFFFULL);
40 val += (a.
low >> 32) + (b.
low >> 32);
41 out.
i32[1] = (uint32_t)val;
44 val += (a.
high & 0xFFFFFFFFULL) + (b.
high & 0xFFFFFFFFULL);
45 out.
i32[2] = (uint32_t)(val & 0xFFFFFFFFULL);
48 val += (a.
high >> 32) + (b.
high >> 32);
49 out.
i32[3] = (uint32_t)val;
75 m = (a & 0xFFFFFFFFULL) * (b & 0xFFFFFFFFULL);
79 m = (a >> 32) * (b & 0xFFFFFFFFULL);
80 out = util_add128(out, util_lshift64_internal_32(m));
82 m = (a & 0xFFFFFFFFULL) * (b >> 32);
83 out = util_add128(out, util_lshift64_internal_32(m));
85 m = (a >> 32) * (b >> 32);
86 out = util_add128(out, util_lshift64_internal_64(m));
96 for (
int i = 3; i >= 0; i--) {
97 val = (val << 32) | a.
i32[i];
103 out.
i32[i] = (uint32_t)(val / b);
Definition: util_uint128.h:19
uint64_t high
Definition: util_uint128.h:24
uint32_t i32[4]
Definition: util_uint128.h:21
uint64_t low
Definition: util_uint128.h:23