A Discrete-Event Network Simulator
API
Loading...
Searching...
No Matches
cairo-wideint-private.h File Reference

cairo_x function declarations, which provide the fallback high precision arithmetic implementation. More...

#include "ns3/core-config.h"
+ Include dependency graph for cairo-wideint-private.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  cairo_int128_t
 
struct  cairo_int64_t
 
struct  cairo_quorem128_t
 
struct  cairo_quorem64_t
 
struct  cairo_uquorem128_t
 
struct  cairo_uquorem64_t
 

Macros

#define _cairo_int128_add(a, b)   _cairo_uint128_add (a,b)
 
#define _cairo_int128_eq(a, b)   _cairo_uint128_eq (a,b)
 
#define _cairo_int128_ge(a, b)   (!_cairo_int128_lt (a,b))
 
#define _cairo_int128_gt(a, b)   _cairo_int128_lt (b,a)
 
#define _cairo_int128_le(a, b)   (!_cairo_int128_gt (a,b))
 
#define _cairo_int128_lsl(a, b)   _cairo_uint128_lsl (a,b)
 
#define _cairo_int128_mul(a, b)   _cairo_uint128_mul (a,b)
 
#define _cairo_int128_ne(a, b)   (!_cairo_int128_eq (a,b))
 
#define _cairo_int128_negate(a)   _cairo_uint128_negate (a)
 
#define _cairo_int128_negative(a)   (_cairo_uint128_negative (a))
 
#define _cairo_int128_not(a)   _cairo_uint128_not (a)
 
#define _cairo_int128_rsa(a, b)   _cairo_uint128_rsa (a,b)
 
#define _cairo_int128_rsl(a, b)   _cairo_uint128_rsl (a,b)
 
#define _cairo_int128_sub(a, b)   _cairo_uint128_sub (a,b)
 
#define _cairo_int128_to_int32(a)   _cairo_int64_to_int32 (_cairo_int128_to_int64 (a))
 
#define _cairo_int128_to_int64(a)   ((cairo_int64_t)(a).lo)
 
#define _cairo_int128_to_uint128(i)   (i)
 
#define _cairo_int64_add(a, b)   _cairo_uint64_add (a,b)
 
#define _cairo_int64_eq(a, b)   _cairo_uint64_eq (a,b)
 
#define _cairo_int64_ge(a, b)   (!_cairo_int64_lt (a,b))
 
#define _cairo_int64_gt(a, b)   _cairo_int64_lt (b,a)
 
#define _cairo_int64_le(a, b)   (!_cairo_int64_gt (a,b))
 
#define _cairo_int64_lsl(a, b)   _cairo_uint64_lsl (a,b)
 
#define _cairo_int64_mul(a, b)   _cairo_uint64_mul (a,b)
 
#define _cairo_int64_ne(a, b)   (!_cairo_int64_eq (a,b))
 
#define _cairo_int64_negate(a)   _cairo_uint64_negate (a)
 
#define _cairo_int64_negative(a)   (((int32_t)((a).hi)) < 0)
 
#define _cairo_int64_not(a)   _cairo_uint64_not (a)
 
#define _cairo_int64_rsa(a, b)   _cairo_uint64_rsa (a,b)
 
#define _cairo_int64_rsl(a, b)   _cairo_uint64_rsl (a,b)
 
#define _cairo_int64_sub(a, b)   _cairo_uint64_sub (a,b)
 
#define _cairo_int64_to_int32(a)   ((int32_t) _cairo_uint64_to_uint32 (a))
 
#define _cairo_int64_to_uint64(i)   (i)
 
#define _cairo_uint128_ge(a, b)   (!_cairo_uint128_lt (a,b))
 
#define _cairo_uint128_gt(a, b)   _cairo_uint128_lt (b,a)
 
#define _cairo_uint128_le(a, b)   (!_cairo_uint128_gt (a,b))
 
#define _cairo_uint128_ne(a, b)   (!_cairo_uint128_eq (a,b))
 
#define _cairo_uint128_negative(a)   (_cairo_uint64_negative (a.hi))
 
#define _cairo_uint128_to_int128(i)   (i)
 
#define _cairo_uint128_to_uint32(a)   _cairo_uint64_to_uint32 (_cairo_uint128_to_uint64 (a))
 
#define _cairo_uint128_to_uint64(a)   ((a).lo)
 
#define _cairo_uint64_ge(a, b)   (!_cairo_uint64_lt (a,b))
 
#define _cairo_uint64_gt(a, b)   _cairo_uint64_lt (b,a)
 
#define _cairo_uint64_le(a, b)   (!_cairo_uint64_gt (a,b))
 
#define _cairo_uint64_ne(a, b)   (!_cairo_uint64_eq (a,b))
 
#define _cairo_uint64_negative(a)   (((int32_t)((a).hi)) < 0)
 
#define _cairo_uint64_to_int64(i)   (i)
 
#define _cairo_uint64_to_uint32(a)   ((a).lo)
 
#define cairo_I   cairo_private
 
#define cairo_private
 
#define HAVE_UINT64_T   1
 

Functions

cairo_quorem128_t cairo_I _cairo_int128_divrem (cairo_int128_t num, cairo_int128_t den)
 
int cairo_I _cairo_int128_lt (cairo_int128_t a, cairo_int128_t b)
 
cairo_int128_t cairo_I _cairo_int32_to_int128 (int32_t i)
 
cairo_int64_t cairo_I _cairo_int32_to_int64 (int32_t i)
 
cairo_int64_t cairo_I _cairo_int32x32_64_mul (int32_t a, int32_t b)
 
cairo_quorem64_t cairo_I _cairo_int64_divrem (cairo_int64_t num, cairo_int64_t den)
 
int cairo_I _cairo_int64_lt (cairo_uint64_t a, cairo_uint64_t b)
 
cairo_int128_t cairo_I _cairo_int64_to_int128 (cairo_int64_t i)
 
cairo_int128_t cairo_I _cairo_int64x64_128_mul (cairo_int64_t a, cairo_int64_t b)
 
cairo_quorem64_t cairo_I _cairo_int_96by64_32x64_divrem (cairo_int128_t num, cairo_int64_t den)
 
cairo_uint128_t cairo_I _cairo_uint128_add (cairo_uint128_t a, cairo_uint128_t b)
 
cairo_uquorem128_t cairo_I _cairo_uint128_divrem (cairo_uint128_t num, cairo_uint128_t den)
 
int cairo_I _cairo_uint128_eq (cairo_uint128_t a, cairo_uint128_t b)
 
cairo_uint128_t cairo_I _cairo_uint128_lsl (cairo_uint128_t a, int shift)
 
int cairo_I _cairo_uint128_lt (cairo_uint128_t a, cairo_uint128_t b)
 
cairo_uint128_t cairo_I _cairo_uint128_mul (cairo_uint128_t a, cairo_uint128_t b)
 
cairo_uint128_t cairo_I _cairo_uint128_negate (cairo_uint128_t a)
 
cairo_uint128_t cairo_I _cairo_uint128_not (cairo_uint128_t a)
 
cairo_uint128_t cairo_I _cairo_uint128_rsa (cairo_uint128_t a, int shift)
 
cairo_uint128_t cairo_I _cairo_uint128_rsl (cairo_uint128_t a, int shift)
 
cairo_uint128_t cairo_I _cairo_uint128_sub (cairo_uint128_t a, cairo_uint128_t b)
 
cairo_uint128_t cairo_I _cairo_uint32_to_uint128 (uint32_t i)
 
cairo_uint64_t cairo_I _cairo_uint32_to_uint64 (uint32_t i)
 
cairo_uint64_t cairo_I _cairo_uint32x32_64_mul (uint32_t a, uint32_t b)
 
cairo_uint64_t cairo_I _cairo_uint64_add (cairo_uint64_t a, cairo_uint64_t b)
 
cairo_uquorem64_t cairo_I _cairo_uint64_divrem (cairo_uint64_t num, cairo_uint64_t den)
 
int cairo_I _cairo_uint64_eq (cairo_uint64_t a, cairo_uint64_t b)
 
cairo_uint64_t cairo_I _cairo_uint64_lsl (cairo_uint64_t a, int shift)
 
int cairo_I _cairo_uint64_lt (cairo_uint64_t a, cairo_uint64_t b)
 
cairo_uint64_t cairo_I _cairo_uint64_mul (cairo_uint64_t a, cairo_uint64_t b)
 
cairo_uint64_t cairo_I _cairo_uint64_negate (cairo_uint64_t a)
 
cairo_uint64_t cairo_I _cairo_uint64_not (cairo_uint64_t a)
 
cairo_uint64_t cairo_I _cairo_uint64_rsa (cairo_uint64_t a, int shift)
 
cairo_uint64_t cairo_I _cairo_uint64_rsl (cairo_uint64_t a, int shift)
 
cairo_uint64_t cairo_I _cairo_uint64_sub (cairo_uint64_t a, cairo_uint64_t b)
 
cairo_uint128_t cairo_I _cairo_uint64_to_uint128 (cairo_uint64_t i)
 
cairo_uint128_t cairo_I _cairo_uint64x64_128_mul (cairo_uint64_t a, cairo_uint64_t b)
 
cairo_uquorem64_t cairo_I _cairo_uint_96by64_32x64_divrem (cairo_uint128_t num, cairo_uint64_t den)
 _cairo_uint_96by64_32x64_divrem:
 

Variables

const char * cairo_impl128
 
const char * cairo_impl64
 

Detailed Description

cairo_x function declarations, which provide the fallback high precision arithmetic implementation.

Definition in file cairo-wideint-private.h.

Macro Definition Documentation

◆ _cairo_int128_add

#define _cairo_int128_add ( a,
b )   _cairo_uint128_add (a,b)

Definition at line 264 of file cairo-wideint-private.h.

◆ _cairo_int128_eq

#define _cairo_int128_eq ( a,
b )   _cairo_uint128_eq (a,b)

Definition at line 272 of file cairo-wideint-private.h.

◆ _cairo_int128_ge

#define _cairo_int128_ge ( a,
b )   (!_cairo_int128_lt (a,b))

Definition at line 354 of file cairo-wideint-private.h.

◆ _cairo_int128_gt

#define _cairo_int128_gt ( a,
b )   _cairo_int128_lt (b,a)

Definition at line 355 of file cairo-wideint-private.h.

◆ _cairo_int128_le

#define _cairo_int128_le ( a,
b )   (!_cairo_int128_gt (a,b))

Definition at line 352 of file cairo-wideint-private.h.

◆ _cairo_int128_lsl

#define _cairo_int128_lsl ( a,
b )   _cairo_uint128_lsl (a,b)

Definition at line 268 of file cairo-wideint-private.h.

Referenced by ns3::int64x64_t::Udiv().

◆ _cairo_int128_mul

#define _cairo_int128_mul ( a,
b )   _cairo_uint128_mul (a,b)

Definition at line 266 of file cairo-wideint-private.h.

◆ _cairo_int128_ne

#define _cairo_int128_ne ( a,
b )   (!_cairo_int128_eq (a,b))

Definition at line 353 of file cairo-wideint-private.h.

◆ _cairo_int128_negate

◆ _cairo_int128_negative

◆ _cairo_int128_not

#define _cairo_int128_not ( a)    _cairo_uint128_not (a)

Definition at line 275 of file cairo-wideint-private.h.

◆ _cairo_int128_rsa

#define _cairo_int128_rsa ( a,
b )   _cairo_uint128_rsa (a,b)

Definition at line 270 of file cairo-wideint-private.h.

◆ _cairo_int128_rsl

#define _cairo_int128_rsl ( a,
b )   _cairo_uint128_rsl (a,b)

Definition at line 269 of file cairo-wideint-private.h.

◆ _cairo_int128_sub

#define _cairo_int128_sub ( a,
b )   _cairo_uint128_sub (a,b)

Definition at line 265 of file cairo-wideint-private.h.

◆ _cairo_int128_to_int32

#define _cairo_int128_to_int32 ( a)    _cairo_int64_to_int32 (_cairo_int128_to_int64 (a))

Definition at line 263 of file cairo-wideint-private.h.

◆ _cairo_int128_to_int64

#define _cairo_int128_to_int64 ( a)    ((cairo_int64_t)(a).lo)

Definition at line 262 of file cairo-wideint-private.h.

◆ _cairo_int128_to_uint128

#define _cairo_int128_to_uint128 ( i)    (i)

Definition at line 258 of file cairo-wideint-private.h.

Referenced by ns3::output_sign().

◆ _cairo_int64_add

#define _cairo_int64_add ( a,
b )   _cairo_uint64_add (a,b)

Definition at line 137 of file cairo-wideint-private.h.

◆ _cairo_int64_eq

#define _cairo_int64_eq ( a,
b )   _cairo_uint64_eq (a,b)

Definition at line 142 of file cairo-wideint-private.h.

◆ _cairo_int64_ge

#define _cairo_int64_ge ( a,
b )   (!_cairo_int64_lt (a,b))

Definition at line 202 of file cairo-wideint-private.h.

◆ _cairo_int64_gt

#define _cairo_int64_gt ( a,
b )   _cairo_int64_lt (b,a)

Definition at line 203 of file cairo-wideint-private.h.

◆ _cairo_int64_le

#define _cairo_int64_le ( a,
b )   (!_cairo_int64_gt (a,b))

Definition at line 200 of file cairo-wideint-private.h.

◆ _cairo_int64_lsl

#define _cairo_int64_lsl ( a,
b )   _cairo_uint64_lsl (a,b)

Definition at line 143 of file cairo-wideint-private.h.

◆ _cairo_int64_mul

#define _cairo_int64_mul ( a,
b )   _cairo_uint64_mul (a,b)

Definition at line 139 of file cairo-wideint-private.h.

◆ _cairo_int64_ne

#define _cairo_int64_ne ( a,
b )   (!_cairo_int64_eq (a,b))

Definition at line 201 of file cairo-wideint-private.h.

◆ _cairo_int64_negate

#define _cairo_int64_negate ( a)    _cairo_uint64_negate (a)

Definition at line 146 of file cairo-wideint-private.h.

Referenced by _cairo_int64_divrem(), and _cairo_int_96by64_32x64_divrem().

◆ _cairo_int64_negative

#define _cairo_int64_negative ( a)    (((int32_t)((a).hi)) < 0)

◆ _cairo_int64_not

#define _cairo_int64_not ( a)    _cairo_uint64_not (a)

Definition at line 148 of file cairo-wideint-private.h.

◆ _cairo_int64_rsa

#define _cairo_int64_rsa ( a,
b )   _cairo_uint64_rsa (a,b)

Definition at line 145 of file cairo-wideint-private.h.

◆ _cairo_int64_rsl

#define _cairo_int64_rsl ( a,
b )   _cairo_uint64_rsl (a,b)

Definition at line 144 of file cairo-wideint-private.h.

◆ _cairo_int64_sub

#define _cairo_int64_sub ( a,
b )   _cairo_uint64_sub (a,b)

Definition at line 138 of file cairo-wideint-private.h.

◆ _cairo_int64_to_int32

#define _cairo_int64_to_int32 ( a)    ((int32_t) _cairo_uint64_to_uint32 (a))

Definition at line 136 of file cairo-wideint-private.h.

◆ _cairo_int64_to_uint64

#define _cairo_int64_to_uint64 ( i)    (i)

◆ _cairo_uint128_ge

#define _cairo_uint128_ge ( a,
b )   (!_cairo_uint128_lt (a,b))

Definition at line 349 of file cairo-wideint-private.h.

◆ _cairo_uint128_gt

#define _cairo_uint128_gt ( a,
b )   _cairo_uint128_lt (b,a)

Definition at line 350 of file cairo-wideint-private.h.

◆ _cairo_uint128_le

#define _cairo_uint128_le ( a,
b )   (!_cairo_uint128_gt (a,b))

Definition at line 347 of file cairo-wideint-private.h.

Referenced by _cairo_uint128_divrem().

◆ _cairo_uint128_ne

#define _cairo_uint128_ne ( a,
b )   (!_cairo_uint128_eq (a,b))

Definition at line 348 of file cairo-wideint-private.h.

Referenced by _cairo_uint128_divrem().

◆ _cairo_uint128_negative

#define _cairo_uint128_negative ( a)    (_cairo_uint64_negative (a.hi))

Definition at line 254 of file cairo-wideint-private.h.

◆ _cairo_uint128_to_int128

#define _cairo_uint128_to_int128 ( i)    (i)

Definition at line 257 of file cairo-wideint-private.h.

◆ _cairo_uint128_to_uint32

#define _cairo_uint128_to_uint32 ( a)    _cairo_uint64_to_uint32 (_cairo_uint128_to_uint64 (a))

Definition at line 243 of file cairo-wideint-private.h.

Referenced by _cairo_uint_96by64_32x64_divrem().

◆ _cairo_uint128_to_uint64

#define _cairo_uint128_to_uint64 ( a)    ((a).lo)

Definition at line 242 of file cairo-wideint-private.h.

Referenced by _cairo_uint_96by64_32x64_divrem().

◆ _cairo_uint64_ge

#define _cairo_uint64_ge ( a,
b )   (!_cairo_uint64_lt (a,b))

Definition at line 197 of file cairo-wideint-private.h.

Referenced by _cairo_uint_96by64_32x64_divrem().

◆ _cairo_uint64_gt

#define _cairo_uint64_gt ( a,
b )   _cairo_uint64_lt (b,a)

Definition at line 198 of file cairo-wideint-private.h.

Referenced by _cairo_uint128_sub().

