Wire Sysio Wire Sysion 1.0.0
Loading...
Searching...
No Matches
s_mul128To256M.c File Reference
#include <stdint.h>
#include "platform.h"
#include "primitives.h"
Include dependency graph for s_mul128To256M.c:

Go to the source code of this file.

Macros

#define softfloat_mul128To256M   softfloat_mul128To256M
 

Functions

void softfloat_mul128To256M (uint64_t a64, uint64_t a0, uint64_t b64, uint64_t b0, uint64_t *zPtr)
 

Macro Definition Documentation

◆ softfloat_mul128To256M

#define softfloat_mul128To256M   softfloat_mul128To256M

Definition at line 42 of file s_mul128To256M.c.

Function Documentation

◆ softfloat_mul128To256M()

void softfloat_mul128To256M ( uint64_t a64,
uint64_t a0,
uint64_t b64,
uint64_t b0,
uint64_t * zPtr )

Definition at line 46 of file s_mul128To256M.c.

48{
49 struct uint128 p0, p64, p128;
50 uint_fast64_t z64, z128, z192;
51
52 p0 = softfloat_mul64To128( a0, b0 );
53 zPtr[indexWord( 4, 0 )] = p0.v0;
54 p64 = softfloat_mul64To128( a64, b0 );
55 z64 = p64.v0 + p0.v64;
56 z128 = p64.v64 + (z64 < p64.v0);
57 p128 = softfloat_mul64To128( a64, b64 );
58 z128 += p128.v0;
59 z192 = p128.v64 + (z128 < p128.v0);
60 p64 = softfloat_mul64To128( a0, b64 );
61 z64 += p64.v0;
62 zPtr[indexWord( 4, 1 )] = z64;
63 p64.v64 += (z64 < p64.v0);
64 z128 += p64.v64;
65 zPtr[indexWord( 4, 2 )] = z128;
66 zPtr[indexWord( 4, 3 )] = z192 + (z128 < p64.v64);
67
68}
#define indexWord(total, n)
struct uint128 softfloat_mul64To128(uint64_t a, uint64_t b)
uint64_t uint_fast64_t
Definition stdint.h:157
Here is the call graph for this function: