543eb5db56b5ad4c82083c8340df72201ed71e9d
[riscv-isa-sim.git] / softfloat / s_add192.c
1
2 #include <stdint.h>
3 #include "platform.h"
4 #include "primitives.h"
5
6 struct uint192
7 softfloat_add192(
8 uint64_t a128,
9 uint64_t a64,
10 uint64_t a0,
11 uint64_t b128,
12 uint64_t b64,
13 uint64_t b0
14 )
15 {
16 struct uint192 z;
17 unsigned int carry64, carry128;
18
19 z.v0 = a0 + b0;
20 carry64 = ( z.v0 < a0 );
21 z.v64 = a64 + b64;
22 carry128 = ( z.v64 < a64 );
23 z.v128 = a128 + b128;
24 z.v64 += carry64;
25 carry128 += ( z.v64 < carry64 );
26 z.v128 += carry128;
27 return z;
28
29 }
30