◆ _cairo_uint64_le

#define _cairo_uint64_le ( a,
b )   (!_cairo_uint64_gt (a,b))

Definition at line 195 of file cairo-wideint-private.h.

Referenced by _cairo_uint64_divrem().

◆ _cairo_uint64_ne

#define _cairo_uint64_ne ( a,
b )   (!_cairo_uint64_eq (a,b))

Definition at line 196 of file cairo-wideint-private.h.

◆ _cairo_uint64_negative

#define _cairo_uint64_negative ( a)    (((int32_t)((a).hi)) < 0)

Definition at line 129 of file cairo-wideint-private.h.

◆ _cairo_uint64_to_int64

#define _cairo_uint64_to_int64 ( i)    (i)

Definition at line 132 of file cairo-wideint-private.h.

◆ _cairo_uint64_to_uint32

#define _cairo_uint64_to_uint32 ( a)    ((a).lo)

Definition at line 118 of file cairo-wideint-private.h.

Referenced by _cairo_uint_96by64_32x64_divrem().

◆ cairo_I

#define cairo_I   cairo_private

Definition at line 107 of file cairo-wideint-private.h.

◆ cairo_private

#define cairo_private

Definition at line 48 of file cairo-wideint-private.h.

◆ HAVE_UINT64_T

#define HAVE_UINT64_T   1

Definition at line 49 of file cairo-wideint-private.h.

Function Documentation

◆ _cairo_int128_divrem()

cairo_quorem128_t cairo_I _cairo_int128_divrem ( cairo_int128_t num,
cairo_int128_t den )

Definition at line 653 of file cairo-wideint.c.

References _cairo_int128_negate, _cairo_int128_negative, _cairo_uint128_divrem(), cairo_quorem128_t::quo, cairo_uquorem128_t::quo, cairo_quorem128_t::rem, and cairo_uquorem128_t::rem.

+ Here is the call graph for this function:

◆ _cairo_int128_lt()

int cairo_I _cairo_int128_lt ( cairo_int128_t a,
cairo_int128_t b )

Definition at line 579 of file cairo-wideint.c.

References _cairo_int128_negative, and _cairo_uint128_lt().

+ Here is the call graph for this function:

◆ _cairo_int32_to_int128()

cairo_int128_t cairo_I _cairo_int32_to_int128 ( int32_t i)

Definition at line 359 of file cairo-wideint.c.

References _cairo_int32_to_int64(), cairo_int128_t::hi, and cairo_int128_t::lo.

+ Here is the call graph for this function:

◆ _cairo_int32_to_int64()

cairo_int64_t cairo_I _cairo_int32_to_int64 ( int32_t i)

Definition at line 77 of file cairo-wideint.c.

Referenced by _cairo_int32_to_int128(), and _cairo_int64_to_int128().

+ Here is the caller graph for this function:

◆ _cairo_int32x32_64_mul()

cairo_int64_t cairo_I _cairo_int32x32_64_mul ( int32_t a,
int32_t b )

Definition at line 153 of file cairo-wideint.c.

References _cairo_uint32x32_64_mul(), and cairo_int64_t::hi.

+ Here is the call graph for this function:

◆ _cairo_int64_divrem()

cairo_quorem64_t cairo_I _cairo_int64_divrem ( cairo_int64_t num,
cairo_int64_t den )

Definition at line 307 of file cairo-wideint.c.

References _cairo_int64_negate, _cairo_int64_negative, _cairo_uint64_divrem(), cairo_quorem64_t::quo, cairo_uquorem64_t::quo, cairo_quorem64_t::rem, and cairo_uquorem64_t::rem.

+ Here is the call graph for this function:

◆ _cairo_int64_lt()

int cairo_I _cairo_int64_lt ( cairo_uint64_t a,
cairo_uint64_t b )

◆ _cairo_int64_to_int128()

cairo_int128_t cairo_I _cairo_int64_to_int128 ( cairo_int64_t i)

Definition at line 379 of file cairo-wideint.c.

References _cairo_int32_to_int64(), _cairo_int64_negative, cairo_int128_t::hi, and cairo_int128_t::lo.

+ Here is the call graph for this function:

◆ _cairo_int64x64_128_mul()

cairo_int128_t cairo_I _cairo_int64x64_128_mul ( cairo_int64_t a,
cairo_int64_t b )

Definition at line 489 of file cairo-wideint.c.

References _cairo_int64_negative, _cairo_int64_to_uint64, _cairo_uint64_sub(), _cairo_uint64x64_128_mul(), and cairo_int128_t::hi.

+ Here is the call graph for this function:

◆ _cairo_int_96by64_32x64_divrem()

cairo_quorem64_t cairo_I _cairo_int_96by64_32x64_divrem ( cairo_int128_t num,
cairo_int64_t den )

Definition at line 796 of file cairo-wideint.c.

References _cairo_int128_negate, _cairo_int128_negative, _cairo_int64_negate, _cairo_int64_negative, _cairo_int64_to_uint64, _cairo_uint32s_to_uint64(), _cairo_uint64_eq(), _cairo_uint_96by64_32x64_divrem(), cairo_quorem64_t::quo, cairo_uquorem64_t::quo, cairo_quorem64_t::rem, and cairo_uquorem64_t::rem.

+ Here is the call graph for this function:

◆ _cairo_uint128_add()

cairo_uint128_t cairo_I _cairo_uint128_add ( cairo_uint128_t a,
cairo_uint128_t b )

Definition at line 389 of file cairo-wideint.c.

References _cairo_uint32_to_uint64(), _cairo_uint64_add(), and _cairo_uint64_lt().

Referenced by _cairo_uint128_divrem(), _cairo_uint128_negate(), ns3::int64x64_t::Round(), ns3::int64x64_t::Udiv(), ns3::int64x64_t::Umul(), and ns3::int64x64_t::UmulByInvert().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ _cairo_uint128_divrem()

cairo_uquorem128_t cairo_I _cairo_uint128_divrem ( cairo_uint128_t num,
cairo_uint128_t den )

Definition at line 602 of file cairo-wideint.c.

References _cairo_msbset64, _cairo_uint128_add(), _cairo_uint128_le, _cairo_uint128_lsl(), _cairo_uint128_lt(), _cairo_uint128_ne, _cairo_uint128_rsl(), _cairo_uint128_sub(), _cairo_uint32_to_uint128(), cairo_uquorem128_t::quo, and cairo_uquorem128_t::rem.

Referenced by _cairo_int128_divrem(), and ns3::int64x64_t::Udiv().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ _cairo_uint128_eq()

int cairo_I _cairo_uint128_eq ( cairo_uint128_t a,
cairo_uint128_t b )

Definition at line 589 of file cairo-wideint.c.

References _cairo_uint64_eq().

Referenced by ns3::int64x64_t::Udiv().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ _cairo_uint128_lsl()

cairo_uint128_t cairo_I _cairo_uint128_lsl ( cairo_uint128_t a,
int shift )

Definition at line 517 of file cairo-wideint.c.

References _cairo_uint32_to_uint64(), _cairo_uint64_add(), _cairo_uint64_lsl(), and _cairo_uint64_rsl().

Referenced by _cairo_uint128_divrem(), ns3::int64x64_t::Udiv(), and ns3::int64x64_t::Umul().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ _cairo_uint128_lt()

int cairo_I _cairo_uint128_lt ( cairo_uint128_t a,
cairo_uint128_t b )

Definition at line 571 of file cairo-wideint.c.

References _cairo_uint64_eq(), and _cairo_uint64_lt().

Referenced by _cairo_int128_lt(), _cairo_uint128_divrem(), and ns3::int64x64_t::Udiv().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ _cairo_uint128_mul()

cairo_uint128_t cairo_I _cairo_uint128_mul ( cairo_uint128_t a,
cairo_uint128_t b )

Definition at line 504 of file cairo-wideint.c.

References _cairo_uint64_add(), _cairo_uint64_mul(), and _cairo_uint64x64_128_mul().

+ Here is the call graph for this function:

◆ _cairo_uint128_negate()

cairo_uint128_t cairo_I _cairo_uint128_negate ( cairo_uint128_t a)

Definition at line 635 of file cairo-wideint.c.

References _cairo_uint128_add(), _cairo_uint32_to_uint128(), and _cairo_uint64_not().

Referenced by ns3::output_sign().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ _cairo_uint128_not()

cairo_uint128_t cairo_I _cairo_uint128_not ( cairo_uint128_t a)

Definition at line 643 of file cairo-wideint.c.

References _cairo_uint64_not().

+ Here is the call graph for this function:

◆ _cairo_uint128_rsa()

cairo_uint128_t cairo_I _cairo_uint128_rsa ( cairo_uint128_t a,
int shift )

◆ _cairo_uint128_rsl()

cairo_uint128_t cairo_I _cairo_uint128_rsl ( cairo_uint128_t a,
int shift )

Definition at line 535 of file cairo-wideint.c.

References _cairo_uint32_to_uint64(), _cairo_uint64_add(), _cairo_uint64_lsl(), and _cairo_uint64_rsl().

Referenced by _cairo_uint128_divrem(), _cairo_uint_96by64_32x64_divrem(), and ns3::int64x64_t::Udiv().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ _cairo_uint128_sub()

cairo_uint128_t cairo_I _cairo_uint128_sub ( cairo_uint128_t a,
cairo_uint128_t b )

Definition at line 401 of file cairo-wideint.c.

References _cairo_uint32_to_uint64(), _cairo_uint64_gt, and _cairo_uint64_sub().

Referenced by _cairo_uint128_divrem().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ _cairo_uint32_to_uint128()

cairo_uint128_t cairo_I _cairo_uint32_to_uint128 ( uint32_t i)

Definition at line 349 of file cairo-wideint.c.

References _cairo_uint32_to_uint64().

Referenced by _cairo_uint128_divrem(), _cairo_uint128_negate(), and ns3::int64x64_t::Udiv().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ _cairo_uint32_to_uint64()

cairo_uint64_t cairo_I _cairo_uint32_to_uint64 ( uint32_t i)

Definition at line 67 of file cairo-wideint.c.

Referenced by _cairo_uint128_add(), _cairo_uint128_lsl(), _cairo_uint128_rsl(), _cairo_uint128_sub(), _cairo_uint32_to_uint128(), _cairo_uint64_divrem(), _cairo_uint64_to_uint128(), and _cairo_uint_96by64_32x64_divrem().

+ Here is the caller graph for this function:

◆ _cairo_uint32x32_64_mul()

cairo_uint64_t cairo_I _cairo_uint32x32_64_mul ( uint32_t a,
uint32_t b )

Definition at line 125 of file cairo-wideint.c.

References uint32_carry16, uint32_hi, and uint32_lo.

Referenced by _cairo_int32x32_64_mul(), _cairo_uint64_mul(), _cairo_uint64x64_128_mul(), and _cairo_uint_96by64_32x64_divrem().

+ Here is the caller graph for this function:

◆ _cairo_uint64_add()

cairo_uint64_t cairo_I _cairo_uint64_add ( cairo_uint64_t a,
cairo_uint64_t b )

Definition at line 97 of file cairo-wideint.c.

Referenced by _cairo_uint128_add(), _cairo_uint128_lsl(), _cairo_uint128_mul(), _cairo_uint128_rsa(), _cairo_uint128_rsl(), _cairo_uint64_divrem(), _cairo_uint64x64_128_mul(), and _cairo_uint_96by64_32x64_divrem().

+ Here is the caller graph for this function:

◆ _cairo_uint64_divrem()

cairo_uquorem64_t cairo_I _cairo_uint64_divrem ( cairo_uint64_t num,
cairo_uint64_t den )

Definition at line 272 of file cairo-wideint.c.

References _cairo_uint32_to_uint64(), _cairo_uint64_add(), _cairo_uint64_le, _cairo_uint64_lsl(), _cairo_uint64_lt(), _cairo_uint64_rsl(), _cairo_uint64_sub(), cairo_uquorem64_t::quo, and cairo_uquorem64_t::rem.

Referenced by _cairo_int64_divrem(), and _cairo_uint_96by64_32x64_divrem().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ _cairo_uint64_eq()

int cairo_I _cairo_uint64_eq ( cairo_uint64_t a,
cairo_uint64_t b )

Definition at line 235 of file cairo-wideint.c.

Referenced by _cairo_int_96by64_32x64_divrem(), _cairo_uint128_eq(), and _cairo_uint128_lt().

+ Here is the caller graph for this function:

◆ _cairo_uint64_lsl()

cairo_uint64_t cairo_I _cairo_uint64_lsl ( cairo_uint64_t a,
int shift )

Definition at line 175 of file cairo-wideint.c.

Referenced by _cairo_uint128_lsl(), _cairo_uint128_rsa(), _cairo_uint128_rsl(), and _cairo_uint64_divrem().

+ Here is the caller graph for this function:

◆ _cairo_uint64_lt()

int cairo_I _cairo_uint64_lt ( cairo_uint64_t a,
cairo_uint64_t b )

Definition at line 228 of file cairo-wideint.c.

Referenced by _cairo_int64_lt(), _cairo_uint128_add(), _cairo_uint128_lt(), _cairo_uint64_divrem(), _cairo_uint64x64_128_mul(), and _cairo_uint_96by64_32x64_divrem().

