A Discrete-Event Network Simulator
API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
cairo-wideint-private.h File Reference
#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_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_int32_to_int64(i)   ((int64_t)(i))
 
#define _cairo_int32x32_64_mul(a, b)   ((int64_t)(a) * (b))
 
#define _cairo_int64_add(a, b)   ((a) + (b))
 
#define _cairo_int64_eq(a, b)   ((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)   ((a) << (b))
 
#define _cairo_int64_lt(a, b)   ((a) < (b))
 
#define _cairo_int64_mul(a, b)   ((a) * (b))
 
#define _cairo_int64_ne(a, b)   (!_cairo_int64_eq (a,b))
 
#define _cairo_int64_negate(a)   (-(a))
 
#define _cairo_int64_negative(a)   ((a) < 0)
 
#define _cairo_int64_not(a)   (~(a))
 
#define _cairo_int64_rsa(a, b)   ((int64_t)(a) >> (b))
 
#define _cairo_int64_rsl(a, b)   ((int64_t)((uint64_t)(a) >> (b)))
 
#define _cairo_int64_sub(a, b)   ((a) - (b))
 
#define _cairo_int64_to_int32(i)   ((int32_t)(i))
 
#define _cairo_int64_to_uint64(i)   ((uint64_t)(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_uint32_to_uint64(i)   ((uint64_t)(i))
 
#define _cairo_uint32x32_64_mul(a, b)   ((uint64_t)(a) * (b))
 
#define _cairo_uint64_add(a, b)   ((a) + (b))
 
#define _cairo_uint64_eq(a, b)   ((a) == (b))
 
#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_lsl(a, b)   ((a) << (b))
 
#define _cairo_uint64_lt(a, b)   ((a) < (b))
 
#define _cairo_uint64_mul(a, b)   ((a) * (b))
 
#define _cairo_uint64_ne(a, b)   (!_cairo_uint64_eq (a,b))
 
#define _cairo_uint64_negate(a)   ((uint64_t) -((int64_t)(a)))
 
#define _cairo_uint64_negative(a)   ((int64_t)(a) < 0)
 
#define _cairo_uint64_not(a)   (~(a))
 
#define _cairo_uint64_rsa(a, b)   ((uint64_t)((int64_t)(a) >> (b)))
 
#define _cairo_uint64_rsl(a, b)   ((uint64_t)(a) >> (b))
 
#define _cairo_uint64_sub(a, b)   ((a) - (b))
 
#define _cairo_uint64_to_int64(i)   ((int64_t)(i))
 
#define _cairo_uint64_to_uint32(i)   ((uint32_t)(i))
 
#define cairo_private
 
#define HAVE_UINT64_T   1
 
#define I   cairo_private
 

Typedefs

typedef int64_t cairo_int64_t
 
typedef uint64_t cairo_uint64_t
 

Functions

cairo_quorem128_t I _cairo_int128_divrem (cairo_int128_t num, cairo_int128_t den)
 
int I _cairo_int128_lt (cairo_int128_t a, cairo_int128_t b)
 
cairo_int128_t I _cairo_int32_to_int128 (int32_t i)
 
cairo_quorem64_t I _cairo_int64_divrem (cairo_int64_t num, cairo_int64_t den)
 
cairo_int128_t I _cairo_int64_to_int128 (cairo_int64_t i)
 
cairo_int128_t I _cairo_int64x64_128_mul (cairo_int64_t a, cairo_int64_t b)
 
cairo_quorem64_t I _cairo_int_96by64_32x64_divrem (cairo_int128_t num, cairo_int64_t den)
 
cairo_uint128_t I _cairo_uint128_add (cairo_uint128_t a, cairo_uint128_t b)
 
cairo_uquorem128_t I _cairo_uint128_divrem (cairo_uint128_t num, cairo_uint128_t den)
 
int I _cairo_uint128_eq (cairo_uint128_t a, cairo_uint128_t b)
 
cairo_uint128_t I _cairo_uint128_lsl (cairo_uint128_t a, int shift)
 
int I _cairo_uint128_lt (cairo_uint128_t a, cairo_uint128_t b)
 
cairo_uint128_t I _cairo_uint128_mul (cairo_uint128_t a, cairo_uint128_t b)
 
cairo_uint128_t I _cairo_uint128_negate (cairo_uint128_t a)
 
cairo_uint128_t I _cairo_uint128_not (cairo_uint128_t a)
 
cairo_uint128_t I _cairo_uint128_rsa (cairo_uint128_t a, int shift)
 
cairo_uint128_t I _cairo_uint128_rsl (cairo_uint128_t a, int shift)
 
cairo_uint128_t I _cairo_uint128_sub (cairo_uint128_t a, cairo_uint128_t b)
 
cairo_uint128_t I _cairo_uint32_to_uint128 (uint32_t i)
 
cairo_uquorem64_t I _cairo_uint64_divrem (cairo_uint64_t num, cairo_uint64_t den)
 
cairo_uint128_t I _cairo_uint64_to_uint128 (cairo_uint64_t i)
 
cairo_uint128_t I _cairo_uint64x64_128_mul (cairo_uint64_t a, cairo_uint64_t b)
 
cairo_uquorem64_t I _cairo_uint_96by64_32x64_divrem (cairo_uint128_t num, cairo_uint64_t den)
 _cairo_uint_96by64_32x64_divrem: More...
 

Macro Definition Documentation

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#define _cairo_int128_negate (   a)    _cairo_uint128_negate (a)

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

#define _cairo_int128_negative (   a)    (_cairo_uint128_negative (a))
#define _cairo_int128_not (   a)    _cairo_uint128_not (a)

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

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

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

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

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

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

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

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

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

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

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

#define _cairo_int128_to_uint128 (   i)    (i)

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

#define _cairo_int32_to_int64 (   i)    ((int64_t)(i))

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

Referenced by _cairo_int32_to_int128(), and _cairo_int64_to_int128().

#define _cairo_int32x32_64_mul (   a,
 
)    ((int64_t)(a) * (b))

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#define _cairo_int64_negate (   a)    (-(a))

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

Referenced by _cairo_int64_divrem(), and _cairo_int_96by64_32x64_divrem().

#define _cairo_int64_negative (   a)    ((a) < 0)
#define _cairo_int64_not (   a)    (~(a))

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

#define _cairo_int64_rsa (   a,
 
)    ((int64_t)(a) >> (b))

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

#define _cairo_int64_rsl (   a,
 
)    ((int64_t)((uint64_t)(a) >> (b)))

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

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

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

#define _cairo_int64_to_int32 (   i)    ((int32_t)(i))

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

#define _cairo_int64_to_uint64 (   i)    ((uint64_t)(i))
#define _cairo_uint128_ge (   a,
 
)    (!_cairo_uint128_lt (a,b))

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

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

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

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

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

Referenced by _cairo_uint128_divrem().

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

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

Referenced by _cairo_uint128_divrem().

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

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

#define _cairo_uint128_to_int128 (   i)    (i)

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

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

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

Referenced by _cairo_uint_96by64_32x64_divrem().

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

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

Referenced by _cairo_uint_96by64_32x64_divrem().

#define _cairo_uint32x32_64_mul (   a,
 
)    ((uint64_t)(a) * (b))
#define _cairo_uint64_add (   a,
 
)    ((a) + (b))
#define _cairo_uint64_eq (   a,
 
)    ((a) == (b))
#define _cairo_uint64_ge (   a,
 
)    (!_cairo_uint64_lt (a,b))

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

Referenced by _cairo_uint_96by64_32x64_divrem().

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

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

Referenced by _cairo_uint128_sub().

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

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

#define _cairo_uint64_lsl (   a,
 
)    ((a) << (b))
#define _cairo_uint64_lt (   a,
 
)    ((a) < (b))
#define _cairo_uint64_mul (   a,
 
)    ((a) * (b))

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

Referenced by _cairo_uint128_mul().

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

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

#define _cairo_uint64_negate (   a)    ((uint64_t) -((int64_t)(a)))

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

#define _cairo_uint64_negative (   a)    ((int64_t)(a) < 0)

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

#define _cairo_uint64_not (   a)    (~(a))

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

Referenced by _cairo_int128_negate(), and _cairo_int128_not().

#define _cairo_uint64_rsa (   a,
 
)    ((uint64_t)((int64_t)(a) >> (b)))

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

Referenced by _cairo_uint128_rsa().

#define _cairo_uint64_rsl (   a,
 
)    ((uint64_t)(a) >> (b))
#define _cairo_uint64_sub (   a,
 
)    ((a) - (b))
#define _cairo_uint64_to_int64 (   i)    ((int64_t)(i))

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

#define _cairo_uint64_to_uint32 (   i)    ((uint32_t)(i))

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

Referenced by _cairo_uint_96by64_32x64_divrem().

#define cairo_private

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

#define HAVE_UINT64_T   1

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

