GCC Middle and Back End API Reference
dfp.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

void encode_decimal32 (const struct real_format *fmt, long *, const REAL_VALUE_TYPE *)
 
void encode_decimal64 (const struct real_format *fmt, long *, const REAL_VALUE_TYPE *)
 
void decode_decimal128 (const struct real_format *, REAL_VALUE_TYPE *, const long *)
 
void decode_decimal32 (const struct real_format *, REAL_VALUE_TYPE *, const long *)
 
void decode_decimal64 (const struct real_format *, REAL_VALUE_TYPE *, const long *)
 
void encode_decimal128 (const struct real_format *fmt, long *, const REAL_VALUE_TYPE *)
 
int decimal_do_compare (const REAL_VALUE_TYPE *, const REAL_VALUE_TYPE *, int)
 
void decimal_real_from_string (REAL_VALUE_TYPE *, const char *)
 
void decimal_round_for_format (const struct real_format *, REAL_VALUE_TYPE *)
 
void decimal_real_convert (REAL_VALUE_TYPE *, const real_format *, const REAL_VALUE_TYPE *)
 
void decimal_real_to_decimal (char *, const REAL_VALUE_TYPE *, size_t, size_t, int)
 
void decimal_do_fix_trunc (REAL_VALUE_TYPE *, const REAL_VALUE_TYPE *)
 
void decimal_real_maxval (REAL_VALUE_TYPE *, int, machine_mode)
 
wide_int decimal_real_to_integer (const REAL_VALUE_TYPE *, bool *, int)
 
HOST_WIDE_INT decimal_real_to_integer (const REAL_VALUE_TYPE *)
 

Function Documentation

◆ decimal_do_compare()

int decimal_do_compare ( const REAL_VALUE_TYPE * a,
const REAL_VALUE_TYPE * b,
int nan_result )
Arithmetic and conversion functions.   
Helper function to real.cc:do_compare() to handle decimal internal
representation including when one of the operands is still in the
binary internal representation.   

References a, b, decimal_from_binary(), ggc_alloc(), and REAL_VALUE_TYPE.

Referenced by do_compare().

◆ decimal_do_fix_trunc()

void decimal_do_fix_trunc ( REAL_VALUE_TYPE * r,
const REAL_VALUE_TYPE * a )
Set R to A truncated to an integral value toward zero (decimal
floating point).   

References a, decimal_from_decnumber(), ggc_alloc(), and r.

Referenced by decimal_real_arithmetic(), and do_fix_trunc().

◆ decimal_real_convert()

void decimal_real_convert ( REAL_VALUE_TYPE * r,
const real_format * fmt,
const REAL_VALUE_TYPE * a )
Extend or truncate to a new mode.  Handles conversions between
binary and decimal types.   

References a, decimal_from_binary(), decimal_to_binary(), ggc_alloc(), and r.

Referenced by real_2expN(), real_convert(), and round_for_format().

◆ decimal_real_from_string()

void decimal_real_from_string ( REAL_VALUE_TYPE * r,
const char * s )

◆ decimal_real_maxval()

void decimal_real_maxval ( REAL_VALUE_TYPE * r,
int sign,
machine_mode mode )
Fills R with the largest finite value representable in mode MODE.
If SIGN is nonzero, R is set to the most negative finite value.   

References decimal_real_from_string(), gcc_unreachable, ggc_alloc(), and r.

Referenced by real_maxval().

◆ decimal_real_to_decimal()

void decimal_real_to_decimal ( char * str,
const REAL_VALUE_TYPE * r_orig,
size_t buf_size,
size_t digits,
int crop_trailing_zeros )
Render R_ORIG as a decimal floating point constant.  Emit DIGITS
significant digits in the result, bounded by BUF_SIZE.  If DIGITS
is 0, choose the maximum for the representation.  If
CROP_TRAILING_ZEROS, strip trailing zeros.  Currently, not honoring
DIGITS or CROP_TRAILING_ZEROS.   

References gcc_assert, and ggc_alloc().

Referenced by real_to_decimal_for_mode().

◆ decimal_real_to_integer() [1/2]

HOST_WIDE_INT decimal_real_to_integer ( const REAL_VALUE_TYPE * r)
Render decimal float value R as an integer.   

References ggc_alloc(), r, real_from_string(), real_to_integer(), and REAL_VALUE_TYPE.

Referenced by real_to_integer(), and real_to_integer().

◆ decimal_real_to_integer() [2/2]

wide_int decimal_real_to_integer ( const REAL_VALUE_TYPE * r,
bool * fail,
int precision )
Likewise, but returns a wide_int with PRECISION.  *FAIL is set if the
value does not fit.   

References ggc_alloc(), r, real_from_string(), real_to_integer(), and REAL_VALUE_TYPE.

◆ decimal_round_for_format()

void decimal_round_for_format ( const struct real_format * fmt,
REAL_VALUE_TYPE * r )
Helper to round_for_format, handling decimal float types.   

References decimal_double_format, decimal_from_decnumber(), decimal_quad_format, decimal_single_format, gcc_unreachable, ggc_alloc(), r, and rvc_normal.

Referenced by round_for_format().

◆ decode_decimal128()

void decode_decimal128 ( const struct real_format * fmt,
REAL_VALUE_TYPE * r,
const long * buf )
Decode an IEEE 754 decimal128 type into a real.   

References decimal_from_decnumber(), FLOAT_WORDS_BIG_ENDIAN, ggc_alloc(), r, and WORDS_BIGENDIAN.

Referenced by decode_decimal_quad().

◆ decode_decimal32()

void decode_decimal32 ( const struct real_format * fmt,
REAL_VALUE_TYPE * r,
const long * buf )
Decode 32/64/128-bit IEEE 754 encoded values into REAL_VALUE_TYPEs.   
Decode an IEEE 754 decimal32 type into a real.   

References decimal_from_decnumber(), ggc_alloc(), and r.

Referenced by decode_decimal_single().

◆ decode_decimal64()

void decode_decimal64 ( const struct real_format * fmt,
REAL_VALUE_TYPE * r,
const long * buf )
Decode an IEEE 754 decimal64 type into a real.   

References decimal_from_decnumber(), FLOAT_WORDS_BIG_ENDIAN, ggc_alloc(), r, and WORDS_BIGENDIAN.

Referenced by decode_decimal_double().

◆ encode_decimal128()

void encode_decimal128 ( const struct real_format * fmt,
long * buf,
const REAL_VALUE_TYPE * r )
Encode a real into an IEEE 754 decimal128 type.   

References decimal_to_decnumber(), FLOAT_WORDS_BIG_ENDIAN, ggc_alloc(), r, and WORDS_BIGENDIAN.

Referenced by encode_decimal_quad().

◆ encode_decimal32()

void encode_decimal32 ( const struct real_format * fmt,
long * buf,
const REAL_VALUE_TYPE * r )
Decimal floating point support functions for GNU compiler.
   Copyright (C) 2005-2024 Free Software Foundation, Inc.

This file is part of GCC.

GCC is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
Software Foundation; either version 3, or (at your option) any later
version.

GCC is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
for more details.

You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING3.  If not see
<http://www.gnu.org/licenses/>.   
Encode REAL_VALUE_TYPEs into 32/64/128-bit IEEE 754 encoded values.   
Encode a real into an IEEE 754 decimal32 type.   

References decimal_to_decnumber(), ggc_alloc(), and r.

Referenced by encode_decimal_single().

◆ encode_decimal64()

void encode_decimal64 ( const struct real_format * fmt,
long * buf,
const REAL_VALUE_TYPE * r )
Encode a real into an IEEE 754 decimal64 type.   

References decimal_to_decnumber(), FLOAT_WORDS_BIG_ENDIAN, ggc_alloc(), r, and WORDS_BIGENDIAN.

Referenced by encode_decimal_double().