+ Here is the caller graph for this function:

◆ _cairo_uint64_mul()

cairo_uint64_t cairo_I _cairo_uint64_mul ( cairo_uint64_t a,
cairo_uint64_t b )

Definition at line 165 of file cairo-wideint.c.

References _cairo_uint32x32_64_mul().

Referenced by _cairo_uint128_mul().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ _cairo_uint64_negate()

cairo_uint64_t cairo_I _cairo_uint64_negate ( cairo_uint64_t a)

Definition at line 259 of file cairo-wideint.c.

◆ _cairo_uint64_not()

cairo_uint64_t cairo_I _cairo_uint64_not ( cairo_uint64_t a)

Definition at line 251 of file cairo-wideint.c.

Referenced by _cairo_uint128_negate(), and _cairo_uint128_not().

+ Here is the caller graph for this function:

◆ _cairo_uint64_rsa()

cairo_uint64_t cairo_I _cairo_uint64_rsa ( cairo_uint64_t a,
int shift )

◆ _cairo_uint64_rsl()

cairo_uint64_t cairo_I _cairo_uint64_rsl ( cairo_uint64_t a,
int shift )

Definition at line 192 of file cairo-wideint.c.

Referenced by _cairo_uint128_lsl(), _cairo_uint128_rsa(), _cairo_uint128_rsl(), and _cairo_uint64_divrem().

+ Here is the caller graph for this function:

◆ _cairo_uint64_sub()

cairo_uint64_t cairo_I _cairo_uint64_sub ( cairo_uint64_t a,
cairo_uint64_t b )

Definition at line 109 of file cairo-wideint.c.

Referenced by _cairo_int64x64_128_mul(), _cairo_uint128_sub(), _cairo_uint64_divrem(), and _cairo_uint_96by64_32x64_divrem().

+ Here is the caller graph for this function:

◆ _cairo_uint64_to_uint128()

cairo_uint128_t cairo_I _cairo_uint64_to_uint128 ( cairo_uint64_t i)

Definition at line 369 of file cairo-wideint.c.

References _cairo_uint32_to_uint64().

Referenced by ns3::int64x64_t::Umul().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ _cairo_uint64x64_128_mul()

cairo_uint128_t cairo_I _cairo_uint64x64_128_mul ( cairo_uint64_t a,
cairo_uint64_t b )

Definition at line 461 of file cairo-wideint.c.

References _cairo_uint32x32_64_mul(), _cairo_uint64_add(), _cairo_uint64_lt(), uint64_carry32, uint64_hi(), uint64_hi32, uint64_lo(), uint64_lo32, and uint64_shift32().

Referenced by _cairo_int64x64_128_mul(), _cairo_uint128_mul(), ns3::int64x64_t::Umul(), and ns3::int64x64_t::UmulByInvert().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ _cairo_uint_96by64_32x64_divrem()

cairo_uquorem64_t cairo_I _cairo_uint_96by64_32x64_divrem ( cairo_uint128_t num,
cairo_uint64_t den )

_cairo_uint_96by64_32x64_divrem:

Compute a 32 bit quotient and 64 bit remainder of a 96 bit unsigned dividend and 64 bit divisor. If the quotient doesn't fit into 32 bits then the returned remainder is equal to the divisor, and the quotient is the largest representable 64 bit integer. It is an error to call this function with the high 32 bits of ‘num’ being non-zero.

Definition at line 686 of file cairo-wideint.c.

References _cairo_uint128_rsl(), _cairo_uint128_to_uint32, _cairo_uint128_to_uint64, _cairo_uint32_to_uint64(), _cairo_uint32s_to_uint64(), _cairo_uint32x32_64_mul(), _cairo_uint64_add(), _cairo_uint64_divrem(), _cairo_uint64_ge, _cairo_uint64_lt(), _cairo_uint64_sub(), _cairo_uint64_to_uint32, cairo_uquorem64_t::quo, cairo_uquorem64_t::rem, and uint64_hi32.

Referenced by _cairo_int_96by64_32x64_divrem().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Variable Documentation

◆ cairo_impl128

const char* cairo_impl128
extern

Definition at line 346 of file cairo-wideint.c.

Referenced by ns3::int64x64::test::Int64x64ImplTestCase::DoRun().

◆ cairo_impl64

const char* cairo_impl64
extern

Definition at line 64 of file cairo-wideint.c.

Referenced by ns3::int64x64::test::Int64x64ImplTestCase::DoRun().