#define I   cairo_private

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

Typedef Documentation

typedef int64_t cairo_int64_t

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

typedef uint64_t cairo_uint64_t

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

Function Documentation

int I _cairo_int128_lt ( cairo_int128_t  a,
cairo_int128_t  b 
)

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

References _cairo_int128_negative, and _cairo_uint128_lt().

+ Here is the call graph for this function:

cairo_int128_t I _cairo_int32_to_int128 ( int32_t  i)

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

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

cairo_quorem64_t I _cairo_int64_divrem ( cairo_int64_t  num,
cairo_int64_t  den 
)
cairo_int128_t I _cairo_int64_to_int128 ( cairo_int64_t  i)
cairo_int128_t I _cairo_int64x64_128_mul ( cairo_int64_t  a,
cairo_int64_t  b 
)

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

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

+ Here is the call graph for this function:

cairo_uint128_t I _cairo_uint128_add ( cairo_uint128_t  a,
cairo_uint128_t  b 
)

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

References _cairo_uint32_to_uint64, _cairo_uint64_add, _cairo_uint64_lt, and s.

Referenced by _cairo_int128_negate(), and _cairo_uint128_divrem().

+ Here is the caller graph for this function:

cairo_uquorem128_t I _cairo_uint128_divrem ( cairo_uint128_t  num,
cairo_uint128_t  den 
)
int I _cairo_uint128_eq ( cairo_uint128_t  a,
cairo_uint128_t  b 
)

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

References _cairo_uint64_eq.

cairo_uint128_t I _cairo_uint128_lsl ( cairo_uint128_t  a,
int  shift 
)

Definition at line 496 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().

+ Here is the caller graph for this function:

int I _cairo_uint128_lt ( cairo_uint128_t  a,
cairo_uint128_t  b 
)

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

References _cairo_uint64_eq, and _cairo_uint64_lt.

Referenced by _cairo_int128_lt(), and _cairo_uint128_divrem().

+ Here is the caller graph for this function:

cairo_uint128_t I _cairo_uint128_mul ( cairo_uint128_t  a,
cairo_uint128_t  b 
)

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

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

+ Here is the call graph for this function:

cairo_uint128_t I _cairo_uint128_negate ( cairo_uint128_t  a)
cairo_uint128_t I _cairo_uint128_not ( cairo_uint128_t  a)
cairo_uint128_t I _cairo_uint128_rsa ( cairo_uint128_t  a,
int  shift 
)
cairo_uint128_t I _cairo_uint128_rsl ( cairo_uint128_t  a,
int  shift 
)

Definition at line 514 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(), and _cairo_uint_96by64_32x64_divrem().

+ Here is the caller graph for this function:

cairo_uint128_t I _cairo_uint128_sub ( cairo_uint128_t  a,
cairo_uint128_t  b 
)

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

References _cairo_uint32_to_uint64, _cairo_uint64_gt, _cairo_uint64_sub, and s.

Referenced by _cairo_uint128_divrem().

+ Here is the caller graph for this function:

cairo_uint128_t I _cairo_uint32_to_uint128 ( uint32_t  i)

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

References _cairo_uint32_to_uint64.

Referenced by _cairo_int128_negate(), and _cairo_uint128_divrem().

+ Here is the caller graph for this function:

cairo_uquorem64_t I _cairo_uint64_divrem ( cairo_uint64_t  num,
cairo_uint64_t  den 
)

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

References cairo_uquorem64_t::quo, and cairo_uquorem64_t::rem.

Referenced by _cairo_int64_divrem(), and _cairo_uint_96by64_32x64_divrem().

+ Here is the caller graph for this function:

cairo_uint128_t I _cairo_uint64_to_uint128 ( cairo_uint64_t  i)

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

References _cairo_uint32_to_uint64.

cairo_uint128_t I _cairo_uint64x64_128_mul ( cairo_uint64_t  a,
cairo_uint64_t  b 
)

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

References _cairo_uint32x32_64_mul, _cairo_uint64_add, _cairo_uint64_lt, s, uint64_hi, uint64_hi32, uint64_lo, uint64_lo32, and uint64_shift32.

Referenced by _cairo_int64x64_128_mul(), and _cairo_uint128_mul().

+ Here is the caller graph for this function:

cairo_uquorem64_t 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 being non-zero.

Definition at line 665 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, uint64_hi32, and sample-rng-plot::x.

Referenced by _cairo_int_96by64_32x64_divrem().

+ Here is the call graph for this function:

+ Here is the caller graph for this function: