mirror of
https://gcc.gnu.org/git/gcc.git
synced 2024-11-23 02:44:18 +08:00
non-gcc: Remove trailing whitespace
I've tried to build stage3 with -Wleading-whitespace=blanks -Wtrailing-whitespace=blank -Wno-error=leading-whitespace=blanks -Wno-error=trailing-whitespace=blank added to STRICT_WARN and that expectably resulted in about 2744 unique trailing whitespace warnings and 124837 leading whitespace warnings when excluding *.md files (which obviously is in big part a generator issue). Others from that are generator related, I think those need to be solved later. The following patch just fixes up the easy case (trailing whitespace), which could be easily automated: for i in `find . -name \*.h -o -name \*.cc -o -name \*.c | xargs grep -l '[ ]$' | grep -v testsuite/`; do sed -i -e 's/[ ]*$//' $i; done I've excluded files which I knew are obviously generated or go FE. Is there anything else we'd want to avoid the changes? Due to patch size, I've split it between gcc/ part and rest (include/, libiberty/, libgcc/, libcpp/, libstdc++-v3/; this part). 2024-10-24 Jakub Jelinek <jakub@redhat.com> include/ * dyn-string.h: Remove trailing whitespace. * libiberty.h: Likewise. * xregex.h: Likewise. * splay-tree.h: Likewise. * partition.h: Likewise. * plugin-api.h: Likewise. * demangle.h: Likewise. * vtv-change-permission.h: Likewise. * fibheap.h: Likewise. * hsa_ext_image.h: Likewise. * hashtab.h: Likewise. * libcollector.h: Likewise. * sort.h: Likewise. * symcat.h: Likewise. * hsa_ext_amd.h: Likewise. libcpp/ * directives.cc: Remove trailing whitespace. * mkdeps.cc: Likewise. * line-map.cc: Likewise. * internal.h: Likewise. * files.cc: Likewise. * init.cc: Likewise. * makeucnid.cc: Likewise. * system.h: Likewise. * include/line-map.h: Likewise. * include/symtab.h: Likewise. * include/cpplib.h: Likewise. * expr.cc: Likewise. * charset.cc: Likewise. * macro.cc: Likewise. * errors.cc: Likewise. * lex.cc: Likewise. * traditional.cc: Likewise. libgcc/ * crtstuff.c: Remove trailing whitespace. * libgcov.h: Likewise. * config/alpha/crtfastmath.c: Likewise. * config/alpha/vms-gcc_shell_handler.c: Likewise. * config/alpha/vms-unwind.h: Likewise. * config/pa/linux-atomic.c: Likewise. * config/pa/linux-unwind.h: Likewise. * config/pa/quadlib.c: Likewise. * config/pa/fptr.c: Likewise. * config/s390/32/_fixsfdi.c: Likewise. * config/s390/32/_fixunssfdi.c: Likewise. * config/s390/32/_fixunsdfdi.c: Likewise. * config/c6x/pr-support.c: Likewise. * config/lm32/_udivsi3.c: Likewise. * config/lm32/libgcc_lm32.h: Likewise. * config/lm32/_udivmodsi4.c: Likewise. * config/lm32/_mulsi3.c: Likewise. * config/lm32/_modsi3.c: Likewise. * config/lm32/_umodsi3.c: Likewise. * config/lm32/_divsi3.c: Likewise. * config/darwin-crt3.c: Likewise. * config/msp430/mpy.c: Likewise. * config/ia64/tf-signs.c: Likewise. * config/ia64/fde-vms.c: Likewise. * config/ia64/unwind-ia64.c: Likewise. * config/ia64/vms-unwind.h: Likewise. * config/ia64/sfp-exceptions.c: Likewise. * config/ia64/quadlib.c: Likewise. * config/ia64/unwind-ia64.h: Likewise. * config/rl78/vregs.h: Likewise. * config/arm/bpabi.c: Likewise. * config/arm/unwind-arm.c: Likewise. * config/arm/pr-support.c: Likewise. * config/arm/linux-atomic.c: Likewise. * config/arm/bpabi-lib.h: Likewise. * config/frv/frvend.c: Likewise. * config/frv/cmovw.c: Likewise. * config/frv/frvbegin.c: Likewise. * config/frv/cmovd.c: Likewise. * config/frv/cmovh.c: Likewise. * config/aarch64/cpuinfo.c: Likewise. * config/i386/crtfastmath.c: Likewise. * config/i386/cygming-crtend.c: Likewise. * config/i386/32/tf-signs.c: Likewise. * config/i386/crtprec.c: Likewise. * config/i386/sfp-exceptions.c: Likewise. * config/i386/w32-unwind.h: Likewise. * config/m32r/initfini.c: Likewise. * config/sparc/crtfastmath.c: Likewise. * config/gcn/amdgcn_veclib.h: Likewise. * config/nios2/linux-atomic.c: Likewise. * config/nios2/linux-unwind.h: Likewise. * config/nios2/lib2-mul.c: Likewise. * config/nios2/lib2-nios2.h: Likewise. * config/xtensa/unwind-dw2-xtensa.c: Likewise. * config/rs6000/darwin-fallback.c: Likewise. * config/rs6000/ibm-ldouble.c: Likewise. * config/rs6000/sfp-machine.h: Likewise. * config/rs6000/darwin-asm.h: Likewise. * config/rs6000/darwin-crt2.c: Likewise. * config/rs6000/aix-unwind.h: Likewise. * config/rs6000/sfp-exceptions.c: Likewise. * config/gthr-vxworks.c: Likewise. * config/riscv/atomic.c: Likewise. * config/visium/memcpy.c: Likewise. * config/darwin-crt-tm.c: Likewise. * config/stormy16/lib2funcs.c: Likewise. * config/arc/ieee-754/divtab-arc-sf.c: Likewise. * config/arc/ieee-754/divtab-arc-df.c: Likewise. * config/arc/initfini.c: Likewise. * config/sol2/gmon.c: Likewise. * config/microblaze/divsi3_table.c: Likewise. * config/m68k/fpgnulib.c: Likewise. * libgcov-driver.c: Likewise. * unwind-dw2.c: Likewise. * fp-bit.c: Likewise. * dfp-bit.h: Likewise. * dfp-bit.c: Likewise. * libgcov-driver-system.c: Likewise. libgcc/config/libbid/ * _le_td.c: Remove trailing whitespace. * bid128_compare.c: Likewise. * bid_div_macros.h: Likewise. * bid64_to_bid128.c: Likewise. * bid64_to_uint32.c: Likewise. * bid128_to_uint64.c: Likewise. * bid64_div.c: Likewise. * bid128_round_integral.c: Likewise. * bid_binarydecimal.c: Likewise. * bid128_string.c: Likewise. * bid_flag_operations.c: Likewise. * bid128_to_int64.c: Likewise. * _mul_sd.c: Likewise. * bid64_mul.c: Likewise. * bid128_noncomp.c: Likewise. * _gt_dd.c: Likewise. * bid64_add.c: Likewise. * bid64_string.c: Likewise. * bid_from_int.c: Likewise. * bid128.c: Likewise. * _ge_dd.c: Likewise. * _ne_sd.c: Likewise. * _dd_to_td.c: Likewise. * _unord_sd.c: Likewise. * bid64_to_uint64.c: Likewise. * _gt_sd.c: Likewise. * _sd_to_td.c: Likewise. * _addsub_td.c: Likewise. * _ne_td.c: Likewise. * bid_dpd.c: Likewise. * bid128_add.c: Likewise. * bid128_next.c: Likewise. * _lt_sd.c: Likewise. * bid64_next.c: Likewise. * bid128_mul.c: Likewise. * _lt_dd.c: Likewise. * _ge_td.c: Likewise. * _unord_dd.c: Likewise. * bid64_sqrt.c: Likewise. * bid_sqrt_macros.h: Likewise. * bid64_fma.c: Likewise. * _sd_to_dd.c: Likewise. * bid_conf.h: Likewise. * bid64_noncomp.c: Likewise. * bid_gcc_intrinsics.h: Likewise. * _gt_td.c: Likewise. * _ge_sd.c: Likewise. * bid128_minmax.c: Likewise. * bid128_quantize.c: Likewise. * bid32_to_bid64.c: Likewise. * bid_round.c: Likewise. * _td_to_sd.c: Likewise. * bid_inline_add.h: Likewise. * bid128_fma.c: Likewise. * _eq_td.c: Likewise. * bid32_to_bid128.c: Likewise. * bid64_rem.c: Likewise. * bid128_2_str_tables.c: Likewise. * _mul_dd.c: Likewise. * _dd_to_sd.c: Likewise. * bid128_div.c: Likewise. * _lt_td.c: Likewise. * bid64_compare.c: Likewise. * bid64_to_int32.c: Likewise. * _unord_td.c: Likewise. * bid128_rem.c: Likewise. * bid_internal.h: Likewise. * bid64_to_int64.c: Likewise. * _eq_dd.c: Likewise. * _td_to_dd.c: Likewise. * bid128_to_int32.c: Likewise. * bid128_to_uint32.c: Likewise. * _ne_dd.c: Likewise. * bid64_quantize.c: Likewise. * _le_dd.c: Likewise. * bid64_round_integral.c: Likewise. * _le_sd.c: Likewise. * bid64_minmax.c: Likewise. libgcc/config/avr/libf7/ * f7-renames.h: Remove trailing whitespace. libstdc++-v3/ * include/debug/debug.h: Remove trailing whitespace. * include/parallel/base.h: Likewise. * include/parallel/types.h: Likewise. * include/parallel/settings.h: Likewise. * include/parallel/multiseq_selection.h: Likewise. * include/parallel/partition.h: Likewise. * include/parallel/random_number.h: Likewise. * include/parallel/find_selectors.h: Likewise. * include/parallel/partial_sum.h: Likewise. * include/parallel/list_partition.h: Likewise. * include/parallel/search.h: Likewise. * include/parallel/algorithmfwd.h: Likewise. * include/parallel/random_shuffle.h: Likewise. * include/parallel/multiway_mergesort.h: Likewise. * include/parallel/sort.h: Likewise. * include/parallel/algobase.h: Likewise. * include/parallel/numericfwd.h: Likewise. * include/parallel/multiway_merge.h: Likewise. * include/parallel/losertree.h: Likewise. * include/bits/basic_ios.h: Likewise. * include/bits/stringfwd.h: Likewise. * include/bits/ostream_insert.h: Likewise. * include/bits/stl_heap.h: Likewise. * include/bits/unordered_map.h: Likewise. * include/bits/hashtable_policy.h: Likewise. * include/bits/stl_iterator_base_funcs.h: Likewise. * include/bits/valarray_before.h: Likewise. * include/bits/regex.h: Likewise. * include/bits/postypes.h: Likewise. * include/bits/stl_iterator.h: Likewise. * include/bits/localefwd.h: Likewise. * include/bits/stl_algo.h: Likewise. * include/bits/ios_base.h: Likewise. * include/bits/stl_function.h: Likewise. * include/bits/basic_string.h: Likewise. * include/bits/hashtable.h: Likewise. * include/bits/valarray_after.h: Likewise. * include/bits/char_traits.h: Likewise. * include/bits/gslice.h: Likewise. * include/bits/locale_facets_nonio.h: Likewise. * include/bits/mask_array.h: Likewise. * include/bits/specfun.h: Likewise. * include/bits/random.h: Likewise. * include/bits/slice_array.h: Likewise. * include/bits/valarray_array.h: Likewise. * include/tr1/float.h: Likewise. * include/tr1/functional_hash.h: Likewise. * include/tr1/math.h: Likewise. * include/tr1/hashtable_policy.h: Likewise. * include/tr1/stdio.h: Likewise. * include/tr1/complex.h: Likewise. * include/tr1/stdbool.h: Likewise. * include/tr1/stdarg.h: Likewise. * include/tr1/inttypes.h: Likewise. * include/tr1/fenv.h: Likewise. * include/tr1/stdlib.h: Likewise. * include/tr1/wchar.h: Likewise. * include/tr1/tgmath.h: Likewise. * include/tr1/limits.h: Likewise. * include/tr1/wctype.h: Likewise. * include/tr1/stdint.h: Likewise. * include/tr1/ctype.h: Likewise. * include/tr1/random.h: Likewise. * include/tr1/shared_ptr.h: Likewise. * include/ext/mt_allocator.h: Likewise. * include/ext/sso_string_base.h: Likewise. * include/ext/debug_allocator.h: Likewise. * include/ext/vstring_fwd.h: Likewise. * include/ext/pointer.h: Likewise. * include/ext/pod_char_traits.h: Likewise. * include/ext/malloc_allocator.h: Likewise. * include/ext/vstring.h: Likewise. * include/ext/bitmap_allocator.h: Likewise. * include/ext/pool_allocator.h: Likewise. * include/ext/type_traits.h: Likewise. * include/ext/ropeimpl.h: Likewise. * include/ext/codecvt_specializations.h: Likewise. * include/ext/throw_allocator.h: Likewise. * include/ext/extptr_allocator.h: Likewise. * include/ext/atomicity.h: Likewise. * include/ext/concurrence.h: Likewise. * include/c_compatibility/wchar.h: Likewise. * include/c_compatibility/stdint.h: Likewise. * include/backward/hash_fun.h: Likewise. * include/backward/binders.h: Likewise. * include/backward/hashtable.h: Likewise. * include/backward/auto_ptr.h: Likewise. * libsupc++/eh_arm.cc: Likewise. * libsupc++/unwind-cxx.h: Likewise. * libsupc++/si_class_type_info.cc: Likewise. * libsupc++/vec.cc: Likewise. * libsupc++/class_type_info.cc: Likewise. * libsupc++/vmi_class_type_info.cc: Likewise. * libsupc++/guard_error.cc: Likewise. * libsupc++/bad_typeid.cc: Likewise. * libsupc++/eh_personality.cc: Likewise. * libsupc++/atexit_arm.cc: Likewise. * libsupc++/pmem_type_info.cc: Likewise. * libsupc++/vterminate.cc: Likewise. * libsupc++/eh_terminate.cc: Likewise. * libsupc++/bad_cast.cc: Likewise. * libsupc++/exception_ptr.h: Likewise. * libsupc++/eh_throw.cc: Likewise. * libsupc++/bad_alloc.cc: Likewise. * libsupc++/nested_exception.cc: Likewise. * libsupc++/pointer_type_info.cc: Likewise. * libsupc++/pbase_type_info.cc: Likewise. * libsupc++/bad_array_new.cc: Likewise. * libsupc++/pure.cc: Likewise. * libsupc++/eh_exception.cc: Likewise. * libsupc++/bad_array_length.cc: Likewise. * libsupc++/cxxabi.h: Likewise. * libsupc++/guard.cc: Likewise. * libsupc++/eh_catch.cc: Likewise. * libsupc++/cxxabi_forced.h: Likewise. * libsupc++/tinfo.h: Likewise.
This commit is contained in:
parent
50332a4fdd
commit
45ab93d9af
@ -64,14 +64,14 @@ extern "C" {
|
||||
/* Disable a limit on the depth of recursion in mangled strings.
|
||||
Note if this limit is disabled then stack exhaustion is possible when
|
||||
demangling pathologically complicated strings. Bug reports about stack
|
||||
exhaustion when the option is enabled will be rejected. */
|
||||
#define DMGL_NO_RECURSE_LIMIT (1 << 18)
|
||||
exhaustion when the option is enabled will be rejected. */
|
||||
#define DMGL_NO_RECURSE_LIMIT (1 << 18)
|
||||
|
||||
/* If DMGL_NO_RECURSE_LIMIT is not enabled, then this is the value used as
|
||||
the maximum depth of recursion allowed. It should be enough for any
|
||||
real-world mangled name. */
|
||||
#define DEMANGLE_RECURSION_LIMIT 2048
|
||||
|
||||
|
||||
/* Enumeration of possible demangling styles.
|
||||
|
||||
Lucid and ARM styles are still kept logically distinct, even though
|
||||
|
@ -3,7 +3,7 @@
|
||||
Contributed by Mark Mitchell (mark@markmitchell.com).
|
||||
|
||||
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 2, or (at your option)
|
||||
|
@ -3,7 +3,7 @@
|
||||
Contributed by Daniel Berlin (dan@cgsoftware.com).
|
||||
|
||||
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 2, or (at your option)
|
||||
@ -33,8 +33,8 @@ Boston, MA 02110-1301, USA. */
|
||||
Amortized and real worst case time for operations:
|
||||
|
||||
ExtractMin: O(lg n) amortized. O(n) worst case.
|
||||
DecreaseKey: O(1) amortized. O(lg n) worst case.
|
||||
Insert: O(2) amortized. O(1) actual.
|
||||
DecreaseKey: O(1) amortized. O(lg n) worst case.
|
||||
Insert: O(2) amortized. O(1) actual.
|
||||
Union: O(1) amortized. O(1) actual. */
|
||||
|
||||
#ifndef _FIBHEAP_H_
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* An expandable hash tables datatype.
|
||||
/* An expandable hash tables datatype.
|
||||
Copyright (C) 1999-2024 Free Software Foundation, Inc.
|
||||
Contributed by Vladimir Makarov (vmakarov@cygnus.com).
|
||||
|
||||
@ -56,7 +56,7 @@ typedef int (*htab_eq) (const void *, const void *);
|
||||
/* Cleanup function called whenever a live element is removed from
|
||||
the hash table. */
|
||||
typedef void (*htab_del) (void *);
|
||||
|
||||
|
||||
/* Function called by htab_traverse for each live element. The first
|
||||
arg is the slot of the element (which can be passed to htab_clear_slot
|
||||
if desired), the second arg is the auxiliary pointer handed to
|
||||
|
@ -683,7 +683,7 @@ typedef enum {
|
||||
* following its memory access model. The actual placement may vary or migrate
|
||||
* due to the system's NUMA policy and state, which is beyond the scope of
|
||||
* HSA APIs.
|
||||
*/
|
||||
*/
|
||||
typedef struct hsa_amd_memory_pool_s {
|
||||
/**
|
||||
* Opaque handle.
|
||||
@ -758,7 +758,7 @@ typedef enum {
|
||||
HSA_AMD_MEMORY_POOL_INFO_RUNTIME_ALLOC_ALIGNMENT = 7,
|
||||
/**
|
||||
* This memory_pool can be made directly accessible by all the agents in the
|
||||
* system (::hsa_amd_agent_memory_pool_get_info does not return
|
||||
* system (::hsa_amd_agent_memory_pool_get_info does not return
|
||||
* ::HSA_AMD_MEMORY_POOL_ACCESS_NEVER_ALLOWED for any agent). The type of this
|
||||
* attribute is bool.
|
||||
*/
|
||||
|
@ -40,7 +40,7 @@
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /*__cplusplus*/
|
||||
#endif /*__cplusplus*/
|
||||
|
||||
/** \defgroup ext-images Images and Samplers
|
||||
* @{
|
||||
@ -253,7 +253,7 @@ typedef enum {
|
||||
* @brief A fixed-size type used to represent ::hsa_ext_image_channel_type_t constants.
|
||||
*/
|
||||
typedef uint32_t hsa_ext_image_channel_type32_t;
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* @brief Channel order associated with the elements of an image. See
|
||||
@ -289,7 +289,7 @@ typedef enum {
|
||||
* @brief A fixed-size type used to represent ::hsa_ext_image_channel_order_t constants.
|
||||
*/
|
||||
typedef uint32_t hsa_ext_image_channel_order32_t;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief Image format.
|
||||
@ -1156,7 +1156,7 @@ typedef enum {
|
||||
* @brief A fixed-size type used to represent ::hsa_ext_sampler_coordinate_mode_t constants.
|
||||
*/
|
||||
typedef uint32_t hsa_ext_sampler_coordinate_mode32_t;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief Sampler filter modes. See the <em>Filter Mode</em> section
|
||||
@ -1432,9 +1432,9 @@ typedef struct hsa_ext_images_1_pfn_s {
|
||||
|
||||
} hsa_ext_images_1_pfn_t;
|
||||
/** @} */
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // end extern "C" block
|
||||
#endif /*__cplusplus*/
|
||||
#endif /*__cplusplus*/
|
||||
|
||||
#endif
|
||||
|
@ -75,7 +75,7 @@ extern "C"
|
||||
/* Define the macros that actually get inserted in the caller's code. */
|
||||
#define collector_sample(x) (collector_sample ? collector_sample(x), 0 : 0)
|
||||
#define collector_pause() (collector_pause ? collector_pause(), 0 : 0)
|
||||
#define collector_resume() (collector_resume ? collector_resume(),0 : 0
|
||||
#define collector_resume() (collector_resume ? collector_resume(),0 : 0
|
||||
#define collector_thread_pause(tid) \
|
||||
(collector_thread_pause ? collector_thread_pause(tid), 0 : 0)
|
||||
#define collector_thread_resume(tid) \
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* Function declarations for libiberty.
|
||||
|
||||
Copyright (C) 1997-2024 Free Software Foundation, Inc.
|
||||
|
||||
|
||||
Note - certain prototypes declared in this header file are for
|
||||
functions whoes implementation copyright does not belong to the
|
||||
FSF. Those prototypes are present in this file for reference
|
||||
@ -23,7 +23,7 @@
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street - Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
|
||||
|
||||
Written by Cygnus Support, 1994.
|
||||
|
||||
The libiberty library provides a number of functions which are
|
||||
@ -108,7 +108,7 @@ extern int countargv (char * const *);
|
||||
#if defined (__GNU_LIBRARY__ ) || defined (__linux__) \
|
||||
|| defined (__FreeBSD__) || defined (__OpenBSD__) || defined (__NetBSD__) \
|
||||
|| defined (__CYGWIN__) || defined (__CYGWIN32__) || defined (__MINGW32__) \
|
||||
|| defined (__DragonFly__) || defined (HAVE_DECL_BASENAME)
|
||||
|| defined (__DragonFly__) || defined (HAVE_DECL_BASENAME)
|
||||
extern char *basename (const char *) ATTRIBUTE_RETURNS_NONNULL ATTRIBUTE_NONNULL(1);
|
||||
#else
|
||||
/* Do not allow basename to be used if there is no prototype seen. We
|
||||
@ -210,7 +210,7 @@ extern char * getpwd (void);
|
||||
#ifdef __MINGW32__
|
||||
/* Forward declaration to avoid #include <sys/time.h>. */
|
||||
struct timeval;
|
||||
extern int gettimeofday (struct timeval *, void *);
|
||||
extern int gettimeofday (struct timeval *, void *);
|
||||
#endif
|
||||
|
||||
/* Get the amount of time the process has run, in microseconds. */
|
||||
@ -460,7 +460,7 @@ extern struct pex_obj *pex_init (int flags, const char *pname,
|
||||
/* Capture stderr to a pipe. The output can be read by
|
||||
calling pex_read_err and reading from the returned
|
||||
FILE object. This flag may be specified only for
|
||||
the last program in a pipeline.
|
||||
the last program in a pipeline.
|
||||
|
||||
This flag is supported only on Unix and Windows. */
|
||||
#define PEX_STDERR_TO_PIPE 0x40
|
||||
|
@ -56,7 +56,7 @@ struct partition_elem
|
||||
unsigned class_count;
|
||||
};
|
||||
|
||||
typedef struct partition_def
|
||||
typedef struct partition_def
|
||||
{
|
||||
/* The number of elements in this partition. */
|
||||
int num_elements;
|
||||
|
@ -599,7 +599,7 @@ struct ld_plugin_tv
|
||||
ld_plugin_get_input_section_contents tv_get_input_section_contents;
|
||||
ld_plugin_update_section_order tv_update_section_order;
|
||||
ld_plugin_allow_section_ordering tv_allow_section_ordering;
|
||||
ld_plugin_allow_unique_segment_for_sections tv_allow_unique_segment_for_sections;
|
||||
ld_plugin_allow_unique_segment_for_sections tv_allow_unique_segment_for_sections;
|
||||
ld_plugin_unique_segment_for_sections tv_unique_segment_for_sections;
|
||||
ld_plugin_get_input_section_alignment tv_get_input_section_alignment;
|
||||
ld_plugin_get_input_section_size tv_get_input_section_size;
|
||||
|
@ -3,7 +3,7 @@
|
||||
Contributed by Mark Mitchell <mark@codesourcery.com>.
|
||||
|
||||
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 2, or (at your option)
|
||||
@ -44,5 +44,5 @@ extern void sort_pointers (size_t, void **, void **);
|
||||
#endif /* SORT_H */
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -1,9 +1,9 @@
|
||||
/* A splay-tree datatype.
|
||||
/* A splay-tree datatype.
|
||||
Copyright (C) 1998-2024 Free Software Foundation, Inc.
|
||||
Contributed by Mark Mitchell (mark@markmitchell.com).
|
||||
|
||||
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 2, or (at your option)
|
||||
@ -22,7 +22,7 @@
|
||||
/* For an easily readable description of splay-trees, see:
|
||||
|
||||
Lewis, Harry R. and Denenberg, Larry. Data Structures and Their
|
||||
Algorithms. Harper-Collins, Inc. 1991.
|
||||
Algorithms. Harper-Collins, Inc. 1991.
|
||||
|
||||
The major feature of splay trees is that all basic tree operations
|
||||
are amortized O(log n) time for a tree with n nodes. */
|
||||
|
@ -11,7 +11,7 @@
|
||||
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 this program; if not, write to the Free Software Foundation, Inc.,
|
||||
51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */
|
||||
@ -50,6 +50,6 @@
|
||||
bar", "XSTRING(foo)", to yield "bar". Be aware that this only
|
||||
works for __STDC__, not for traditional C which will still resolve
|
||||
to "foo". */
|
||||
#define XSTRING(s) STRINGX(s)
|
||||
#define XSTRING(s) STRINGX(s)
|
||||
|
||||
#endif /* SYM_CAT_H */
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* Copyright (C) 2013-2024 Free Software Foundation, Inc.
|
||||
|
||||
|
||||
This file is part of GCC.
|
||||
|
||||
|
||||
modify it under the terms of the GNU Library General Public License
|
||||
as published by the Free Software Foundation; either version 2, or
|
||||
(at your option) any later version.
|
||||
@ -45,7 +45,7 @@ extern void __VLTChangePermission (int);
|
||||
#ifdef BIG_PAGE_SIZE
|
||||
/* TODO - Replace '4096' below with correct big page size. */
|
||||
#define VTV_PAGE_SIZE 4096
|
||||
#else
|
||||
#else
|
||||
#if defined(__sun__) && defined(__svr4__) && defined(__sparc__)
|
||||
#define VTV_PAGE_SIZE 8192
|
||||
#elif defined(__loongarch_lp64)
|
||||
|
@ -4,7 +4,7 @@
|
||||
#ifndef _XREGEX_H
|
||||
#define _XREGEX_H 1
|
||||
|
||||
# define regfree xregfree
|
||||
# define regfree xregfree
|
||||
# define regexec xregexec
|
||||
# define regcomp xregcomp
|
||||
# define regerror xregerror
|
||||
|
@ -1826,7 +1826,7 @@ _cpp_valid_ucn (cpp_reader *pfile, const uchar **pstr,
|
||||
(int) (str - base), base);
|
||||
result = 1;
|
||||
}
|
||||
else if (identifier_pos && result == 0x24
|
||||
else if (identifier_pos && result == 0x24
|
||||
&& CPP_OPTION (pfile, dollars_in_ident)
|
||||
/* In C++26 when dollars are allowed in identifiers,
|
||||
we should still reject \u0024 as $ is part of the basic
|
||||
@ -2994,7 +2994,7 @@ _cpp_interpret_identifier (cpp_reader *pfile, const uchar *id, size_t len)
|
||||
uchar * buf = (uchar *) alloca (len + 1);
|
||||
uchar * bufp = buf;
|
||||
size_t idp;
|
||||
|
||||
|
||||
for (idp = 0; idp < len; idp++)
|
||||
if (id[idp] != '\\')
|
||||
*bufp++ = id[idp];
|
||||
@ -3060,7 +3060,7 @@ _cpp_interpret_identifier (cpp_reader *pfile, const uchar *id, size_t len)
|
||||
}
|
||||
}
|
||||
|
||||
return CPP_HASHNODE (ht_lookup (pfile->hash_table,
|
||||
return CPP_HASHNODE (ht_lookup (pfile->hash_table,
|
||||
buf, bufp - buf, HT_ALLOC));
|
||||
}
|
||||
|
||||
@ -3101,7 +3101,7 @@ cpp_check_utf8_bom (const char *data, size_t data_length)
|
||||
PFILE is only used to generate diagnostics; setting it to NULL suppresses
|
||||
diagnostics, and causes a return of NULL if there was any error instead. */
|
||||
|
||||
uchar *
|
||||
uchar *
|
||||
_cpp_convert_input (cpp_reader *pfile, const char *input_charset,
|
||||
uchar *input, size_t size, size_t len,
|
||||
const unsigned char **buffer_start, off_t *st_size)
|
||||
|
@ -513,7 +513,7 @@ _cpp_handle_directive (cpp_reader *pfile, bool indented)
|
||||
compiled with -save-temps, we recognize directives in
|
||||
-fpreprocessed mode only if the # is in column 1. macro.cc
|
||||
puts a space in front of any '#' at the start of a macro.
|
||||
|
||||
|
||||
We exclude the -fdirectives-only case because macro expansion
|
||||
has not been performed yet, and block comments can cause spaces
|
||||
to precede the directive. */
|
||||
@ -915,8 +915,8 @@ do_include_common (cpp_reader *pfile, enum include_type type)
|
||||
|
||||
/* Prevent #include recursion. */
|
||||
if (pfile->line_table->depth >= CPP_OPTION (pfile, max_include_depth))
|
||||
cpp_error (pfile,
|
||||
CPP_DL_ERROR,
|
||||
cpp_error (pfile,
|
||||
CPP_DL_ERROR,
|
||||
"%<#include%> nested depth %u exceeds maximum of %u"
|
||||
" (use %<-fmax-include-depth=DEPTH%> to increase the maximum)",
|
||||
pfile->line_table->depth,
|
||||
@ -1891,7 +1891,7 @@ cpp_register_deferred_pragma (cpp_reader *pfile, const char *space,
|
||||
entry->allow_expansion = allow_expansion;
|
||||
entry->u.ident = ident;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Register the pragmas the preprocessor itself handles. */
|
||||
void
|
||||
@ -2447,7 +2447,7 @@ destringize_and_run (cpp_reader *pfile, const cpp_string *in,
|
||||
pfile->directive = save_directive;
|
||||
|
||||
/* We always insert at least one token, the directive result. It'll
|
||||
either be a CPP_PADDING or a CPP_PRAGMA. In the later case, we
|
||||
either be a CPP_PADDING or a CPP_PRAGMA. In the later case, we
|
||||
need to insert *all* of the tokens, including the CPP_PRAGMA_EOL. */
|
||||
|
||||
/* If we're not handling the pragma internally, read all of the tokens from
|
||||
|
@ -200,7 +200,7 @@ cpp_diagnostic_with_line (cpp_reader * pfile, enum cpp_diagnostic_level level,
|
||||
const char *msgid, va_list *ap)
|
||||
{
|
||||
bool ret;
|
||||
|
||||
|
||||
if (!pfile->cb.diagnostic)
|
||||
abort ();
|
||||
/* Don't override note locations, which will likely make the note
|
||||
|
@ -860,7 +860,7 @@ cpp_classify_number (cpp_reader *pfile, const cpp_token *token,
|
||||
if ((result & CPP_N_WIDTH) == CPP_N_LARGE
|
||||
&& CPP_OPTION (pfile, cpp_warn_long_long))
|
||||
{
|
||||
const char *message = CPP_OPTION (pfile, cplusplus)
|
||||
const char *message = CPP_OPTION (pfile, cplusplus)
|
||||
? N_("use of C++11 long long integer constant")
|
||||
: N_("use of C99 long long integer constant");
|
||||
|
||||
@ -1723,7 +1723,7 @@ reduce (cpp_reader *pfile, struct op *top, enum cpp_ttype op)
|
||||
case CPP_OPEN_PAREN:
|
||||
if (op != CPP_CLOSE_PAREN)
|
||||
{
|
||||
cpp_error_with_line (pfile, CPP_DL_ERROR,
|
||||
cpp_error_with_line (pfile, CPP_DL_ERROR,
|
||||
top->token->src_loc,
|
||||
0, "missing %<)%> in expression");
|
||||
return 0;
|
||||
|
@ -278,7 +278,7 @@ open_file (_cpp_file *file)
|
||||
/* The call to stat may have reset errno. */
|
||||
errno = EACCES;
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
else if (errno == ENOTDIR)
|
||||
errno = ENOENT;
|
||||
|
||||
@ -375,7 +375,7 @@ maybe_shorter_path (const char * file)
|
||||
{
|
||||
return file2;
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
free (file2);
|
||||
return NULL;
|
||||
@ -461,7 +461,7 @@ find_file_in_dir (cpp_reader *pfile, _cpp_file *file, bool *invalid_pch,
|
||||
}
|
||||
else
|
||||
{
|
||||
file->err_no = ENOENT;
|
||||
file->err_no = ENOENT;
|
||||
file->path = NULL;
|
||||
}
|
||||
|
||||
|
@ -266,7 +266,7 @@ struct GTY(()) cpp_token {
|
||||
{
|
||||
/* An identifier. */
|
||||
struct cpp_identifier GTY ((tag ("CPP_TOKEN_FLD_NODE"))) node;
|
||||
|
||||
|
||||
/* Inherit padding from this token. */
|
||||
cpp_token * GTY ((tag ("CPP_TOKEN_FLD_SOURCE"))) source;
|
||||
|
||||
@ -325,7 +325,7 @@ enum cpp_normalize_level {
|
||||
normalized_none
|
||||
};
|
||||
|
||||
enum cpp_main_search
|
||||
enum cpp_main_search
|
||||
{
|
||||
CMS_none, /* A regular source file. */
|
||||
CMS_header, /* Is a directly-specified header file (eg PCH or
|
||||
@ -477,7 +477,7 @@ struct cpp_options
|
||||
/* Nonzero means we're looking at already preprocessed code, so don't
|
||||
bother trying to do macro expansion and whatnot. */
|
||||
unsigned char preprocessed;
|
||||
|
||||
|
||||
/* Nonzero means we are going to emit debugging logs during
|
||||
preprocessing. */
|
||||
unsigned char debug;
|
||||
@ -874,7 +874,7 @@ struct cpp_dir
|
||||
/* Is this a user-supplied directory? */
|
||||
bool user_supplied_p;
|
||||
|
||||
/* The canonicalized NAME as determined by lrealpath. This field
|
||||
/* The canonicalized NAME as determined by lrealpath. This field
|
||||
is only used by hosts that lack reliable inode numbers. */
|
||||
char *canonical_name;
|
||||
|
||||
@ -904,7 +904,7 @@ enum cpp_macro_kind {
|
||||
/* Each macro definition is recorded in a cpp_macro structure.
|
||||
Variadic macros cannot occur with traditional cpp. */
|
||||
struct GTY(()) cpp_macro {
|
||||
union cpp_parm_u
|
||||
union cpp_parm_u
|
||||
{
|
||||
/* Parameters, if any. If parameter names use extended identifiers,
|
||||
the original spelling of those identifiers, not the canonical
|
||||
@ -1245,7 +1245,7 @@ inline location_t cpp_macro_definition_location (cpp_hashnode *node)
|
||||
return macro ? macro->line : 0;
|
||||
}
|
||||
/* Return an idempotent time stamp (possibly from SOURCE_DATE_EPOCH). */
|
||||
enum class CPP_time_kind
|
||||
enum class CPP_time_kind
|
||||
{
|
||||
FIXED = -1, /* Fixed time via source epoch. */
|
||||
DYNAMIC = -2, /* Dynamic via time(2). */
|
||||
@ -1280,7 +1280,7 @@ extern cppchar_t cpp_host_to_exec_charset (cpp_reader *, cppchar_t);
|
||||
The text is the same as the command line argument. */
|
||||
extern void cpp_define (cpp_reader *, const char *);
|
||||
extern void cpp_define_unused (cpp_reader *, const char *);
|
||||
extern void cpp_define_formatted (cpp_reader *pfile,
|
||||
extern void cpp_define_formatted (cpp_reader *pfile,
|
||||
const char *fmt, ...) ATTRIBUTE_PRINTF_2;
|
||||
extern void cpp_define_formatted_unused (cpp_reader *pfile,
|
||||
const char *fmt,
|
||||
|
@ -392,7 +392,7 @@ struct GTY((tag ("0"), desc ("MAP_ORDINARY_P (&%h) ? 1 : 2"))) line_map {
|
||||
|
||||
/* An ordinary line map encodes physical source locations. Those
|
||||
physical source locations are called "spelling locations".
|
||||
|
||||
|
||||
Physical source file TO_FILE at line TO_LINE at column 0 is represented
|
||||
by the logical START_LOCATION. TO_LINE+L at column C is represented by
|
||||
START_LOCATION+(L*(1<<m_column_and_range_bits))+(C*1<<m_range_bits), as
|
||||
@ -457,7 +457,7 @@ struct cpp_hashnode;
|
||||
|
||||
/* A macro line map encodes location of tokens coming from a macro
|
||||
expansion.
|
||||
|
||||
|
||||
The offset from START_LOCATION is used to index into
|
||||
MACRO_LOCATIONS; this holds the original location of the token. */
|
||||
struct GTY((tag ("2"))) line_map_macro : public line_map {
|
||||
|
@ -52,7 +52,7 @@ struct ht
|
||||
hashnode *entries;
|
||||
/* Call back, allocate a node. */
|
||||
hashnode (*alloc_node) (cpp_hash_table *);
|
||||
/* Call back, allocate something that hangs off a node like a cpp_macro.
|
||||
/* Call back, allocate something that hangs off a node like a cpp_macro.
|
||||
NULL means use the usual allocator. */
|
||||
void * (*alloc_subobject) (size_t);
|
||||
|
||||
|
@ -883,7 +883,7 @@ read_original_directory (cpp_reader *pfile)
|
||||
/* Smash the string directly, it's dead at this point */
|
||||
char *smashy = (char *)text;
|
||||
smashy[len - 3] = 0;
|
||||
|
||||
|
||||
pfile->cb.dir_change (pfile, smashy + 1);
|
||||
}
|
||||
|
||||
|
@ -304,7 +304,7 @@ struct spec_nodes
|
||||
cpp_hashnode *n__VA_OPT__; /* C++ vararg macros */
|
||||
|
||||
enum {M_EXPORT, M_MODULE, M_IMPORT, M__IMPORT, M_HWM};
|
||||
|
||||
|
||||
/* C++20 modules, only set when module_directives is in effect.
|
||||
incoming variants [0], outgoing ones [1] */
|
||||
cpp_hashnode *n_modules[M_HWM][2];
|
||||
@ -854,7 +854,7 @@ extern size_t _cpp_replacement_text_len (const cpp_macro *);
|
||||
It starts initialized to all zeros, and at the end
|
||||
'level' is the normalization level of the sequence. */
|
||||
|
||||
struct normalize_state
|
||||
struct normalize_state
|
||||
{
|
||||
/* The previous starter character. */
|
||||
cppchar_t previous;
|
||||
|
@ -104,7 +104,7 @@ add_line_note (cpp_buffer *buffer, const uchar *pos, unsigned int type)
|
||||
path below. Since this loop is very hot it's worth doing these kinds
|
||||
of optimizations.
|
||||
|
||||
One of the paths through the ifdefs should provide
|
||||
One of the paths through the ifdefs should provide
|
||||
|
||||
const uchar *search_line_fast (const uchar *s, const uchar *end);
|
||||
|
||||
@ -168,7 +168,7 @@ static inline word_type
|
||||
acc_char_cmp (word_type val, word_type c)
|
||||
{
|
||||
#if defined(__GNUC__) && defined(__alpha__)
|
||||
/* We can get exact results using a compare-bytes instruction.
|
||||
/* We can get exact results using a compare-bytes instruction.
|
||||
Get (val == c) via (0 >= (val ^ c)). */
|
||||
return __builtin_alpha_cmpbge (0, val ^ c);
|
||||
#else
|
||||
@ -215,7 +215,7 @@ acc_char_index (word_type cmp ATTRIBUTE_UNUSED,
|
||||
}
|
||||
|
||||
/* A version of the fast scanner using bit fiddling techniques.
|
||||
|
||||
|
||||
For 32-bit words, one would normally perform 16 comparisons and
|
||||
16 branches. With this algorithm one performs 24 arithmetic
|
||||
operations and one branch. Whether this is faster with a 32-bit
|
||||
@ -236,7 +236,7 @@ search_line_acc_char (const uchar *s, const uchar *end ATTRIBUTE_UNUSED)
|
||||
unsigned int misalign;
|
||||
const word_type *p;
|
||||
word_type val, t;
|
||||
|
||||
|
||||
/* Align the buffer. Mask out any bytes from before the beginning. */
|
||||
p = (word_type *)((uintptr_t)s & -sizeof(word_type));
|
||||
val = *p;
|
||||
@ -433,20 +433,20 @@ search_line_fast (const uchar *s, const uchar *end ATTRIBUTE_UNUSED)
|
||||
typedef __attribute__((altivec(vector))) unsigned char vc;
|
||||
|
||||
const vc repl_nl = {
|
||||
'\n', '\n', '\n', '\n', '\n', '\n', '\n', '\n',
|
||||
'\n', '\n', '\n', '\n', '\n', '\n', '\n', '\n',
|
||||
'\n', '\n', '\n', '\n', '\n', '\n', '\n', '\n'
|
||||
};
|
||||
const vc repl_cr = {
|
||||
'\r', '\r', '\r', '\r', '\r', '\r', '\r', '\r',
|
||||
'\r', '\r', '\r', '\r', '\r', '\r', '\r', '\r',
|
||||
'\r', '\r', '\r', '\r', '\r', '\r', '\r', '\r'
|
||||
};
|
||||
const vc repl_bs = {
|
||||
'\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\',
|
||||
'\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\',
|
||||
'\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\'
|
||||
};
|
||||
const vc repl_qm = {
|
||||
'?', '?', '?', '?', '?', '?', '?', '?',
|
||||
'?', '?', '?', '?', '?', '?', '?', '?',
|
||||
'?', '?', '?', '?', '?', '?', '?', '?',
|
||||
'?', '?', '?', '?', '?', '?', '?', '?',
|
||||
};
|
||||
const vc zero = { 0 };
|
||||
|
||||
@ -537,20 +537,20 @@ search_line_fast (const uchar *s, const uchar *end ATTRIBUTE_UNUSED)
|
||||
typedef __attribute__((altivec(vector))) unsigned char vc;
|
||||
|
||||
const vc repl_nl = {
|
||||
'\n', '\n', '\n', '\n', '\n', '\n', '\n', '\n',
|
||||
'\n', '\n', '\n', '\n', '\n', '\n', '\n', '\n',
|
||||
'\n', '\n', '\n', '\n', '\n', '\n', '\n', '\n'
|
||||
};
|
||||
const vc repl_cr = {
|
||||
'\r', '\r', '\r', '\r', '\r', '\r', '\r', '\r',
|
||||
'\r', '\r', '\r', '\r', '\r', '\r', '\r', '\r',
|
||||
'\r', '\r', '\r', '\r', '\r', '\r', '\r', '\r'
|
||||
};
|
||||
const vc repl_bs = {
|
||||
'\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\',
|
||||
'\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\',
|
||||
'\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\'
|
||||
};
|
||||
const vc repl_qm = {
|
||||
'?', '?', '?', '?', '?', '?', '?', '?',
|
||||
'?', '?', '?', '?', '?', '?', '?', '?',
|
||||
'?', '?', '?', '?', '?', '?', '?', '?',
|
||||
'?', '?', '?', '?', '?', '?', '?', '?',
|
||||
};
|
||||
const vc ones = {
|
||||
-1, -1, -1, -1, -1, -1, -1, -1,
|
||||
@ -786,8 +786,8 @@ search_line_fast (const uchar *s, const uchar *end ATTRIBUTE_UNUSED)
|
||||
l = vpadd_u8 (vget_low_u8 (t), vget_high_u8 (t));
|
||||
m = vpaddl_u8 (l);
|
||||
n = vpaddl_u16 (m);
|
||||
|
||||
found = vget_lane_u32 ((uint32x2_t) vorr_u64 ((uint64x1_t) n,
|
||||
|
||||
found = vget_lane_u32 ((uint32x2_t) vorr_u64 ((uint64x1_t) n,
|
||||
vshr_n_u64 ((uint64x1_t) n, 24)), 0);
|
||||
found &= mask;
|
||||
}
|
||||
@ -2022,7 +2022,7 @@ name_p (cpp_reader *pfile, const cpp_string *string)
|
||||
/* After parsing an identifier or other sequence, produce a warning about
|
||||
sequences not in NFC/NFKC. */
|
||||
static void
|
||||
warn_about_normalization (cpp_reader *pfile,
|
||||
warn_about_normalization (cpp_reader *pfile,
|
||||
const cpp_token *token,
|
||||
const struct normalize_state *s,
|
||||
bool identifier)
|
||||
@ -2587,7 +2587,7 @@ lex_raw_string (cpp_reader *pfile, cpp_token *token, const uchar *base)
|
||||
++note;
|
||||
|
||||
lit_accum accum;
|
||||
|
||||
|
||||
uchar prefix[17];
|
||||
unsigned prefix_len = 0;
|
||||
enum Phase
|
||||
@ -2998,14 +2998,14 @@ cpp_get_comments (cpp_reader *pfile)
|
||||
}
|
||||
|
||||
/* Append a comment to the end of the comment table. */
|
||||
static void
|
||||
store_comment (cpp_reader *pfile, cpp_token *token)
|
||||
static void
|
||||
store_comment (cpp_reader *pfile, cpp_token *token)
|
||||
{
|
||||
int len;
|
||||
|
||||
if (pfile->comments.allocated == 0)
|
||||
{
|
||||
pfile->comments.allocated = 256;
|
||||
pfile->comments.allocated = 256;
|
||||
pfile->comments.entries = (cpp_comment *) xmalloc
|
||||
(pfile->comments.allocated * sizeof (cpp_comment));
|
||||
}
|
||||
@ -3021,7 +3021,7 @@ store_comment (cpp_reader *pfile, cpp_token *token)
|
||||
len = token->val.str.len;
|
||||
|
||||
/* Copy comment. Note, token may not be NULL terminated. */
|
||||
pfile->comments.entries[pfile->comments.count].comment =
|
||||
pfile->comments.entries[pfile->comments.count].comment =
|
||||
(char *) xmalloc (sizeof (char) * (len + 1));
|
||||
memcpy (pfile->comments.entries[pfile->comments.count].comment,
|
||||
token->val.str.text, len);
|
||||
@ -3588,7 +3588,7 @@ cpp_maybe_module_directive (cpp_reader *pfile, cpp_token *result)
|
||||
if (_cpp_defined_macro_p (node)
|
||||
&& _cpp_maybe_notify_macro_use (pfile, node, tok->src_loc)
|
||||
&& !cpp_fun_like_macro_p (node))
|
||||
cpp_error_with_line (pfile, CPP_DL_ERROR, tok->src_loc, 0,
|
||||
cpp_error_with_line (pfile, CPP_DL_ERROR, tok->src_loc, 0,
|
||||
"module control-line %qs cannot be"
|
||||
" an object-like macro",
|
||||
NODE_NAME (node));
|
||||
@ -3991,7 +3991,7 @@ _cpp_lex_direct (cpp_reader *pfile)
|
||||
/* A potential block or line comment. */
|
||||
comment_start = buffer->cur;
|
||||
c = *buffer->cur;
|
||||
|
||||
|
||||
if (c == '*')
|
||||
{
|
||||
if (_cpp_skip_block_comment (pfile))
|
||||
@ -4379,21 +4379,21 @@ utf8_to_ucn (unsigned char *buffer, const unsigned char *name)
|
||||
int ucn_len_c;
|
||||
unsigned t;
|
||||
unsigned long utf32;
|
||||
|
||||
|
||||
/* Compute the length of the UTF-8 sequence. */
|
||||
for (t = *name; t & 0x80; t <<= 1)
|
||||
ucn_len++;
|
||||
|
||||
|
||||
utf32 = *name & (0x7F >> ucn_len);
|
||||
for (ucn_len_c = 1; ucn_len_c < ucn_len; ucn_len_c++)
|
||||
{
|
||||
utf32 = (utf32 << 6) | (*++name & 0x3F);
|
||||
|
||||
|
||||
/* Ill-formed UTF-8. */
|
||||
if ((*name & ~0x3F) != 0x80)
|
||||
abort ();
|
||||
}
|
||||
|
||||
|
||||
*buffer++ = '\\';
|
||||
*buffer++ = 'U';
|
||||
for (j = 7; j >= 0; j--)
|
||||
@ -4418,7 +4418,7 @@ _cpp_spell_ident_ucns (unsigned char *buffer, cpp_hashnode *ident)
|
||||
{
|
||||
size_t i;
|
||||
const unsigned char *name = NODE_NAME (ident);
|
||||
|
||||
|
||||
for (i = 0; i < NODE_LEN (ident); i++)
|
||||
if (name[i] & ~0x7F)
|
||||
{
|
||||
@ -4492,7 +4492,7 @@ cpp_spell_token (cpp_reader *pfile, const cpp_token *token,
|
||||
freed when the reader is destroyed. Useful for diagnostics. */
|
||||
unsigned char *
|
||||
cpp_token_as_text (cpp_reader *pfile, const cpp_token *token)
|
||||
{
|
||||
{
|
||||
unsigned int len = cpp_token_len (token) + 1;
|
||||
unsigned char *start = _cpp_unaligned_alloc (pfile, len), *end;
|
||||
|
||||
@ -5154,7 +5154,7 @@ do_peek_module (cpp_reader *pfile, unsigned char c,
|
||||
preprocessing tokens, or module followed by identifier, ':' or
|
||||
';' preprocessing tokens. */
|
||||
unsigned char p = *peek++;
|
||||
|
||||
|
||||
/* A character literal is ... single quotes, ... optionally preceded
|
||||
by u8, u, U, or L */
|
||||
/* A string-literal is a ... double quotes, optionally prefixed by
|
||||
@ -5310,7 +5310,7 @@ cpp_directive_only_process (cpp_reader *pfile,
|
||||
goto next_line;
|
||||
}
|
||||
goto dflt;
|
||||
|
||||
|
||||
case '#':
|
||||
if (bol)
|
||||
{
|
||||
@ -5648,7 +5648,7 @@ cpp_directive_only_process (cpp_reader *pfile,
|
||||
bad_string:
|
||||
cpp_error_with_line (pfile, CPP_DL_ERROR, sloc, 0,
|
||||
"unterminated literal");
|
||||
|
||||
|
||||
done_string:
|
||||
raw = false;
|
||||
lwm = pos - 1;
|
||||
|
@ -468,7 +468,7 @@ line_map_new_raw (line_maps *set, bool macro_p, unsigned num)
|
||||
{
|
||||
unsigned num_maps_allocated = LINEMAPS_ALLOCATED (set, macro_p);
|
||||
unsigned num_maps_used = LINEMAPS_USED (set, macro_p);
|
||||
|
||||
|
||||
if (num > num_maps_allocated - num_maps_used)
|
||||
{
|
||||
/* We need more space! */
|
||||
@ -494,7 +494,7 @@ line_map_new_raw (line_maps *set, bool macro_p, unsigned num)
|
||||
/* We are going to execute some dance to try to reduce the
|
||||
overhead of the memory allocator, in case we are using the
|
||||
ggc-page.cc one.
|
||||
|
||||
|
||||
The actual size of memory we are going to get back from the
|
||||
allocator may well be larger than what we ask for. Use this
|
||||
hook to find what that size is. */
|
||||
@ -1080,7 +1080,7 @@ linemap_position_for_loc_and_offset (line_maps *set,
|
||||
if (column >= (1u << (map->m_column_and_range_bits - map->m_range_bits)))
|
||||
return loc;
|
||||
|
||||
location_t r =
|
||||
location_t r =
|
||||
linemap_position_for_line_and_column (set, map, line, column);
|
||||
if (linemap_assert_fails (r <= set->highest_location)
|
||||
|| linemap_assert_fails (map == linemap_lookup (set, r)))
|
||||
@ -1277,7 +1277,7 @@ linemap_macro_map_loc_unwind_toward_spelling (const line_maps *set,
|
||||
linemap_assert (token_no < MACRO_MAP_NUM_MACRO_TOKENS (map));
|
||||
|
||||
location = MACRO_MAP_LOCATIONS (map)[2 * token_no];
|
||||
|
||||
|
||||
return location;
|
||||
}
|
||||
|
||||
@ -1580,7 +1580,7 @@ linemap_macro_loc_to_spelling_point (const line_maps *set,
|
||||
macro. Otherwise, return LOCATION. SET is the set of maps
|
||||
location come from. ORIGINAL_MAP is an output parm. If non NULL,
|
||||
the function sets *ORIGINAL_MAP to the ordinary (non-macro) map the
|
||||
returned location comes from.
|
||||
returned location comes from.
|
||||
|
||||
This is a subroutine of linemap_resolve_location. */
|
||||
|
||||
@ -1768,14 +1768,14 @@ linemap_location_from_macro_definition_p (const line_maps *set,
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
/*
|
||||
Suppose that LOC is the virtual location of a token T coming from
|
||||
the expansion of a macro M. This function then steps up to get the
|
||||
location L of the point where M got expanded. If L is a spelling
|
||||
location inside a macro expansion M', then this function returns
|
||||
the locus of the point where M' was expanded. Said otherwise, this
|
||||
function returns the location of T in the context that triggered
|
||||
the expansion of M.
|
||||
the expansion of M.
|
||||
|
||||
*LOC_MAP must be set to the map of LOC. This function then sets it
|
||||
to the map of the returned location. */
|
||||
|
@ -586,9 +586,9 @@ _cpp_builtin_macro_text (cpp_reader *pfile, cpp_hashnode *node,
|
||||
struct _cpp_file *file = cpp_get_file (pbuffer);
|
||||
if (file)
|
||||
{
|
||||
/* Generate __TIMESTAMP__ string, that represents
|
||||
the date and time of the last modification
|
||||
of the current source file. The string constant
|
||||
/* Generate __TIMESTAMP__ string, that represents
|
||||
the date and time of the last modification
|
||||
of the current source file. The string constant
|
||||
looks like "Sun Sep 16 01:03:52 1973". */
|
||||
struct tm *tb = NULL;
|
||||
struct stat *st = _cpp_get_file_stat (file);
|
||||
@ -699,7 +699,7 @@ _cpp_builtin_macro_text (cpp_reader *pfile, cpp_hashnode *node,
|
||||
{
|
||||
cpp_errno (pfile, CPP_DL_WARNING,
|
||||
"could not determine date and time");
|
||||
|
||||
|
||||
pfile->date = UC"\"??? ?? ????\"";
|
||||
pfile->time = UC"\"??:??:??\"";
|
||||
}
|
||||
@ -777,7 +777,7 @@ _cpp_builtin_macro_text (cpp_reader *pfile, cpp_hashnode *node,
|
||||
sprintf ((char *) result, "%u", number);
|
||||
}
|
||||
|
||||
return result;
|
||||
return result;
|
||||
}
|
||||
|
||||
/* Get an idempotent date. Either the cached value, the value from
|
||||
@ -1477,7 +1477,7 @@ funlike_invocation_p (cpp_reader *pfile, cpp_hashnode *node,
|
||||
pfile->state.parsing_args = 2;
|
||||
return collect_args (pfile, node, pragma_buff, num_args);
|
||||
}
|
||||
|
||||
|
||||
/* Back up. A CPP_EOF is either an EOF from an argument we're
|
||||
expanding, or a fake one from lex_direct. We want to backup the
|
||||
former, but not the latter. We may have skipped padding, in
|
||||
@ -1784,7 +1784,7 @@ arg_token_ptr_at (const macro_arg *arg, size_t index,
|
||||
case MACRO_ARG_TOKEN_NORMAL:
|
||||
tokens_ptr = arg->first;
|
||||
break;
|
||||
case MACRO_ARG_TOKEN_STRINGIFIED:
|
||||
case MACRO_ARG_TOKEN_STRINGIFIED:
|
||||
tokens_ptr = (const cpp_token **) &arg->stringified;
|
||||
break;
|
||||
case MACRO_ARG_TOKEN_EXPANDED:
|
||||
@ -1902,12 +1902,12 @@ macro_arg_token_iter_get_location (const macro_arg_token_iter *it)
|
||||
want each tokens resulting from function-like macro arguments
|
||||
expansion to have a different location or not.
|
||||
|
||||
E.g, consider this function-like macro:
|
||||
E.g, consider this function-like macro:
|
||||
|
||||
#define M(x) x - 3
|
||||
|
||||
Then consider us "calling" it (and thus expanding it) like:
|
||||
|
||||
|
||||
M(1+4)
|
||||
|
||||
It will be expanded into:
|
||||
@ -2045,7 +2045,7 @@ replace_args (cpp_reader *pfile, cpp_hashnode *node, cpp_macro *macro,
|
||||
location that records many things like the locus of the expansion
|
||||
point as well as the original locus inside the definition of the
|
||||
macro. This location is called a virtual location.
|
||||
|
||||
|
||||
So the buffer BUFF holds a set of cpp_token*, and the buffer
|
||||
VIRT_LOCS holds the virtual locations of the tokens held by BUFF.
|
||||
|
||||
@ -2053,7 +2053,7 @@ replace_args (cpp_reader *pfile, cpp_hashnode *node, cpp_macro *macro,
|
||||
context, when the latter is pushed. The memory allocated to
|
||||
store the tokens and their locations is going to be freed once
|
||||
the context of macro expansion is popped.
|
||||
|
||||
|
||||
As far as tokens are concerned, the memory overhead of
|
||||
-ftrack-macro-expansion is proportional to the number of
|
||||
macros that get expanded multiplied by sizeof (location_t).
|
||||
@ -2400,7 +2400,7 @@ replace_args (cpp_reader *pfile, cpp_hashnode *node, cpp_macro *macro,
|
||||
" in ISO C++98",
|
||||
NODE_NAME (node), src->val.macro_arg.arg_no);
|
||||
else if (CPP_OPTION (pfile, cpp_warn_c90_c99_compat))
|
||||
cpp_pedwarning (pfile,
|
||||
cpp_pedwarning (pfile,
|
||||
CPP_OPTION (pfile, cpp_warn_c90_c99_compat) > 0
|
||||
? CPP_W_C90_C99_COMPAT : CPP_W_PEDANTIC,
|
||||
"invoking macro %s argument %d: "
|
||||
@ -2693,7 +2693,7 @@ tokens_buff_add_token (_cpp_buff *buffer,
|
||||
{
|
||||
const cpp_token **result;
|
||||
location_t *virt_loc_dest = NULL;
|
||||
unsigned token_index =
|
||||
unsigned token_index =
|
||||
(BUFF_FRONT (buffer) - buffer->base) / sizeof (cpp_token *);
|
||||
|
||||
/* Abort if we pass the end the buffer. */
|
||||
@ -2840,7 +2840,7 @@ in_macro_expansion_p (cpp_reader *pfile)
|
||||
if (pfile == NULL)
|
||||
return false;
|
||||
|
||||
return (pfile->about_to_expand_macro_p
|
||||
return (pfile->about_to_expand_macro_p
|
||||
|| macro_of_context (pfile->context));
|
||||
}
|
||||
|
||||
@ -2944,7 +2944,7 @@ consume_next_token_from_context (cpp_reader *pfile,
|
||||
*location = (*token)->src_loc;
|
||||
FIRST (c).token++;
|
||||
}
|
||||
else if ((c)->tokens_kind == TOKENS_KIND_INDIRECT)
|
||||
else if ((c)->tokens_kind == TOKENS_KIND_INDIRECT)
|
||||
{
|
||||
*token = *FIRST (c).ptoken;
|
||||
*location = (*token)->src_loc;
|
||||
@ -3205,7 +3205,7 @@ cpp_get_token_1 (cpp_reader *pfile, location_t *location)
|
||||
_cpp_extend_buff (pfile, &pfile->u_buff, len + 1 + dotme * 2);
|
||||
unsigned char *buf = BUFF_FRONT (pfile->u_buff);
|
||||
size_t pos = 0;
|
||||
|
||||
|
||||
if (dotme)
|
||||
{
|
||||
buf[pos++] = '.';
|
||||
@ -3221,7 +3221,7 @@ cpp_get_token_1 (cpp_reader *pfile, location_t *location)
|
||||
|
||||
tmp->type = CPP_HEADER_NAME;
|
||||
XDELETEVEC (fname);
|
||||
|
||||
|
||||
result = tmp;
|
||||
}
|
||||
}
|
||||
@ -3475,7 +3475,7 @@ _cpp_save_parameter (cpp_reader *pfile, unsigned n, cpp_hashnode *node,
|
||||
= XRESIZEVEC (unsigned char, pfile->macro_buffer, len);
|
||||
pfile->macro_buffer_len = len;
|
||||
}
|
||||
|
||||
|
||||
macro_arg_saved_data *saved = (macro_arg_saved_data *)pfile->macro_buffer;
|
||||
saved[n].canonical_node = node;
|
||||
saved[n].value = node->value;
|
||||
|
@ -64,7 +64,7 @@ read_ucnid (const char *fname)
|
||||
{
|
||||
FILE *f = fopen (fname, "r");
|
||||
unsigned fl = 0;
|
||||
|
||||
|
||||
if (!f)
|
||||
fail ("opening ucnid.tab");
|
||||
for (;;)
|
||||
@ -130,7 +130,7 @@ static void
|
||||
read_table (char *fname)
|
||||
{
|
||||
FILE * f = fopen (fname, "r");
|
||||
|
||||
|
||||
if (!f)
|
||||
fail ("opening UnicodeData.txt");
|
||||
for (;;)
|
||||
@ -163,12 +163,12 @@ read_table (char *fname)
|
||||
combining_value[codepoint] = strtoul (l, &l, 10);
|
||||
if (*l++ != ';')
|
||||
fail ("parsing UnicodeData.txt, junk after combining class");
|
||||
|
||||
|
||||
/* Skip over bidi value. */
|
||||
do {
|
||||
l++;
|
||||
} while (*l != ';');
|
||||
|
||||
|
||||
/* Decomposition mapping. */
|
||||
decomp_useful = flags[codepoint];
|
||||
if (*++l == '<') /* Compatibility mapping. */
|
||||
@ -204,7 +204,7 @@ static void
|
||||
read_derived (const char *fname)
|
||||
{
|
||||
FILE * f = fopen (fname, "r");
|
||||
|
||||
|
||||
if (!f)
|
||||
fail ("opening DerivedNormalizationProps.txt");
|
||||
for (;;)
|
||||
@ -221,7 +221,7 @@ read_derived (const char *fname)
|
||||
maybe_not_NFC_p = (strstr (line, "; NFC_QC; M") != NULL);
|
||||
if (! not_NFC_p && ! not_NFKC_p && ! maybe_not_NFC_p)
|
||||
continue;
|
||||
|
||||
|
||||
start = strtoul (line, &l, 16);
|
||||
if (l == line)
|
||||
fail ("parsing DerivedNormalizationProps.txt, reading start");
|
||||
@ -233,7 +233,7 @@ read_derived (const char *fname)
|
||||
end = start;
|
||||
|
||||
while (start <= end)
|
||||
flags[start++] |= ((not_NFC_p ? not_NFC : 0)
|
||||
flags[start++] |= ((not_NFC_p ? not_NFC : 0)
|
||||
| (not_NFKC_p ? not_NFKC : 0)
|
||||
| (maybe_not_NFC_p ? maybe_not_NFC : 0)
|
||||
);
|
||||
@ -250,7 +250,7 @@ static void
|
||||
read_derivedcore (char *fname)
|
||||
{
|
||||
FILE * f = fopen (fname, "r");
|
||||
|
||||
|
||||
if (!f)
|
||||
fail ("opening DerivedCoreProperties.txt");
|
||||
for (;;)
|
||||
@ -269,7 +269,7 @@ read_derivedcore (char *fname)
|
||||
fail ("parsing DerivedCoreProperties.txt, reading code point");
|
||||
if (codepoint_start > MAX_CODE_POINT)
|
||||
fail ("parsing DerivedCoreProperties.txt, code point too large");
|
||||
|
||||
|
||||
if (*l == '.' && l[1] == '.')
|
||||
{
|
||||
char *l2 = l + 2;
|
||||
@ -324,7 +324,7 @@ write_table (void)
|
||||
unsigned char last_combine = combining_value[0];
|
||||
|
||||
printf ("static const struct ucnrange ucnranges[] = {\n");
|
||||
|
||||
|
||||
for (i = 1; i <= NUM_CODE_POINTS; i++)
|
||||
if (i == NUM_CODE_POINTS
|
||||
|| (flags[i] != last_flag && ((flags[i] | last_flag) & all_languages))
|
||||
@ -502,7 +502,7 @@ write_copyright (void)
|
||||
shall not be used in advertising or otherwise to promote the sale,\n\
|
||||
use or other dealings in these Data Files or Software without prior\n\
|
||||
written authorization of the copyright holder. */\n";
|
||||
|
||||
|
||||
puts (copyright);
|
||||
}
|
||||
|
||||
|
@ -355,7 +355,7 @@ deps_add_module_target (struct mkdeps *d, const char *m,
|
||||
const char *cmi, bool is_header_unit, bool is_exported)
|
||||
{
|
||||
gcc_assert (!d->module_name);
|
||||
|
||||
|
||||
d->module_name = xstrdup (m);
|
||||
d->is_header_unit = is_header_unit;
|
||||
d->is_exported = is_exported;
|
||||
|
@ -51,9 +51,9 @@ along with GCC; see the file COPYING3. If not see
|
||||
/* Some of these are #define on some systems, e.g. on AIX to redirect
|
||||
the names to 64bit capable functions for LARGE_FILES support. These
|
||||
redefs are pointless here so we can override them. */
|
||||
|
||||
#undef fopen
|
||||
#undef freopen
|
||||
|
||||
#undef fopen
|
||||
#undef freopen
|
||||
|
||||
#define fopen(PATH,MODE) fopen_unlocked(PATH,MODE)
|
||||
#define fdopen(FILDES,MODE) fdopen_unlocked(FILDES,MODE)
|
||||
|
@ -168,7 +168,7 @@ copy_comment (cpp_reader *pfile, const uchar *cur, int in_define)
|
||||
unterminated = skip_macro_block_comment (pfile);
|
||||
else
|
||||
unterminated = _cpp_skip_block_comment (pfile);
|
||||
|
||||
|
||||
if (unterminated)
|
||||
cpp_error_with_line (pfile, CPP_DL_ERROR, src_loc, 0,
|
||||
"unterminated comment");
|
||||
@ -919,7 +919,7 @@ _cpp_replacement_text_len (const cpp_macro *macro)
|
||||
}
|
||||
else
|
||||
len = macro->count;
|
||||
|
||||
|
||||
return len;
|
||||
}
|
||||
|
||||
|
@ -16,7 +16,7 @@
|
||||
Under Section 7 of GPL version 3, you are granted additional
|
||||
permissions described in the GCC Runtime Library Exception, version
|
||||
3.1, as published by the Free Software Foundation.
|
||||
|
||||
|
||||
You should have received a copy of the GNU General Public License and
|
||||
a copy of the GCC Runtime Library Exception along with this program;
|
||||
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
|
@ -6,12 +6,12 @@
|
||||
* 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.
|
||||
*
|
||||
*
|
||||
* This file 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.
|
||||
*
|
||||
*
|
||||
* Under Section 7 of GPL version 3, you are granted additional
|
||||
* permissions described in the GCC Runtime Library Exception, version
|
||||
* 3.1, as published by the Free Software Foundation.
|
||||
|
@ -59,7 +59,7 @@ get_dyn_handler_pointer (REG fp)
|
||||
the handler_data field from there. This field contains the offset
|
||||
from FP at which the address of the currently installed handler is
|
||||
to be found. */
|
||||
|
||||
|
||||
PDSCDEF * pd = PV_FOR (fp);
|
||||
/* Procedure descriptor pointer for the live subprogram with FP as the frame
|
||||
pointer, and to which _gcc_shell_handler is attached as a condition
|
||||
@ -79,11 +79,11 @@ get_dyn_handler_pointer (REG fp)
|
||||
case PDSC$K_KIND_FP_STACK: /* [3.4.2 PD for stack frame procedures] */
|
||||
handler_data_offset = 40;
|
||||
break;
|
||||
|
||||
|
||||
case PDSC$K_KIND_FP_REGISTER: /* [3.4.5 PD for reg frame procedures] */
|
||||
handler_data_offset = 32;
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
handler_data_offset = 0;
|
||||
break;
|
||||
@ -95,7 +95,7 @@ get_dyn_handler_pointer (REG fp)
|
||||
|
||||
/* Otherwise, fetch the fp offset at which the real handler address is to be
|
||||
found, then fetch and return the latter in turn. */
|
||||
|
||||
|
||||
handler_slot_offset = REG_AT ((REG)pd + handler_data_offset);
|
||||
|
||||
return (ADDR) REG_AT (fp + handler_slot_offset);
|
||||
@ -120,4 +120,4 @@ __gcc_shell_handler (struct chf$signal_array *sig_arr,
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
|
@ -106,7 +106,7 @@ alpha_vms_fallback_frame_state (struct _Unwind_Context *context,
|
||||
up if we're handed anything else. */
|
||||
if (pkind != PDSC$K_KIND_FP_STACK && pkind != PDSC$K_KIND_FP_REGISTER)
|
||||
return _URC_END_OF_STACK;
|
||||
|
||||
|
||||
if (eh_debug)
|
||||
printf ("FALLBACK: CTX FP = 0x%p, PV = 0x%p, EN = 0x%llx, RA = 0x%p\n",
|
||||
ADDR_AT (context->reg[29]), pv, pv->pdsc$q_entry, context->ra);
|
||||
@ -149,7 +149,7 @@ alpha_vms_fallback_frame_state (struct _Unwind_Context *context,
|
||||
status = LIB$GET_PREV_INVO_CONTEXT (&icb);
|
||||
GIVEUP_ON_FAILURE (status);
|
||||
|
||||
new_cfa = (ADDR) icb.libicb$q_ireg[30];
|
||||
new_cfa = (ADDR) icb.libicb$q_ireg[30];
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -158,10 +158,10 @@ alpha_vms_fallback_frame_state (struct _Unwind_Context *context,
|
||||
register value + frame size. Note that the frame base may differ
|
||||
from CONTEXT->cfa, typically if the caller has performed dynamic
|
||||
stack allocations. */
|
||||
|
||||
|
||||
int base_reg = pv->pdsc$w_flags & PDSC$M_BASE_REG_IS_FP ? 29 : 30;
|
||||
ADDR base_addr = ADDR_AT (context->reg[base_reg]);
|
||||
|
||||
|
||||
new_cfa = base_addr + pv->pdsc$l_size;
|
||||
}
|
||||
|
||||
@ -201,7 +201,7 @@ alpha_vms_fallback_frame_state (struct _Unwind_Context *context,
|
||||
for (i = 0, j = 0; i < 32; i++)
|
||||
if ((1 << i) & pv->pdsc$l_ireg_mask)
|
||||
UPDATE_FS_FOR_CFA_GR (fs, i, rsa_addr + 8 * ++j, new_cfa);
|
||||
|
||||
|
||||
/* ??? floating point registers ? */
|
||||
|
||||
break;
|
||||
@ -214,10 +214,10 @@ alpha_vms_fallback_frame_state (struct _Unwind_Context *context,
|
||||
|
||||
fs->regs.how[RA_COLUMN] = REG_SAVED_REG;
|
||||
fs->regs.reg[RA_COLUMN].loc.reg = pv->pdsc$b_save_ra;
|
||||
|
||||
|
||||
fs->regs.how[29] = REG_SAVED_REG;
|
||||
fs->regs.reg[29].loc.reg = pv->pdsc$b_save_fp;
|
||||
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@ -274,12 +274,12 @@ alpha_vms_fallback_frame_state (struct _Unwind_Context *context,
|
||||
UPDATE_FS_FOR_CFA_GR (fs, 26, &mechargs->chf$q_mch_savr26, new_cfa);
|
||||
UPDATE_FS_FOR_CFA_GR (fs, 27, &mechargs->chf$q_mch_savr27, new_cfa);
|
||||
UPDATE_FS_FOR_CFA_GR (fs, 28, &mechargs->chf$q_mch_savr28, new_cfa);
|
||||
|
||||
|
||||
/* Registers R2 to R7 are available from the rei frame pointer. */
|
||||
|
||||
|
||||
for (i = 2; i <= 7; i ++)
|
||||
UPDATE_FS_FOR_CFA_GR (fs, i, rei_frame_addr+(i - 2)*8, new_cfa);
|
||||
|
||||
|
||||
/* ??? floating point registers ? */
|
||||
}
|
||||
|
||||
|
@ -29,7 +29,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
If this result can't be rounded to the exact result with confidence, we
|
||||
round to the value between the two closest representable values, and
|
||||
test if the correctly rounded value is above or below this value.
|
||||
|
||||
|
||||
Because of the Newton-raphson iteration step, an error in the seed at X
|
||||
is amplified by X. Therefore, we don't want a Tchebycheff polynom
|
||||
or a polynom that is close to optimal according to the maximum norm
|
||||
|
@ -29,7 +29,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
If this result can't be rounded to the exact result with confidence, we
|
||||
round to the value between the two closest representable values, and
|
||||
test if the correctly rounded value is above or below this value.
|
||||
|
||||
|
||||
Because of the Newton-raphson iteration step, an error in the seed at X
|
||||
is amplified by X. Therefore, we don't want a Tchebycheff polynom
|
||||
or a polynom that is close to optimal according to the maximum norm
|
||||
|
@ -50,7 +50,7 @@ static func_ptr __DTOR_LIST__[1] __attribute__ ((section (".dtors")))
|
||||
= { (func_ptr) (-1) };
|
||||
|
||||
/* Run all the global destructors on exit from the program. */
|
||||
|
||||
|
||||
/* Some systems place the number of pointers in the first word of the
|
||||
table. On SVR4 however, that word is -1. In all cases, the table is
|
||||
null-terminated. On SVR4, we start from the beginning of the list and
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* Configuration file for ARM BPABI targets, library renames.
|
||||
Copyright (C) 2010-2024 Free Software Foundation, Inc.
|
||||
Contributed by CodeSourcery, LLC
|
||||
Contributed by CodeSourcery, LLC
|
||||
|
||||
This file is part of GCC.
|
||||
|
||||
|
@ -23,14 +23,14 @@
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
extern long long __divdi3 (long long, long long);
|
||||
extern unsigned long long __udivdi3 (unsigned long long,
|
||||
extern unsigned long long __udivdi3 (unsigned long long,
|
||||
unsigned long long);
|
||||
extern long long __gnu_ldivmod_helper (long long, long long, long long *);
|
||||
|
||||
|
||||
long long
|
||||
__gnu_ldivmod_helper (long long a,
|
||||
long long b,
|
||||
__gnu_ldivmod_helper (long long a,
|
||||
long long b,
|
||||
long long *remainder)
|
||||
{
|
||||
long long quotient;
|
||||
|
@ -201,7 +201,7 @@ int HIDDEN
|
||||
__sync_val_compare_and_swap_4 (int *ptr, int oldval, int newval)
|
||||
{
|
||||
int actual_oldval, fail;
|
||||
|
||||
|
||||
while (1)
|
||||
{
|
||||
actual_oldval = *ptr;
|
||||
@ -210,7 +210,7 @@ __sync_val_compare_and_swap_4 (int *ptr, int oldval, int newval)
|
||||
return actual_oldval;
|
||||
|
||||
fail = __kernel_cmpxchg (actual_oldval, newval, ptr);
|
||||
|
||||
|
||||
if (__builtin_expect (!fail, 1))
|
||||
return oldval;
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* ARM EABI compliant unwinding routines
|
||||
Copyright (C) 2004-2024 Free Software Foundation, Inc.
|
||||
Contributed by Paul Brook
|
||||
|
||||
|
||||
This file 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
|
||||
@ -167,7 +167,7 @@ __gnu_unwind_execute (_Unwind_Context * context, __gnu_unwind_state * uws)
|
||||
_Unwind_VRS_Set (context, _UVRSC_CORE, R_SP, _UVRSD_UINT32, ®);
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
if ((op & 0xf0) == 0x80)
|
||||
{
|
||||
op = (op << 8) | next_unwind_byte (uws);
|
||||
@ -200,7 +200,7 @@ __gnu_unwind_execute (_Unwind_Context * context, __gnu_unwind_state * uws)
|
||||
{
|
||||
/* Pop r4-r[4+nnn], [lr]. */
|
||||
_uw mask;
|
||||
|
||||
|
||||
mask = (0xff0 >> (7 - (op & 7))) & 0xff0;
|
||||
if (op & 8)
|
||||
mask |= (1 << R_LR);
|
||||
|
@ -510,7 +510,7 @@ __gnu_unwind_get_pr_addr (int idx)
|
||||
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* ABI defined personality routine entry points. */
|
||||
|
@ -13,9 +13,9 @@
|
||||
|
||||
#define F7_(name) __f7_##name
|
||||
#define F7P __f7_
|
||||
|
||||
|
||||
/* Renames for libf7.c, libf7.h. */
|
||||
|
||||
|
||||
#define f7_fabs __f7_fabs
|
||||
#define f7_neg __f7_neg
|
||||
#define f7_add __f7_add
|
||||
@ -173,9 +173,9 @@
|
||||
#define f7_ne_impl __f7_ne_impl
|
||||
#define f7_eq_impl __f7_eq_impl
|
||||
#define f7_unord_impl __f7_unord_impl
|
||||
|
||||
|
||||
/* Renames for libf7.c, libf7.h. */
|
||||
|
||||
|
||||
#define f7_const_1 __f7_const_1
|
||||
#define f7_const_1_P __f7_const_1_P
|
||||
#define f7_const_2 __f7_const_2
|
||||
@ -198,9 +198,9 @@
|
||||
#define f7_const_1_ln10_P __f7_const_1_ln10_P
|
||||
#define f7_const_sqrt2 __f7_const_sqrt2
|
||||
#define f7_const_sqrt2_P __f7_const_sqrt2_P
|
||||
|
||||
|
||||
/* Renames for libf7-asm.sx, f7-wraps.h. */
|
||||
|
||||
|
||||
#define f7_classify_asm __f7_classify_asm
|
||||
#define f7_store_expo_asm __f7_store_expo_asm
|
||||
#define f7_clr_asm __f7_clr_asm
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* C6X ABI compliant unwinding routines
|
||||
Copyright (C) 2011-2024 Free Software Foundation, Inc.
|
||||
|
||||
|
||||
This file 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
|
||||
@ -142,7 +142,7 @@ unwind_restore_pair (_Unwind_Context * context, int reg, _uw *ptr)
|
||||
}
|
||||
|
||||
static const int
|
||||
unwind_frame_regs[13] =
|
||||
unwind_frame_regs[13] =
|
||||
{
|
||||
R_A15, R_B15, R_B14, R_B13, R_B12, R_B11, R_B10, R_B3,
|
||||
R_A14, R_A13, R_A12, R_A11, R_A10
|
||||
@ -456,7 +456,7 @@ __gnu_unwind_execute (_Unwind_Context * context, __gnu_unwind_state * uws)
|
||||
_Unwind_VRS_Set (context, _UVRSC_CORE, R_B3, _UVRSD_UINT32, ®);
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
/* Reserved. */
|
||||
return _URC_FAILURE;
|
||||
}
|
||||
@ -513,7 +513,7 @@ _Unwind_Ptr
|
||||
_Unwind_GetRegionStart (_Unwind_Context *context)
|
||||
{
|
||||
_Unwind_Control_Block *ucbp;
|
||||
|
||||
|
||||
ucbp = (_Unwind_Control_Block *) _Unwind_GetGR (context, UNWIND_POINTER_REG);
|
||||
return (_Unwind_Ptr) ucbp->pr_cache.fnstart;
|
||||
}
|
||||
@ -523,7 +523,7 @@ _Unwind_GetLanguageSpecificData (_Unwind_Context *context)
|
||||
{
|
||||
_Unwind_Control_Block *ucbp;
|
||||
_uw *ptr;
|
||||
|
||||
|
||||
ucbp = (_Unwind_Control_Block *) _Unwind_GetGR (context, UNWIND_POINTER_REG);
|
||||
ptr = (_uw *) ucbp->pr_cache.ehtp;
|
||||
/* Skip the personality routine address. */
|
||||
|
@ -47,25 +47,25 @@ extern void _ITM_deregisterTMCloneTable (void *) WEAK;
|
||||
static inline void *getTMCloneTable (const void *f, size_t *tmct_siz)
|
||||
{
|
||||
char *tmct_fixed, *tmct = NULL;
|
||||
unsigned int i, img_count;
|
||||
unsigned int i, img_count;
|
||||
struct mach_header *mh;
|
||||
Dl_info info;
|
||||
|
||||
|
||||
if (! dladdr (f, &info) || info.dli_fbase == NULL)
|
||||
abort ();
|
||||
|
||||
|
||||
mh = (struct mach_header *) info.dli_fbase;
|
||||
tmct_fixed = GET_DATA_TMCT (mh, tmct_siz);
|
||||
*tmct_siz /= (sizeof (size_t) * 2);
|
||||
/* No tm_clone_table or no clones. */
|
||||
if (tmct_fixed == NULL || *tmct_siz == 0)
|
||||
return NULL;
|
||||
return NULL;
|
||||
|
||||
img_count = _dyld_image_count();
|
||||
for (i = 0; i < img_count && tmct == NULL; i++)
|
||||
{
|
||||
if (mh == _dyld_get_image_header(i))
|
||||
tmct = tmct_fixed + (unsigned long)_dyld_get_image_vmaddr_slide(i);
|
||||
tmct = tmct_fixed + (unsigned long)_dyld_get_image_vmaddr_slide(i);
|
||||
}
|
||||
|
||||
return tmct;
|
||||
|
@ -84,13 +84,13 @@ typedef void (*cxa_atexit_callback)(void *);
|
||||
|
||||
/* This structure holds a routine to call. There may be extra fields
|
||||
at the end of the structure that this code doesn't know about. */
|
||||
struct one_atexit_routine
|
||||
struct one_atexit_routine
|
||||
{
|
||||
union {
|
||||
atexit_callback ac;
|
||||
cxa_atexit_callback cac;
|
||||
} callback;
|
||||
/* has_arg is 0/2/4 if 'ac' is live, 1/3/5 if 'cac' is live.
|
||||
/* has_arg is 0/2/4 if 'ac' is live, 1/3/5 if 'cac' is live.
|
||||
Higher numbers indicate a later version of the structure that this
|
||||
code doesn't understand and will ignore. */
|
||||
int has_arg;
|
||||
@ -141,7 +141,7 @@ struct keymgr_atexit_list
|
||||
fails to call routines registered while an atexit routine is
|
||||
running. Return 1 if it works properly, and -1 if an error occurred. */
|
||||
|
||||
struct atexit_data
|
||||
struct atexit_data
|
||||
{
|
||||
int result;
|
||||
cxa_atexit_p cxa_atexit;
|
||||
@ -194,12 +194,12 @@ find_atexit_10_3 (void)
|
||||
unsigned int (*dyld_image_count_fn)(void);
|
||||
const char *(*dyld_get_image_name_fn)(unsigned int image_index);
|
||||
const void *(*dyld_get_image_header_fn)(unsigned int image_index);
|
||||
const void *(*NSLookupSymbolInImage_fn)(const void *image,
|
||||
const void *(*NSLookupSymbolInImage_fn)(const void *image,
|
||||
const char *symbolName,
|
||||
unsigned int options);
|
||||
void *(*NSAddressOfSymbol_fn)(const void *symbol);
|
||||
unsigned i, count;
|
||||
|
||||
|
||||
/* Find some dyld functions. */
|
||||
_dyld_func_lookup("__dyld_image_count", &dyld_image_count_fn);
|
||||
_dyld_func_lookup("__dyld_get_image_name", &dyld_get_image_name_fn);
|
||||
@ -212,14 +212,14 @@ find_atexit_10_3 (void)
|
||||
|| ! dyld_get_image_header_fn || ! NSLookupSymbolInImage_fn
|
||||
|| ! NSAddressOfSymbol_fn)
|
||||
return NULL;
|
||||
|
||||
|
||||
count = dyld_image_count_fn ();
|
||||
for (i = 0; i < count; i++)
|
||||
{
|
||||
const char * path = dyld_get_image_name_fn (i);
|
||||
const void * image;
|
||||
const void * symbol;
|
||||
|
||||
|
||||
if (strcmp (path, "/usr/lib/libSystem.B.dylib") != 0)
|
||||
continue;
|
||||
image = dyld_get_image_header_fn (i);
|
||||
@ -235,14 +235,14 @@ find_atexit_10_3 (void)
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Create (if necessary), find, lock, fill in, and return our globals.
|
||||
Return NULL on error, in which case the globals will not be locked.
|
||||
/* Create (if necessary), find, lock, fill in, and return our globals.
|
||||
Return NULL on error, in which case the globals will not be locked.
|
||||
The caller should call keymgr_set_and_unlock. */
|
||||
static struct keymgr_atexit_list *
|
||||
get_globals (void)
|
||||
{
|
||||
struct keymgr_atexit_list * r;
|
||||
|
||||
|
||||
#ifdef __ppc__
|
||||
/* 10.3.9 doesn't have _keymgr_get_and_lock_processwide_ptr_2 so the
|
||||
PPC side can't use it. On 10.4 this just means the error gets
|
||||
@ -256,7 +256,7 @@ get_globals (void)
|
||||
return NULL;
|
||||
r = rr;
|
||||
#endif
|
||||
|
||||
|
||||
if (r == NULL)
|
||||
{
|
||||
r = calloc (sizeof (struct keymgr_atexit_list), 1);
|
||||
@ -307,7 +307,7 @@ get_globals (void)
|
||||
}
|
||||
|
||||
return r;
|
||||
|
||||
|
||||
error:
|
||||
_keymgr_set_and_unlock_processwide_ptr (KEYMGR_ATEXIT_LIST, r);
|
||||
return NULL;
|
||||
@ -325,7 +325,7 @@ add_routine (struct keymgr_atexit_list * g,
|
||||
struct atexit_routine_list * s
|
||||
= malloc (sizeof (struct atexit_routine_list));
|
||||
int result;
|
||||
|
||||
|
||||
if (!s)
|
||||
{
|
||||
_keymgr_set_and_unlock_processwide_ptr (KEYMGR_ATEXIT_LIST, g);
|
||||
@ -382,7 +382,7 @@ cxa_atexit_wrapper (void* routine_param)
|
||||
struct keymgr_atexit_list *g;
|
||||
struct atexit_routine_list * base = NULL;
|
||||
char prev_running = 0;
|
||||
|
||||
|
||||
g = _keymgr_get_and_lock_processwide_ptr (KEYMGR_ATEXIT_LIST);
|
||||
if (g)
|
||||
{
|
||||
@ -425,7 +425,7 @@ our_atexit (void)
|
||||
g = _keymgr_get_and_lock_processwide_ptr (KEYMGR_ATEXIT_LIST);
|
||||
if (! g || g->version != 0 || g->atexit_status != atexit_status_missing)
|
||||
return;
|
||||
|
||||
|
||||
prev_running = g->running_routines;
|
||||
g->running_routines = 1;
|
||||
g = run_routines (g, NULL);
|
||||
@ -450,7 +450,7 @@ atexit_common (const struct one_atexit_routine *r, const void *dso)
|
||||
|
||||
if (! g)
|
||||
return -1;
|
||||
|
||||
|
||||
if (g->running_routines || g->atexit_status == atexit_status_missing)
|
||||
return add_routine (g, r);
|
||||
|
||||
@ -497,7 +497,7 @@ atexit_common (const struct one_atexit_routine *r, const void *dso)
|
||||
/* These are the actual replacement routines; they just funnel into
|
||||
atexit_common. */
|
||||
|
||||
int __cxa_atexit (cxa_atexit_callback func, void* arg,
|
||||
int __cxa_atexit (cxa_atexit_callback func, void* arg,
|
||||
const void* dso) __attribute__((visibility("hidden")));
|
||||
|
||||
int
|
||||
|
@ -1,19 +1,19 @@
|
||||
/* Move double-word library function.
|
||||
Copyright (C) 2000-2024 Free Software Foundation, Inc.
|
||||
Contributed by Red Hat, 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.
|
||||
|
||||
|
||||
Under Section 7 of GPL version 3, you are granted additional
|
||||
permissions described in the GCC Runtime Library Exception, version
|
||||
3.1, as published by the Free Software Foundation.
|
||||
|
@ -1,19 +1,19 @@
|
||||
/* Move half-word library function.
|
||||
Copyright (C) 2000-2024 Free Software Foundation, Inc.
|
||||
Contributed by Red Hat, 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.
|
||||
|
||||
|
||||
Under Section 7 of GPL version 3, you are granted additional
|
||||
permissions described in the GCC Runtime Library Exception, version
|
||||
3.1, as published by the Free Software Foundation.
|
||||
|
@ -1,19 +1,19 @@
|
||||
/* Move word library function.
|
||||
Copyright (C) 2000-2024 Free Software Foundation, Inc.
|
||||
Contributed by Red Hat, 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.
|
||||
|
||||
|
||||
Under Section 7 of GPL version 3, you are granted additional
|
||||
permissions described in the GCC Runtime Library Exception, version
|
||||
3.1, as published by the Free Software Foundation.
|
||||
|
@ -1,19 +1,19 @@
|
||||
/* Frv initialization file linked before all user modules
|
||||
Copyright (C) 1999-2024 Free Software Foundation, Inc.
|
||||
Contributed by Red Hat, 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.
|
||||
|
||||
|
||||
Under Section 7 of GPL version 3, you are granted additional
|
||||
permissions described in the GCC Runtime Library Exception, version
|
||||
3.1, as published by the Free Software Foundation.
|
||||
|
@ -1,19 +1,19 @@
|
||||
/* Frv initialization file linked after all user modules
|
||||
Copyright (C) 1999-2024 Free Software Foundation, Inc.
|
||||
Contributed by Red Hat, 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.
|
||||
|
||||
|
||||
Under Section 7 of GPL version 3, you are granted additional
|
||||
permissions described in the GCC Runtime Library Exception, version
|
||||
3.1, as published by the Free Software Foundation.
|
||||
|
@ -3,7 +3,7 @@
|
||||
|
||||
Copyright (C) 2023-2024 Free Software Foundation, Inc.
|
||||
Contributed by Siemens.
|
||||
|
||||
|
||||
This file 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
|
||||
|
@ -58,7 +58,7 @@ __gthread_once (__gthread_once_t * __guard, void (*__func) (void))
|
||||
|
||||
/* Busy-wait until we have exclusive access to the state. Check if
|
||||
another thread managed to perform the init call in the interim. */
|
||||
|
||||
|
||||
while (!__TAS(&__guard->busy))
|
||||
{
|
||||
if (__guard->done)
|
||||
|
@ -24,7 +24,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
union _FP_UNION_Q
|
||||
{
|
||||
__float128 flt;
|
||||
struct
|
||||
struct
|
||||
{
|
||||
unsigned long frac0 : 32;
|
||||
unsigned long frac1 : 32;
|
||||
|
@ -5,12 +5,12 @@
|
||||
* 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.
|
||||
*
|
||||
*
|
||||
* This file 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.
|
||||
*
|
||||
*
|
||||
* Under Section 7 of GPL version 3, you are granted additional
|
||||
* permissions described in the GCC Runtime Library Exception, version
|
||||
* 3.1, as published by the Free Software Foundation.
|
||||
@ -39,7 +39,7 @@ __attribute__ ((force_align_arg_pointer))
|
||||
set_fast_math_sse (unsigned int edx)
|
||||
{
|
||||
unsigned int mxcsr;
|
||||
|
||||
|
||||
if (edx & bit_FXSAVE)
|
||||
{
|
||||
/* Check if DAZ is available. */
|
||||
|
@ -5,12 +5,12 @@
|
||||
* 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.
|
||||
*
|
||||
*
|
||||
* This file 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.
|
||||
*
|
||||
*
|
||||
* Under Section 7 of GPL version 3, you are granted additional
|
||||
* permissions described in the GCC Runtime Library Exception, version
|
||||
* 3.1, as published by the Free Software Foundation.
|
||||
|
@ -28,7 +28,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
#define IN_LIBGCC2
|
||||
|
||||
/* auto-host.h is needed by cygming.h for HAVE_GAS_WEAK and here
|
||||
for HAVE_LD_RO_RW_SECTION_MIXING. */
|
||||
for HAVE_LD_RO_RW_SECTION_MIXING. */
|
||||
#include "auto-host.h"
|
||||
#include "tconfig.h"
|
||||
#include "tsystem.h"
|
||||
@ -53,7 +53,7 @@ static EH_FRAME_SECTION_CONST int __FRAME_END__[]
|
||||
= { 0 };
|
||||
#endif
|
||||
|
||||
extern void __gcc_register_frame (void);
|
||||
extern void __gcc_register_frame (void);
|
||||
extern void __gcc_deregister_frame (void);
|
||||
|
||||
#pragma GCC diagnostic push
|
||||
|
@ -5,12 +5,12 @@
|
||||
* 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.
|
||||
*
|
||||
*
|
||||
* This file 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.
|
||||
*
|
||||
*
|
||||
* Under Section 7 of GPL version 3, you are granted additional
|
||||
* permissions described in the GCC Runtime Library Exception, version
|
||||
* 3.1, as published by the Free Software Foundation.
|
||||
|
@ -45,7 +45,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
some foreign code for which no unwind frame can be found. If this is
|
||||
a call from the Windows signal handler, then:
|
||||
|
||||
2) We must get the signal context information.
|
||||
2) We must get the signal context information.
|
||||
|
||||
* With the standard exception filter:
|
||||
|
||||
@ -120,7 +120,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
#define MD_FALLBACK_FRAME_STATE_FOR i386_w32_fallback_frame_state
|
||||
|
||||
static _Unwind_Reason_Code
|
||||
i386_w32_fallback_frame_state (struct _Unwind_Context *context,
|
||||
i386_w32_fallback_frame_state (struct _Unwind_Context *context,
|
||||
_Unwind_FrameState *fs)
|
||||
|
||||
{
|
||||
@ -136,7 +136,7 @@ i386_w32_fallback_frame_state (struct _Unwind_Context *context,
|
||||
PCONTEXT proc_ctx_;
|
||||
long new_cfa_;
|
||||
|
||||
if (SIG_SEH1)
|
||||
if (SIG_SEH1)
|
||||
proc_ctx_ = (PCONTEXT) (*(int*)(ctx_cfa_ + 56));
|
||||
else if (SIG_SEH2)
|
||||
proc_ctx_ = (PCONTEXT) (*(int*)(ctx_cfa_ + 8));
|
||||
@ -179,9 +179,9 @@ i386_w32_fallback_frame_state (struct _Unwind_Context *context,
|
||||
one of it's probes prior to the real SP adjustment. The only
|
||||
operations of interest performed is "pushl %ecx", followed by
|
||||
ecx clobbering. */
|
||||
else if (SIG_ALLOCA)
|
||||
else if (SIG_ALLOCA)
|
||||
{
|
||||
/* Only one push between entry in _alloca and the probe trap. */
|
||||
/* Only one push between entry in _alloca and the probe trap. */
|
||||
long new_cfa_ = (long) ctx_cfa_ + 4;
|
||||
|
||||
fs->regs.cfa_how = CFA_REG_OFFSET;
|
||||
|
@ -55,7 +55,7 @@ typedef unsigned long long uqword;
|
||||
/* ENTRY is the unwind table entry found for a PC part of call chain we're
|
||||
unwinding through. Return whether we should force the generic unwinder
|
||||
to resort to "fallback" processing. */
|
||||
|
||||
|
||||
static int
|
||||
force_fallback_processing_for (void * pc, vms_unw_table_entry * entry)
|
||||
{
|
||||
@ -100,7 +100,7 @@ force_fallback_processing_for (void * pc, vms_unw_table_entry * entry)
|
||||
return 0;
|
||||
|
||||
/* The OSSD block is found past the header, unwind descriptor area
|
||||
and condition handler pointer, if any. */
|
||||
and condition handler pointer, if any. */
|
||||
ossd = (ossddef *)
|
||||
/* Beware: uqword pointer arithmetic below. */
|
||||
(unw_info_block
|
||||
@ -111,16 +111,16 @@ force_fallback_processing_for (void * pc, vms_unw_table_entry * entry)
|
||||
/* "A General Information segment may be omitted if all of its fields
|
||||
would have their default values. If a General Information segment
|
||||
is present, it must be the first in the OSSD area." So ... */
|
||||
|
||||
|
||||
if (eh_debug)
|
||||
printf ("ossd @ 0x%p\n", ossd);
|
||||
|
||||
|
||||
if (eh_debug && ossd->ossd$v_type == OSSD$K_GENERAL_INFO)
|
||||
printf ("exc_frame = %d - bot_frame = %d - base_frame = %d\n",
|
||||
ossd->ossd$v_exception_frame,
|
||||
ossd->ossd$v_exception_frame,
|
||||
ossd->ossd$v_bottom_of_stack,
|
||||
ossd->ossd$v_base_frame);
|
||||
|
||||
|
||||
return
|
||||
ossd->ossd$v_type == OSSD$K_GENERAL_INFO
|
||||
&& (ossd->ossd$v_exception_frame
|
||||
|
@ -43,7 +43,7 @@ _U_Qfne (long double a, long double b)
|
||||
{
|
||||
return (_U_Qfcmp (a, b, 4) == 0);
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
_U_Qfgt (long double a, long double b)
|
||||
{
|
||||
|
@ -5,12 +5,12 @@
|
||||
* 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.
|
||||
*
|
||||
*
|
||||
* This file 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.
|
||||
*
|
||||
*
|
||||
* Under Section 7 of GPL version 3, you are granted additional
|
||||
* permissions described in the GCC Runtime Library Exception, version
|
||||
* 3.1, as published by the Free Software Foundation.
|
||||
|
@ -24,7 +24,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
union _FP_UNION_Q
|
||||
{
|
||||
__float128 flt;
|
||||
struct
|
||||
struct
|
||||
{
|
||||
unsigned long frac0 : 64;
|
||||
unsigned long frac1 : 48;
|
||||
|
@ -102,7 +102,7 @@ enum unw_where
|
||||
UNW_WHERE_BR, /* register is saved in a branch register */
|
||||
UNW_WHERE_SPREL, /* register is saved on memstack (sp-relative) */
|
||||
UNW_WHERE_PSPREL, /* register is saved on memstack (psp-relative) */
|
||||
|
||||
|
||||
/* At the end of each prologue these locations get resolved to
|
||||
UNW_WHERE_PSPREL and UNW_WHERE_GR, respectively. */
|
||||
UNW_WHERE_SPILL_HOME, /* register is saved in its spill home */
|
||||
@ -154,7 +154,7 @@ typedef struct unw_state_record
|
||||
struct unw_reg_state curr; /* current state */
|
||||
|
||||
_Unwind_Personality_Fn personality;
|
||||
|
||||
|
||||
} _Unwind_FrameState;
|
||||
|
||||
enum unw_nat_type
|
||||
@ -558,7 +558,7 @@ finish_prologue (struct unw_state_record *sr)
|
||||
{
|
||||
off = sr->spill_offset;
|
||||
alloc_spill_area (&off, 16, sr->curr.reg + UNW_REG_F2,
|
||||
sr->curr.reg + UNW_REG_F31);
|
||||
sr->curr.reg + UNW_REG_F31);
|
||||
alloc_spill_area (&off, 8, sr->curr.reg + UNW_REG_B1,
|
||||
sr->curr.reg + UNW_REG_B5);
|
||||
alloc_spill_area (&off, 8, sr->curr.reg + UNW_REG_R4,
|
||||
@ -581,7 +581,7 @@ desc_prologue (int body, unw_word rlen, unsigned char mask,
|
||||
sr->first_region = 0;
|
||||
|
||||
/* Check if we're done. */
|
||||
if (sr->when_target < sr->region_start + sr->region_len)
|
||||
if (sr->when_target < sr->region_start + sr->region_len)
|
||||
{
|
||||
sr->done = 1;
|
||||
return;
|
||||
@ -858,7 +858,7 @@ desc_is_active (unsigned char qp, unw_word t, struct unw_state_record *sr)
|
||||
return 0;
|
||||
if (qp > 0)
|
||||
{
|
||||
if ((sr->pr_val & (1UL << qp)) == 0)
|
||||
if ((sr->pr_val & (1UL << qp)) == 0)
|
||||
return 0;
|
||||
sr->pr_mask |= (1UL << qp);
|
||||
}
|
||||
@ -988,7 +988,7 @@ desc_spill_sprel_p (unsigned char qp, unw_word t, unsigned char abreg,
|
||||
* macros/constants before including this file:
|
||||
*
|
||||
* Types:
|
||||
* unw_word Unsigned integer type with at least 64 bits
|
||||
* unw_word Unsigned integer type with at least 64 bits
|
||||
*
|
||||
* Register names:
|
||||
* UNW_REG_BSP
|
||||
@ -1821,7 +1821,7 @@ uw_frame_state_for (struct _Unwind_Context *context, _Unwind_FrameState *fs)
|
||||
designate "condition handlers" with very different arguments than what we
|
||||
would be providing. Such cases are typically identified from OS specific
|
||||
bits in the unwind information block header, and checked by the target
|
||||
MD_UNW_COMPATIBLE_PERSONALITY_P macro.
|
||||
MD_UNW_COMPATIBLE_PERSONALITY_P macro.
|
||||
|
||||
We just pretend there is no personality from our standpoint in such
|
||||
situations, and expect GCC not to set the identifying bits itself so that
|
||||
@ -1884,7 +1884,7 @@ skip_unwind_info:
|
||||
For other frames the procedure is by definition non-leaf so the pfs
|
||||
is saved and restored and thus effectively dead in the body; only
|
||||
the cfm need therefore be restored.
|
||||
|
||||
|
||||
Here we have 2 cases:
|
||||
- either the pfs is saved and restored and thus effectively dead
|
||||
like in regular frames; then we do nothing special and restore
|
||||
@ -2112,7 +2112,7 @@ uw_advance_context (struct _Unwind_Context *context, _Unwind_FrameState *fs)
|
||||
|
||||
/* Fill in CONTEXT for top-of-stack. The only valid registers at this
|
||||
level will be the return address and the CFA. Note that CFA = SP+16. */
|
||||
|
||||
|
||||
#define uw_init_context(CONTEXT) \
|
||||
do { \
|
||||
/* ??? There is a whole lot o code in uw_install_context that \
|
||||
@ -2199,7 +2199,7 @@ uw_install_context (struct _Unwind_Context *current __attribute__((unused)),
|
||||
}
|
||||
}
|
||||
|
||||
/* The value in uc_bsp that we've computed is that for the
|
||||
/* The value in uc_bsp that we've computed is that for the
|
||||
target function. The value that we install below will be
|
||||
adjusted by the BR.RET instruction based on the contents
|
||||
of AR.PFS. So we must unadjust that here. */
|
||||
@ -2418,7 +2418,7 @@ uw_install_context (struct _Unwind_Context *current __attribute__((unused)),
|
||||
";; \n\t"
|
||||
"mov.m ar.rsc = r29 \n\t"
|
||||
";; \n\t"
|
||||
/* This must be done before setting AR.BSPSTORE, otherwise
|
||||
/* This must be done before setting AR.BSPSTORE, otherwise
|
||||
AR.BSP will be initialized with a random displacement
|
||||
below the value we want, based on the current number of
|
||||
dirty stacked registers. */
|
||||
|
@ -41,7 +41,7 @@ struct unw_table_entry
|
||||
|
||||
/* Accessors to fields of an unwind info block header. In this common file to
|
||||
be visible from all the units involved in a target implementation. */
|
||||
|
||||
|
||||
#ifndef __USING_SJLJ_EXCEPTIONS__
|
||||
#define UNW_VER(x) ((x) >> 48)
|
||||
#define UNW_FLAG_MASK 0x0000ffff00000000
|
||||
|
@ -72,7 +72,7 @@ ia64_vms_fallback_frame_state (struct _Unwind_Context *context,
|
||||
|
||||
INVO_CONTEXT_BLK local_icb;
|
||||
INVO_CONTEXT_BLK *icb = &local_icb;
|
||||
|
||||
|
||||
CHFCTX * chfctx;
|
||||
CHF$MECH_ARRAY * chfmech;
|
||||
CHF64$SIGNAL_ARRAY *chfsig64;
|
||||
@ -90,7 +90,7 @@ ia64_vms_fallback_frame_state (struct _Unwind_Context *context,
|
||||
const uint try_bs_copy_mask = (1 << 16);
|
||||
|
||||
eh_debug = EH_DEBUG ? atoi (EH_DEBUG) : 0;
|
||||
|
||||
|
||||
/* Fetch and clear the try_bs_copy bit. */
|
||||
try_bs_copy = (uint)eh_debug & try_bs_copy_mask;
|
||||
eh_debug &= ~try_bs_copy_mask;
|
||||
@ -124,9 +124,9 @@ ia64_vms_fallback_frame_state (struct _Unwind_Context *context,
|
||||
|
||||
/* Beware: we might be unwinding through nested condition handlers, so the
|
||||
dispatcher frame we seek might not be the first one on the way up. Loop
|
||||
thus. */
|
||||
thus. */
|
||||
do {
|
||||
|
||||
|
||||
/* Seek the next dispatcher frame up the "current" point. Stop if we
|
||||
either get past the target context or hit the bottom-of-stack along
|
||||
the way. */
|
||||
@ -134,7 +134,7 @@ ia64_vms_fallback_frame_state (struct _Unwind_Context *context,
|
||||
FAIL_IF (status == 0);
|
||||
FAIL_IF ((uw_reg)icb->libicb$ih_sp > (uw_reg)context->psp
|
||||
|| DENOTES_BOTTOM_OF_STACK (icb));
|
||||
|
||||
|
||||
if (eh_debug)
|
||||
printf ("frame%s sp @ 0x%llx, pc @ 0x%llx bsp=0x%llx\n",
|
||||
DENOTES_VMS_DISPATCHER_FRAME (icb) ? " (dispatcher)" : "",
|
||||
@ -162,13 +162,13 @@ ia64_vms_fallback_frame_state (struct _Unwind_Context *context,
|
||||
|
||||
chfctx = icb->libicb$ph_chfctx_addr;
|
||||
FAIL_IF (chfctx == 0);
|
||||
|
||||
|
||||
chfmech = (CHF$MECH_ARRAY *)chfctx->chfctx$q_mcharglst;
|
||||
FAIL_IF (chfmech == 0);
|
||||
|
||||
chfsig64 = (CHF64$SIGNAL_ARRAY *)chfmech->chf$ph_mch_sig64_addr;
|
||||
FAIL_IF (chfsig64 == 0);
|
||||
|
||||
|
||||
intstk = (INTSTK *)chfmech->chf$q_mch_esf_addr;
|
||||
FAIL_IF (intstk == 0 || intstk->intstk$b_subtype == DYN$C_SSENTRY);
|
||||
|
||||
@ -222,7 +222,7 @@ ia64_vms_fallback_frame_state (struct _Unwind_Context *context,
|
||||
context->unat_loc = (uw_loc)&intstk->intstk$q_unat;
|
||||
|
||||
/* Branch register locations. */
|
||||
|
||||
|
||||
{
|
||||
uw_reg * ctxregs = (uw_reg *)&intstk->intstk$q_b0;
|
||||
|
||||
@ -241,7 +241,7 @@ ia64_vms_fallback_frame_state (struct _Unwind_Context *context,
|
||||
uw_reg q_bspstore = (uw_reg) intstk->intstk$q_bspstore;
|
||||
uw_reg q_bspbase = (uw_reg) intstk->intstk$q_bspbase;
|
||||
uw_reg ih_bspbase = (uw_reg) icb->libicb$ih_bspbase;
|
||||
|
||||
|
||||
if (eh_debug)
|
||||
printf ("q_bspstore = 0x%lx, q_bsp = 0x%lx, q_bspbase = 0x%lx\n"
|
||||
"ih_bspbase = 0x%lx\n",
|
||||
@ -263,7 +263,7 @@ ia64_vms_fallback_frame_state (struct _Unwind_Context *context,
|
||||
/* Not clear if these are the proper arguments here. This is what
|
||||
looked the closest to what is performed in the Linux case. */
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
context->bsp = (uw_reg)intstk->intstk$q_bsp;
|
||||
@ -274,7 +274,7 @@ ia64_vms_fallback_frame_state (struct _Unwind_Context *context,
|
||||
|
||||
/* We're directly setting up the "context" for a VMS exception handler.
|
||||
The "previous SP" for it is the SP upon the handler's entry, that is
|
||||
the SP at the condition/interruption/exception point. */
|
||||
the SP at the condition/interruption/exception point. */
|
||||
context->psp = (uw_reg)icb->libicb$ih_sp;
|
||||
|
||||
/* Previous Frame State location. What eventually ends up in pfs_loc is
|
||||
@ -305,4 +305,4 @@ ia64_vms_fallback_frame_state (struct _Unwind_Context *context,
|
||||
|
||||
return _URC_NO_REASON;
|
||||
}
|
||||
|
||||
|
||||
|
@ -23,7 +23,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
|
||||
#include "bid_conf.h"
|
||||
#include "bid_functions.h"
|
||||
#include "bid_gcc_intrinsics.h"
|
||||
#include "bid_gcc_intrinsics.h"
|
||||
|
||||
_Decimal128
|
||||
__bid_addtd3 (_Decimal128 x, _Decimal128 y) {
|
||||
|
@ -24,7 +24,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
#include "bid_conf.h"
|
||||
#include "bid_functions.h"
|
||||
#include "bid_gcc_intrinsics.h"
|
||||
|
||||
|
||||
_Decimal32
|
||||
__bid_truncddsd2 (_Decimal64 x) {
|
||||
union decimal32 res;
|
||||
|
@ -24,7 +24,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
#include "bid_conf.h"
|
||||
#include "bid_functions.h"
|
||||
#include "bid_gcc_intrinsics.h"
|
||||
|
||||
|
||||
_Decimal128
|
||||
__bid_extendddtd2 (_Decimal64 x) {
|
||||
union decimal128 res;
|
||||
|
@ -29,7 +29,7 @@ CMPtype
|
||||
__bid_eqdd2 (_Decimal64 x, _Decimal64 y) {
|
||||
CMPtype res;
|
||||
union decimal64 ux, uy;
|
||||
|
||||
|
||||
ux.d = x;
|
||||
uy.d = y;
|
||||
res = __bid64_quiet_equal (ux.i, uy.i);
|
||||
|
@ -29,7 +29,7 @@ CMPtype
|
||||
__bid_eqtd2 (_Decimal128 x, _Decimal128 y) {
|
||||
CMPtype res;
|
||||
union decimal128 ux, uy;
|
||||
|
||||
|
||||
ux.d = x;
|
||||
uy.d = y;
|
||||
res = __bid128_quiet_equal (ux.i, uy.i);
|
||||
|
@ -29,7 +29,7 @@ CMPtype
|
||||
__bid_gedd2 (_Decimal64 x, _Decimal64 y) {
|
||||
CMPtype res;
|
||||
union decimal64 ux, uy;
|
||||
|
||||
|
||||
ux.d = x;
|
||||
uy.d = y;
|
||||
res = __bid64_quiet_greater_equal (ux.i, uy.i);
|
||||
|
@ -30,7 +30,7 @@ __bid_gesd2 (_Decimal32 x, _Decimal32 y) {
|
||||
CMPtype res;
|
||||
UINT64 x64, y64;
|
||||
union decimal32 ux, uy;
|
||||
|
||||
|
||||
ux.d = x;
|
||||
uy.d = y;
|
||||
x64 = __bid32_to_bid64 (ux.i);
|
||||
|
@ -29,7 +29,7 @@ CMPtype
|
||||
__bid_getd2 (_Decimal128 x, _Decimal128 y) {
|
||||
CMPtype res;
|
||||
union decimal128 ux, uy;
|
||||
|
||||
|
||||
ux.d = x;
|
||||
uy.d = y;
|
||||
res = __bid128_quiet_greater_equal (ux.i, uy.i);
|
||||
|
@ -29,7 +29,7 @@ CMPtype
|
||||
__bid_gtdd2 (_Decimal64 x, _Decimal64 y) {
|
||||
CMPtype res;
|
||||
union decimal64 ux, uy;
|
||||
|
||||
|
||||
ux.d = x;
|
||||
uy.d = y;
|
||||
res = __bid64_quiet_greater (ux.i, uy.i);
|
||||
|
@ -30,7 +30,7 @@ __bid_gtsd2 (_Decimal32 x, _Decimal32 y) {
|
||||
CMPtype res;
|
||||
UINT64 x64, y64;
|
||||
union decimal32 ux, uy;
|
||||
|
||||
|
||||
ux.d = x;
|
||||
uy.d = y;
|
||||
x64 = __bid32_to_bid64 (ux.i);
|
||||
|
@ -29,7 +29,7 @@ CMPtype
|
||||
__bid_gttd2 (_Decimal128 x, _Decimal128 y) {
|
||||
CMPtype res;
|
||||
union decimal128 ux, uy;
|
||||
|
||||
|
||||
ux.d = x;
|
||||
uy.d = y;
|
||||
res = __bid128_quiet_greater (ux.i, uy.i);
|
||||
|
@ -29,7 +29,7 @@ CMPtype
|
||||
__bid_ledd2 (_Decimal64 x, _Decimal64 y) {
|
||||
CMPtype res;
|
||||
union decimal64 ux, uy;
|
||||
|
||||
|
||||
ux.d = x;
|
||||
uy.d = y;
|
||||
res = __bid64_quiet_less_equal (ux.i, uy.i);
|
||||
|
@ -30,7 +30,7 @@ __bid_lesd2 (_Decimal32 x, _Decimal32 y) {
|
||||
CMPtype res;
|
||||
UINT64 x64, y64;
|
||||
union decimal32 ux, uy;
|
||||
|
||||
|
||||
ux.d = x;
|
||||
uy.d = y;
|
||||
x64 = __bid32_to_bid64 (ux.i);
|
||||
|
@ -29,7 +29,7 @@ CMPtype
|
||||
__bid_letd2 (_Decimal128 x, _Decimal128 y) {
|
||||
CMPtype res;
|
||||
union decimal128 ux, uy;
|
||||
|
||||
|
||||
ux.d = x;
|
||||
uy.d = y;
|
||||
res = __bid128_quiet_less_equal (ux.i, uy.i);
|
||||
|
@ -29,7 +29,7 @@ CMPtype
|
||||
__bid_ltdd2 (_Decimal64 x, _Decimal64 y) {
|
||||
CMPtype res;
|
||||
union decimal64 ux, uy;
|
||||
|
||||
|
||||
ux.d = x;
|
||||
uy.d = y;
|
||||
res = -__bid64_quiet_less (ux.i, uy.i);
|
||||
|
@ -30,7 +30,7 @@ __bid_ltsd2 (_Decimal32 x, _Decimal32 y) {
|
||||
CMPtype res;
|
||||
UINT64 x64, y64;
|
||||
union decimal32 ux, uy;
|
||||
|
||||
|
||||
ux.d = x;
|
||||
uy.d = y;
|
||||
x64 = __bid32_to_bid64 (ux.i);
|
||||
|
@ -29,7 +29,7 @@ CMPtype
|
||||
__bid_lttd2 (_Decimal128 x, _Decimal128 y) {
|
||||
CMPtype res;
|
||||
union decimal128 ux, uy;
|
||||
|
||||
|
||||
ux.d = x;
|
||||
uy.d = y;
|
||||
res = -__bid128_quiet_less (ux.i, uy.i);
|
||||
|
@ -28,7 +28,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
_Decimal64
|
||||
__bid_muldd3 (_Decimal64 x, _Decimal64 y) {
|
||||
union decimal64 ux, uy, res;
|
||||
|
||||
|
||||
ux.d = x;
|
||||
uy.d = y;
|
||||
res.i = __bid64_mul (ux.i, uy.i);
|
||||
|
@ -29,7 +29,7 @@ _Decimal32
|
||||
__bid_mulsd3 (_Decimal32 x, _Decimal32 y) {
|
||||
UINT64 x64, y64, res64;
|
||||
union decimal32 ux, uy, res;
|
||||
|
||||
|
||||
ux.d = x;
|
||||
uy.d = y;
|
||||
x64 = __bid32_to_bid64 (ux.i);
|
||||
|
@ -29,7 +29,7 @@ CMPtype
|
||||
__bid_nedd2 (_Decimal64 x, _Decimal64 y) {
|
||||
CMPtype res;
|
||||
union decimal64 ux, uy;
|
||||
|
||||
|
||||
ux.d = x;
|
||||
uy.d = y;
|
||||
res = __bid64_quiet_not_equal (ux.i, uy.i);
|
||||
|
@ -30,7 +30,7 @@ __bid_nesd2 (_Decimal32 x, _Decimal32 y) {
|
||||
CMPtype res;
|
||||
UINT64 x64, y64;
|
||||
union decimal32 ux, uy;
|
||||
|
||||
|
||||
ux.d = x;
|
||||
uy.d = y;
|
||||
x64 = __bid32_to_bid64 (ux.i);
|
||||
|
@ -29,7 +29,7 @@ CMPtype
|
||||
__bid_netd2 (_Decimal128 x, _Decimal128 y) {
|
||||
CMPtype res;
|
||||
union decimal128 ux, uy;
|
||||
|
||||
|
||||
ux.d = x;
|
||||
uy.d = y;
|
||||
res = __bid128_quiet_not_equal (ux.i, uy.i);
|
||||
|
@ -24,7 +24,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
#include "bid_conf.h"
|
||||
#include "bid_functions.h"
|
||||
#include "bid_gcc_intrinsics.h"
|
||||
|
||||
|
||||
_Decimal64
|
||||
__bid_extendsddd2 (_Decimal32 x) {
|
||||
union decimal64 res;
|
||||
|
@ -24,7 +24,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
#include "bid_conf.h"
|
||||
#include "bid_functions.h"
|
||||
#include "bid_gcc_intrinsics.h"
|
||||
|
||||
|
||||
_Decimal128
|
||||
__bid_extendsdtd2 (_Decimal32 x) {
|
||||
union decimal128 res;
|
||||
|
@ -24,7 +24,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
#include "bid_conf.h"
|
||||
#include "bid_functions.h"
|
||||
#include "bid_gcc_intrinsics.h"
|
||||
|
||||
|
||||
_Decimal64
|
||||
__bid_trunctddd2 (_Decimal128 x) {
|
||||
union decimal128 ux;
|
||||
|
@ -24,7 +24,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
#include "bid_conf.h"
|
||||
#include "bid_functions.h"
|
||||
#include "bid_gcc_intrinsics.h"
|
||||
|
||||
|
||||
_Decimal32
|
||||
__bid_trunctdsd2 (_Decimal128 x) {
|
||||
union decimal128 ux;
|
||||
|
@ -29,7 +29,7 @@ CMPtype
|
||||
__bid_unorddd2 (_Decimal64 x, _Decimal64 y) {
|
||||
CMPtype res;
|
||||
union decimal64 ux, uy;
|
||||
|
||||
|
||||
ux.d = x;
|
||||
uy.d = y;
|
||||
res = __bid64_quiet_unordered (ux.i, uy.i);
|
||||
|
@ -30,7 +30,7 @@ __bid_unordsd2 (_Decimal32 x, _Decimal32 y) {
|
||||
CMPtype res;
|
||||
UINT64 x64, y64;
|
||||
union decimal32 ux, uy;
|
||||
|
||||
|
||||
ux.d = x;
|
||||
uy.d = y;
|
||||
x64 = __bid32_to_bid64 (ux.i);
|
||||
|
@ -29,7 +29,7 @@ CMPtype
|
||||
__bid_unordtd2 (_Decimal128 x, _Decimal128 y) {
|
||||
CMPtype res;
|
||||
union decimal128 ux, uy;
|
||||
|
||||
|
||||
ux.d = x;
|
||||
uy.d = y;
|
||||
res = __bid128_quiet_unordered (ux.i, uy.i);
|
||||
|
@ -23,7 +23,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
|
||||
#include "bid_internal.h"
|
||||
|
||||
// the first entry of nr_digits[i - 1] (where 1 <= i <= 113), indicates
|
||||
// the first entry of nr_digits[i - 1] (where 1 <= i <= 113), indicates
|
||||
// the number of decimal digits needed to represent a binary number with i bits;
|
||||
// however, if a binary number of i bits may require either k or k + 1 decimal
|
||||
// digits, then the first entry of nr_digits[i - 1] is 0; in this case if the
|
||||
@ -900,7 +900,7 @@ int shiftright128[] = {
|
||||
};
|
||||
|
||||
|
||||
// maskhigh128[] contains the mask to apply to the top 128 bits of the
|
||||
// maskhigh128[] contains the mask to apply to the top 128 bits of the
|
||||
// 128x128-bit product in order to obtain the high bits of f2*
|
||||
// the 64-bit word order is L, H
|
||||
UINT64 maskhigh128[] = {
|
||||
@ -941,7 +941,7 @@ UINT64 maskhigh128[] = {
|
||||
};
|
||||
|
||||
|
||||
// onehalf128[] contains the high bits of 1/2 positioned correctly for
|
||||
// onehalf128[] contains the high bits of 1/2 positioned correctly for
|
||||
// comparison with the high bits of f2*
|
||||
// the 64-bit word order is L, H
|
||||
UINT64 onehalf128[] = {
|
||||
@ -983,61 +983,61 @@ UINT64 onehalf128[] = {
|
||||
|
||||
UINT64 ten2mk64[] = {
|
||||
0x199999999999999aULL, // 10^(-1) * 2^ 64
|
||||
0x028f5c28f5c28f5dULL, // 10^(-2) * 2^ 64
|
||||
0x004189374bc6a7f0ULL, // 10^(-3) * 2^ 64
|
||||
0x00346dc5d638865aULL, // 10^(-4) * 2^ 67
|
||||
0x0029f16b11c6d1e2ULL, // 10^(-5) * 2^ 70
|
||||
0x00218def416bdb1bULL, // 10^(-6) * 2^ 73
|
||||
0x0035afe535795e91ULL, // 10^(-7) * 2^ 77
|
||||
0x002af31dc4611874ULL, // 10^(-8) * 2^ 80
|
||||
0x00225c17d04dad2aULL, // 10^(-9) * 2^ 83
|
||||
0x0036f9bfb3af7b76ULL, // 10^(-10) * 2^ 87
|
||||
0x002bfaffc2f2c92bULL, // 10^(-11) * 2^ 90
|
||||
0x00232f33025bd423ULL, // 10^(-12) * 2^ 93
|
||||
0x00384b84d092ed04ULL, // 10^(-13) * 2^ 97
|
||||
0x002d09370d425737ULL, // 10^(-14) * 2^100
|
||||
0x0024075f3dceac2cULL, // 10^(-15) * 2^103
|
||||
0x0039a5652fb11379ULL, // 10^(-16) * 2^107
|
||||
0x028f5c28f5c28f5dULL, // 10^(-2) * 2^ 64
|
||||
0x004189374bc6a7f0ULL, // 10^(-3) * 2^ 64
|
||||
0x00346dc5d638865aULL, // 10^(-4) * 2^ 67
|
||||
0x0029f16b11c6d1e2ULL, // 10^(-5) * 2^ 70
|
||||
0x00218def416bdb1bULL, // 10^(-6) * 2^ 73
|
||||
0x0035afe535795e91ULL, // 10^(-7) * 2^ 77
|
||||
0x002af31dc4611874ULL, // 10^(-8) * 2^ 80
|
||||
0x00225c17d04dad2aULL, // 10^(-9) * 2^ 83
|
||||
0x0036f9bfb3af7b76ULL, // 10^(-10) * 2^ 87
|
||||
0x002bfaffc2f2c92bULL, // 10^(-11) * 2^ 90
|
||||
0x00232f33025bd423ULL, // 10^(-12) * 2^ 93
|
||||
0x00384b84d092ed04ULL, // 10^(-13) * 2^ 97
|
||||
0x002d09370d425737ULL, // 10^(-14) * 2^100
|
||||
0x0024075f3dceac2cULL, // 10^(-15) * 2^103
|
||||
0x0039a5652fb11379ULL, // 10^(-16) * 2^107
|
||||
};
|
||||
|
||||
// ten2mk128trunc[] contains T*, the top Ex >= 128 bits of 10^(-k),
|
||||
// for 1 <= k <= 34
|
||||
// ten2mk128trunc[] contains T*, the top Ex >= 128 bits of 10^(-k),
|
||||
// for 1 <= k <= 34
|
||||
// the 64-bit word order is L, H
|
||||
UINT128 ten2mk128trunc[] = {
|
||||
{{0x9999999999999999ULL, 0x1999999999999999ULL}}, // 10^(-1) * 2^128
|
||||
{{0x28f5c28f5c28f5c2ULL, 0x028f5c28f5c28f5cULL}}, // 10^(-2) * 2^128
|
||||
{{0x9db22d0e56041893ULL, 0x004189374bc6a7efULL}}, // 10^(-3) * 2^128
|
||||
{{0x4af4f0d844d013a9ULL, 0x00346dc5d6388659ULL}}, // 10^(-4) * 2^131
|
||||
{{0x08c3f3e0370cdc87ULL, 0x0029f16b11c6d1e1ULL}}, // 10^(-5) * 2^134
|
||||
{{0x6d698fe69270b06cULL, 0x00218def416bdb1aULL}}, // 10^(-6) * 2^137
|
||||
{{0xaf0f4ca41d811a46ULL, 0x0035afe535795e90ULL}}, // 10^(-7) * 2^141
|
||||
{{0xbf3f70834acdae9fULL, 0x002af31dc4611873ULL}}, // 10^(-8) * 2^144
|
||||
{{0x65cc5a02a23e254cULL, 0x00225c17d04dad29ULL}}, // 10^(-9) * 2^147
|
||||
{{0x6fad5cd10396a213ULL, 0x0036f9bfb3af7b75ULL}}, // 10^(-10) * 2^151
|
||||
{{0xbfbde3da69454e75ULL, 0x002bfaffc2f2c92aULL}}, // 10^(-11) * 2^154
|
||||
{{0x32fe4fe1edd10b91ULL, 0x00232f33025bd422ULL}}, // 10^(-12) * 2^157
|
||||
{{0x84ca19697c81ac1bULL, 0x00384b84d092ed03ULL}}, // 10^(-13) * 2^161
|
||||
{{0x03d4e1213067bce3ULL, 0x002d09370d425736ULL}}, // 10^(-14) * 2^164
|
||||
{{0x3643e74dc052fd82ULL, 0x0024075f3dceac2bULL}}, // 10^(-15) * 2^167
|
||||
{{0x56d30baf9a1e626aULL, 0x0039a5652fb11378ULL}}, // 10^(-16) * 2^171
|
||||
{{0x12426fbfae7eb521ULL, 0x002e1dea8c8da92dULL}}, // 10^(-17) * 2^174
|
||||
{{0x41cebfcc8b9890e7ULL, 0x0024e4bba3a48757ULL}}, // 10^(-18) * 2^177
|
||||
{{0x694acc7a78f41b0cULL, 0x003b07929f6da558ULL}}, // 10^(-19) * 2^181
|
||||
{{0xbaa23d2ec729af3dULL, 0x002f394219248446ULL}}, // 10^(-20) * 2^184
|
||||
{{0xfbb4fdbf05baf297ULL, 0x0025c768141d369eULL}}, // 10^(-21) * 2^187
|
||||
{{0x2c54c931a2c4b758ULL, 0x003c7240202ebdcbULL}}, // 10^(-22) * 2^191
|
||||
{{0x89dd6dc14f03c5e0ULL, 0x00305b66802564a2ULL}}, // 10^(-23) * 2^194
|
||||
{{0xd4b1249aa59c9e4dULL, 0x0026af8533511d4eULL}}, // 10^(-24) * 2^197
|
||||
{{0x544ea0f76f60fd48ULL, 0x003de5a1ebb4fbb1ULL}}, // 10^(-25) * 2^201
|
||||
{{0x76a54d92bf80caa0ULL, 0x00318481895d9627ULL}}, // 10^(-26) * 2^204
|
||||
{{0x921dd7a89933d54dULL, 0x00279d346de4781fULL}}, // 10^(-27) * 2^207
|
||||
{{0x8362f2a75b862214ULL, 0x003f61ed7ca0c032ULL}}, // 10^(-28) * 2^211
|
||||
{{0xcf825bb91604e810ULL, 0x0032b4bdfd4d668eULL}}, // 10^(-29) * 2^214
|
||||
{{0x0c684960de6a5340ULL, 0x00289097fdd7853fULL}}, // 10^(-30) * 2^217
|
||||
{{0x3d203ab3e521dc33ULL, 0x002073accb12d0ffULL}}, // 10^(-31) * 2^220
|
||||
{{0x2e99f7863b696052ULL, 0x0033ec47ab514e65ULL}}, // 10^(-32) * 2^224
|
||||
{{0x587b2c6b62bab375ULL, 0x002989d2ef743eb7ULL}}, // 10^(-33) * 2^227
|
||||
{{0xad2f56bc4efbc2c4ULL, 0x00213b0f25f69892ULL}}, // 10^(-34) * 2^230
|
||||
{{0x28f5c28f5c28f5c2ULL, 0x028f5c28f5c28f5cULL}}, // 10^(-2) * 2^128
|
||||
{{0x9db22d0e56041893ULL, 0x004189374bc6a7efULL}}, // 10^(-3) * 2^128
|
||||
{{0x4af4f0d844d013a9ULL, 0x00346dc5d6388659ULL}}, // 10^(-4) * 2^131
|
||||
{{0x08c3f3e0370cdc87ULL, 0x0029f16b11c6d1e1ULL}}, // 10^(-5) * 2^134
|
||||
{{0x6d698fe69270b06cULL, 0x00218def416bdb1aULL}}, // 10^(-6) * 2^137
|
||||
{{0xaf0f4ca41d811a46ULL, 0x0035afe535795e90ULL}}, // 10^(-7) * 2^141
|
||||
{{0xbf3f70834acdae9fULL, 0x002af31dc4611873ULL}}, // 10^(-8) * 2^144
|
||||
{{0x65cc5a02a23e254cULL, 0x00225c17d04dad29ULL}}, // 10^(-9) * 2^147
|
||||
{{0x6fad5cd10396a213ULL, 0x0036f9bfb3af7b75ULL}}, // 10^(-10) * 2^151
|
||||
{{0xbfbde3da69454e75ULL, 0x002bfaffc2f2c92aULL}}, // 10^(-11) * 2^154
|
||||
{{0x32fe4fe1edd10b91ULL, 0x00232f33025bd422ULL}}, // 10^(-12) * 2^157
|
||||
{{0x84ca19697c81ac1bULL, 0x00384b84d092ed03ULL}}, // 10^(-13) * 2^161
|
||||
{{0x03d4e1213067bce3ULL, 0x002d09370d425736ULL}}, // 10^(-14) * 2^164
|
||||
{{0x3643e74dc052fd82ULL, 0x0024075f3dceac2bULL}}, // 10^(-15) * 2^167
|
||||
{{0x56d30baf9a1e626aULL, 0x0039a5652fb11378ULL}}, // 10^(-16) * 2^171
|
||||
{{0x12426fbfae7eb521ULL, 0x002e1dea8c8da92dULL}}, // 10^(-17) * 2^174
|
||||
{{0x41cebfcc8b9890e7ULL, 0x0024e4bba3a48757ULL}}, // 10^(-18) * 2^177
|
||||
{{0x694acc7a78f41b0cULL, 0x003b07929f6da558ULL}}, // 10^(-19) * 2^181
|
||||
{{0xbaa23d2ec729af3dULL, 0x002f394219248446ULL}}, // 10^(-20) * 2^184
|
||||
{{0xfbb4fdbf05baf297ULL, 0x0025c768141d369eULL}}, // 10^(-21) * 2^187
|
||||
{{0x2c54c931a2c4b758ULL, 0x003c7240202ebdcbULL}}, // 10^(-22) * 2^191
|
||||
{{0x89dd6dc14f03c5e0ULL, 0x00305b66802564a2ULL}}, // 10^(-23) * 2^194
|
||||
{{0xd4b1249aa59c9e4dULL, 0x0026af8533511d4eULL}}, // 10^(-24) * 2^197
|
||||
{{0x544ea0f76f60fd48ULL, 0x003de5a1ebb4fbb1ULL}}, // 10^(-25) * 2^201
|
||||
{{0x76a54d92bf80caa0ULL, 0x00318481895d9627ULL}}, // 10^(-26) * 2^204
|
||||
{{0x921dd7a89933d54dULL, 0x00279d346de4781fULL}}, // 10^(-27) * 2^207
|
||||
{{0x8362f2a75b862214ULL, 0x003f61ed7ca0c032ULL}}, // 10^(-28) * 2^211
|
||||
{{0xcf825bb91604e810ULL, 0x0032b4bdfd4d668eULL}}, // 10^(-29) * 2^214
|
||||
{{0x0c684960de6a5340ULL, 0x00289097fdd7853fULL}}, // 10^(-30) * 2^217
|
||||
{{0x3d203ab3e521dc33ULL, 0x002073accb12d0ffULL}}, // 10^(-31) * 2^220
|
||||
{{0x2e99f7863b696052ULL, 0x0033ec47ab514e65ULL}}, // 10^(-32) * 2^224
|
||||
{{0x587b2c6b62bab375ULL, 0x002989d2ef743eb7ULL}}, // 10^(-33) * 2^227
|
||||
{{0xad2f56bc4efbc2c4ULL, 0x00213b0f25f69892ULL}}, // 10^(-34) * 2^230
|
||||
};
|
||||
|
||||
// ten2mk128M[k - 1] = 10^(-k) * 2^exp (k), where 1 <= k <= 4 and
|
||||
@ -1214,7 +1214,7 @@ UINT192 ten2mk192truncM[] = {
|
||||
};
|
||||
|
||||
// shiftright192M[] contains the right shift count to obtain C2* from the top
|
||||
// 192 bits of the 192x192-bit product C2 * Kx if 0 <= ind <= 14 where ind is
|
||||
// 192 bits of the 192x192-bit product C2 * Kx if 0 <= ind <= 14 where ind is
|
||||
// the index in the table, or from the top 128 bits if 15 <= ind <= 18
|
||||
int shiftright192M[] = {
|
||||
16, // 208 - 192
|
||||
@ -1345,7 +1345,7 @@ UINT256 ten2mk256truncM[] = { // the 64-bit word order is LL, LH, HL, HH
|
||||
};
|
||||
|
||||
// shiftright256M[] contains the right shift count to obtain C2* from the top
|
||||
// 192 bits of the 256x256-bit product C2 * Kx
|
||||
// 192 bits of the 256x256-bit product C2 * Kx
|
||||
int shiftright256M[] = {
|
||||
15, // 335 - 320
|
||||
19, // 339 - 320
|
||||
@ -1376,7 +1376,7 @@ UINT64 maskhigh256M[] = {
|
||||
0x0000ffffffffffffULL // 48 = 368 - 320 bits
|
||||
};
|
||||
|
||||
// onehalf256M[] contains 1/2 positioned correctly for comparison with the
|
||||
// onehalf256M[] contains 1/2 positioned correctly for comparison with the
|
||||
// high bits of f*; the high 128 bits of the 512-bit mask are 0
|
||||
UINT64 onehalf256M[] = {
|
||||
0x0000000000004000ULL, // 15 = 335 - 320 bits
|
||||
@ -3495,303 +3495,303 @@ UINT192 ten2mxtrunc192[] = {
|
||||
UINT256 Kx256[] = {
|
||||
{{0xcccccccccccccccdULL, 0xccccccccccccccccULL,
|
||||
0xccccccccccccccccULL, 0xccccccccccccccccULL}},
|
||||
// 10^-1 ~= cccccccccccccccc cccccccccccccccc
|
||||
// 10^-1 ~= cccccccccccccccc cccccccccccccccc
|
||||
// cccccccccccccccccccccccccccccccd * 2^-259
|
||||
{{0x70a3d70a3d70a3d8ULL, 0xd70a3d70a3d70a3dULL,
|
||||
0x3d70a3d70a3d70a3ULL, 0xa3d70a3d70a3d70aULL}},
|
||||
// 10^-2 ~= a3d70a3d70a3d70a 3d70a3d70a3d70a3
|
||||
// 10^-2 ~= a3d70a3d70a3d70a 3d70a3d70a3d70a3
|
||||
// d70a3d70a3d70a3d70a3d70a3d70a3d8 * 2^-262
|
||||
{{0xc083126e978d4fe0ULL, 0x78d4fdf3b645a1caULL,
|
||||
0x645a1cac083126e9ULL, 0x83126e978d4fdf3bULL}},
|
||||
// 10^-3 ~= 83126e978d4fdf3b 645a1cac083126e9
|
||||
// 10^-3 ~= 83126e978d4fdf3b 645a1cac083126e9
|
||||
// 78d4fdf3b645a1cac083126e978d4fe0 * 2^-265
|
||||
{{0x67381d7dbf487fccULL, 0xc154c985f06f6944ULL,
|
||||
0xd3c36113404ea4a8ULL, 0xd1b71758e219652bULL}},
|
||||
// 10^-4 ~= d1b71758e219652b d3c36113404ea4a8
|
||||
// 10^-4 ~= d1b71758e219652b d3c36113404ea4a8
|
||||
// c154c985f06f694467381d7dbf487fcc * 2^-269
|
||||
{{0x85c67dfe32a0663dULL, 0xcddd6e04c0592103ULL,
|
||||
0x0fcf80dc33721d53ULL, 0xa7c5ac471b478423ULL}},
|
||||
// 10^-5 ~= a7c5ac471b478423 fcf80dc33721d53
|
||||
// 10^-5 ~= a7c5ac471b478423 fcf80dc33721d53
|
||||
// cddd6e04c059210385c67dfe32a0663d * 2^-272
|
||||
{{0x37d1fe64f54d1e97ULL, 0xd7e45803cd141a69ULL,
|
||||
0xa63f9a49c2c1b10fULL, 0x8637bd05af6c69b5ULL}},
|
||||
// 10^-6 ~= 8637bd05af6c69b5 a63f9a49c2c1b10f
|
||||
// 10^-6 ~= 8637bd05af6c69b5 a63f9a49c2c1b10f
|
||||
// d7e45803cd141a6937d1fe64f54d1e97 * 2^-275
|
||||
{{0x8c8330a1887b6425ULL, 0x8ca08cd2e1b9c3dbULL,
|
||||
0x3d32907604691b4cULL, 0xd6bf94d5e57a42bcULL}},
|
||||
// 10^-7 ~= d6bf94d5e57a42bc 3d32907604691b4c
|
||||
// 10^-7 ~= d6bf94d5e57a42bc 3d32907604691b4c
|
||||
// 8ca08cd2e1b9c3db8c8330a1887b6425 * 2^-279
|
||||
{{0x7068f3b46d2f8351ULL, 0x3d4d3d758161697cULL,
|
||||
0xfdc20d2b36ba7c3dULL, 0xabcc77118461cefcULL}},
|
||||
// 10^-8 ~= abcc77118461cefc fdc20d2b36ba7c3d
|
||||
// 10^-8 ~= abcc77118461cefc fdc20d2b36ba7c3d
|
||||
// 3d4d3d758161697c7068f3b46d2f8351 * 2^-282
|
||||
{{0xf387295d242602a7ULL, 0xfdd7645e011abac9ULL,
|
||||
0x31680a88f8953030ULL, 0x89705f4136b4a597ULL}},
|
||||
// 10^-9 ~= 89705f4136b4a597 31680a88f8953030
|
||||
// 10^-9 ~= 89705f4136b4a597 31680a88f8953030
|
||||
// fdd7645e011abac9f387295d242602a7 * 2^-285
|
||||
{{0xb8d8422ea03cd10bULL, 0x2fbf06fcce912adcULL,
|
||||
0xb573440e5a884d1bULL, 0xdbe6fecebdedd5beULL}},
|
||||
// 10^-10 ~= dbe6fecebdedd5be b573440e5a884d1b
|
||||
// 10^-10 ~= dbe6fecebdedd5be b573440e5a884d1b
|
||||
// 2fbf06fcce912adcb8d8422ea03cd10b * 2^-289
|
||||
{{0x93e034f219ca40d6ULL, 0xf2ff38ca3eda88b0ULL,
|
||||
0xf78f69a51539d748ULL, 0xafebff0bcb24aafeULL}},
|
||||
// 10^-11 ~= afebff0bcb24aafe f78f69a51539d748
|
||||
// 10^-11 ~= afebff0bcb24aafe f78f69a51539d748
|
||||
// f2ff38ca3eda88b093e034f219ca40d6 * 2^-292
|
||||
{{0x4319c3f4e16e9a45ULL, 0xf598fa3b657ba08dULL,
|
||||
0xf93f87b7442e45d3ULL, 0x8cbccc096f5088cbULL}},
|
||||
// 10^-12 ~= 8cbccc096f5088cb f93f87b7442e45d3
|
||||
// 10^-12 ~= 8cbccc096f5088cb f93f87b7442e45d3
|
||||
// f598fa3b657ba08d4319c3f4e16e9a45 * 2^-295
|
||||
{{0x04f606549be42a07ULL, 0x88f4c3923bf900e2ULL,
|
||||
0x2865a5f206b06fb9ULL, 0xe12e13424bb40e13ULL}},
|
||||
// 10^-13 ~= e12e13424bb40e13 2865a5f206b06fb9
|
||||
// 10^-13 ~= e12e13424bb40e13 2865a5f206b06fb9
|
||||
// 88f4c3923bf900e204f606549be42a07 * 2^-299
|
||||
{{0x03f805107cb68806ULL, 0x6d909c74fcc733e8ULL,
|
||||
0x538484c19ef38c94ULL, 0xb424dc35095cd80fULL}},
|
||||
// 10^-14 ~= b424dc35095cd80f 538484c19ef38c94
|
||||
// 10^-14 ~= b424dc35095cd80f 538484c19ef38c94
|
||||
// 6d909c74fcc733e803f805107cb68806 * 2^-302
|
||||
{{0x3660040d3092066bULL, 0x57a6e390ca38f653ULL,
|
||||
0x0f9d37014bf60a10ULL, 0x901d7cf73ab0acd9ULL}},
|
||||
// 10^-15 ~= 901d7cf73ab0acd9 f9d37014bf60a10
|
||||
// 10^-15 ~= 901d7cf73ab0acd9 f9d37014bf60a10
|
||||
// 57a6e390ca38f6533660040d3092066b * 2^-305
|
||||
{{0x23ccd3484db670abULL, 0xbf716c1add27f085ULL,
|
||||
0x4c2ebe687989a9b3ULL, 0xe69594bec44de15bULL}},
|
||||
// 10^-16 ~= e69594bec44de15b 4c2ebe687989a9b3
|
||||
// 10^-16 ~= e69594bec44de15b 4c2ebe687989a9b3
|
||||
// bf716c1add27f08523ccd3484db670ab * 2^-309
|
||||
{{0x4fd70f6d0af85a23ULL, 0xff8df0157db98d37ULL,
|
||||
0x09befeb9fad487c2ULL, 0xb877aa3236a4b449ULL}},
|
||||
// 10^-17 ~= b877aa3236a4b449 9befeb9fad487c2
|
||||
// 10^-17 ~= b877aa3236a4b449 9befeb9fad487c2
|
||||
// ff8df0157db98d374fd70f6d0af85a23 * 2^-312
|
||||
{{0x0cac0c573bf9e1b6ULL, 0x32d7f344649470f9ULL,
|
||||
0x3aff322e62439fcfULL, 0x9392ee8e921d5d07ULL}},
|
||||
// 10^-18 ~= 9392ee8e921d5d07 3aff322e62439fcf
|
||||
// 10^-18 ~= 9392ee8e921d5d07 3aff322e62439fcf
|
||||
// 32d7f344649470f90cac0c573bf9e1b6 * 2^-315
|
||||
{{0xe11346f1f98fcf89ULL, 0x1e2652070753e7f4ULL,
|
||||
0x2b31e9e3d06c32e5ULL, 0xec1e4a7db69561a5ULL}},
|
||||
// 10^-19 ~= ec1e4a7db69561a5 2b31e9e3d06c32e5
|
||||
// 10^-19 ~= ec1e4a7db69561a5 2b31e9e3d06c32e5
|
||||
// 1e2652070753e7f4e11346f1f98fcf89 * 2^-319
|
||||
{{0x4da9058e613fd93aULL, 0x181ea8059f76532aULL,
|
||||
0x88f4bb1ca6bcf584ULL, 0xbce5086492111aeaULL}},
|
||||
// 10^-20 ~= bce5086492111aea 88f4bb1ca6bcf584
|
||||
// 10^-20 ~= bce5086492111aea 88f4bb1ca6bcf584
|
||||
// 181ea8059f76532a4da9058e613fd93a * 2^-322
|
||||
{{0xa48737a51a997a95ULL, 0x467eecd14c5ea8eeULL,
|
||||
0xd3f6fc16ebca5e03ULL, 0x971da05074da7beeULL}},
|
||||
// 10^-21 ~= 971da05074da7bee d3f6fc16ebca5e03
|
||||
// 10^-21 ~= 971da05074da7bee d3f6fc16ebca5e03
|
||||
// 467eecd14c5ea8eea48737a51a997a95 * 2^-325
|
||||
{{0x3a71f2a1c428c421ULL, 0x70cb148213caa7e4ULL,
|
||||
0x5324c68b12dd6338ULL, 0xf1c90080baf72cb1ULL}},
|
||||
// 10^-22 ~= f1c90080baf72cb1 5324c68b12dd6338
|
||||
// 10^-22 ~= f1c90080baf72cb1 5324c68b12dd6338
|
||||
// 70cb148213caa7e43a71f2a1c428c421 * 2^-329
|
||||
{{0x2ec18ee7d0209ce8ULL, 0x8d6f439b43088650ULL,
|
||||
0x75b7053c0f178293ULL, 0xc16d9a0095928a27ULL}},
|
||||
// 10^-23 ~= c16d9a0095928a27 75b7053c0f178293
|
||||
// 10^-23 ~= c16d9a0095928a27 75b7053c0f178293
|
||||
// 8d6f439b430886502ec18ee7d0209ce8 * 2^-332
|
||||
{{0xf23472530ce6e3edULL, 0xd78c3615cf3a050cULL,
|
||||
0xc4926a9672793542ULL, 0x9abe14cd44753b52ULL}},
|
||||
// 10^-24 ~= 9abe14cd44753b52 c4926a9672793542
|
||||
// 10^-24 ~= 9abe14cd44753b52 c4926a9672793542
|
||||
// d78c3615cf3a050cf23472530ce6e3ed * 2^-335
|
||||
{{0xe9ed83b814a49fe1ULL, 0x8c1389bc7ec33b47ULL,
|
||||
0x3a83ddbd83f52204ULL, 0xf79687aed3eec551ULL}},
|
||||
// 10^-25 ~= f79687aed3eec551 3a83ddbd83f52204
|
||||
// 10^-25 ~= f79687aed3eec551 3a83ddbd83f52204
|
||||
// 8c1389bc7ec33b47e9ed83b814a49fe1 * 2^-339
|
||||
{{0x87f1362cdd507fe7ULL, 0x3cdc6e306568fc39ULL,
|
||||
0x95364afe032a819dULL, 0xc612062576589ddaULL}},
|
||||
// 10^-26 ~= c612062576589dda 95364afe032a819d
|
||||
// 10^-26 ~= c612062576589dda 95364afe032a819d
|
||||
// 3cdc6e306568fc3987f1362cdd507fe7 * 2^-342
|
||||
{{0x9ff42b5717739986ULL, 0xca49f1c05120c9c7ULL,
|
||||
0x775ea264cf55347dULL, 0x9e74d1b791e07e48ULL}},
|
||||
// 10^-27 ~= 9e74d1b791e07e48 775ea264cf55347d
|
||||
// 10^-27 ~= 9e74d1b791e07e48 775ea264cf55347d
|
||||
// ca49f1c05120c9c79ff42b5717739986 * 2^-345
|
||||
{{0xccb9def1bf1f5c09ULL, 0x76dcb60081ce0fa5ULL,
|
||||
0x8bca9d6e188853fcULL, 0xfd87b5f28300ca0dULL}},
|
||||
// 10^-28 ~= fd87b5f28300ca0d 8bca9d6e188853fc
|
||||
// 10^-28 ~= fd87b5f28300ca0d 8bca9d6e188853fc
|
||||
// 76dcb60081ce0fa5ccb9def1bf1f5c09 * 2^-349
|
||||
{{0xa3c7e58e327f7cd4ULL, 0x5f16f80067d80c84ULL,
|
||||
0x096ee45813a04330ULL, 0xcad2f7f5359a3b3eULL}},
|
||||
// 10^-29 ~= cad2f7f5359a3b3e 96ee45813a04330
|
||||
// 10^-29 ~= cad2f7f5359a3b3e 96ee45813a04330
|
||||
// 5f16f80067d80c84a3c7e58e327f7cd4 * 2^-352
|
||||
{{0xb6398471c1ff9710ULL, 0x18df2ccd1fe00a03ULL,
|
||||
0xa1258379a94d028dULL, 0xa2425ff75e14fc31ULL}},
|
||||
// 10^-30 ~= a2425ff75e14fc31 a1258379a94d028d
|
||||
// 10^-30 ~= a2425ff75e14fc31 a1258379a94d028d
|
||||
// 18df2ccd1fe00a03b6398471c1ff9710 * 2^-355
|
||||
{{0xf82e038e34cc78daULL, 0x4718f0a419800802ULL,
|
||||
0x80eacf948770ced7ULL, 0x81ceb32c4b43fcf4ULL}},
|
||||
// 10^-31 ~= 81ceb32c4b43fcf4 80eacf948770ced7
|
||||
// 10^-31 ~= 81ceb32c4b43fcf4 80eacf948770ced7
|
||||
// 4718f0a419800802f82e038e34cc78da * 2^-358
|
||||
{{0x59e338e387ad8e29ULL, 0x0b5b1aa028ccd99eULL,
|
||||
0x67de18eda5814af2ULL, 0xcfb11ead453994baULL}},
|
||||
// 10^-32 ~= cfb11ead453994ba 67de18eda5814af2
|
||||
// 10^-32 ~= cfb11ead453994ba 67de18eda5814af2
|
||||
// b5b1aa028ccd99e59e338e387ad8e29 * 2^-362
|
||||
{{0x47e8fa4f9fbe0b54ULL, 0x6f7c154ced70ae18ULL,
|
||||
0xecb1ad8aeacdd58eULL, 0xa6274bbdd0fadd61ULL}},
|
||||
// 10^-33 ~= a6274bbdd0fadd61 ecb1ad8aeacdd58e
|
||||
// 10^-33 ~= a6274bbdd0fadd61 ecb1ad8aeacdd58e
|
||||
// 6f7c154ced70ae1847e8fa4f9fbe0b54 * 2^-365
|
||||
{{0xd320c83fb2fe6f76ULL, 0xbf967770bdf3be79ULL,
|
||||
0xbd5af13bef0b113eULL, 0x84ec3c97da624ab4ULL}},
|
||||
// 10^-34 ~= 84ec3c97da624ab4 bd5af13bef0b113e
|
||||
// 10^-34 ~= 84ec3c97da624ab4 bd5af13bef0b113e
|
||||
// bf967770bdf3be79d320c83fb2fe6f76 * 2^-368
|
||||
{{0x85014065eb30b257ULL, 0x65bd8be79652ca5cULL,
|
||||
0x955e4ec64b44e864ULL, 0xd4ad2dbfc3d07787ULL}},
|
||||
// 10^-35 ~= d4ad2dbfc3d07787 955e4ec64b44e864
|
||||
// 10^-35 ~= d4ad2dbfc3d07787 955e4ec64b44e864
|
||||
// 65bd8be79652ca5c85014065eb30b257 * 2^-372
|
||||
{{0xd0cdcd1e55c08eacULL, 0xeafe098611dbd516ULL,
|
||||
0xdde50bd1d5d0b9e9ULL, 0xaa242499697392d2ULL}},
|
||||
// 10^-36 ~= aa242499697392d2 dde50bd1d5d0b9e9
|
||||
// 10^-36 ~= aa242499697392d2 dde50bd1d5d0b9e9
|
||||
// eafe098611dbd516d0cdcd1e55c08eac * 2^-375
|
||||
{{0x40a4a418449a0bbdULL, 0xbbfe6e04db164412ULL,
|
||||
0x7e50d64177da2e54ULL, 0x881cea14545c7575ULL}},
|
||||
// 10^-37 ~= 881cea14545c7575 7e50d64177da2e54
|
||||
// 10^-37 ~= 881cea14545c7575 7e50d64177da2e54
|
||||
// bbfe6e04db16441240a4a418449a0bbd * 2^-378
|
||||
{{0x9aa1068d3a9012c8ULL, 0x2cca49a15e8a0683ULL,
|
||||
0x96e7bd358c904a21ULL, 0xd9c7dced53c72255ULL}},
|
||||
// 10^-38 ~= d9c7dced53c72255 96e7bd358c904a21
|
||||
// 10^-38 ~= d9c7dced53c72255 96e7bd358c904a21
|
||||
// 2cca49a15e8a06839aa1068d3a9012c8 * 2^-382
|
||||
{{0x154d9ed7620cdbd3ULL, 0x8a3b6e1ab2080536ULL,
|
||||
0xabec975e0a0d081aULL, 0xae397d8aa96c1b77ULL}},
|
||||
// 10^-39 ~= ae397d8aa96c1b77 abec975e0a0d081a
|
||||
// 10^-39 ~= ae397d8aa96c1b77 abec975e0a0d081a
|
||||
// 8a3b6e1ab2080536154d9ed7620cdbd3 * 2^-385
|
||||
{{0x443e18ac4e70afdcULL, 0x3b62be7bc1a0042bULL,
|
||||
0x2323ac4b3b3da015ULL, 0x8b61313bbabce2c6ULL}},
|
||||
// 10^-40 ~= 8b61313bbabce2c6 2323ac4b3b3da015
|
||||
// 10^-40 ~= 8b61313bbabce2c6 2323ac4b3b3da015
|
||||
// 3b62be7bc1a0042b443e18ac4e70afdc * 2^-388
|
||||
{{0x6d30277a171ab2f9ULL, 0x5f0463f935ccd378ULL,
|
||||
0x6b6c46dec52f6688ULL, 0xdf01e85f912e37a3ULL}},
|
||||
// 10^-41 ~= df01e85f912e37a3 6b6c46dec52f6688
|
||||
// 10^-41 ~= df01e85f912e37a3 6b6c46dec52f6688
|
||||
// 5f0463f935ccd3786d30277a171ab2f9 * 2^-392
|
||||
{{0x8a8cec61ac155bfbULL, 0x7f36b660f7d70f93ULL,
|
||||
0x55f038b237591ed3ULL, 0xb267ed1940f1c61cULL}},
|
||||
// 10^-42 ~= b267ed1940f1c61c 55f038b237591ed3
|
||||
// 10^-42 ~= b267ed1940f1c61c 55f038b237591ed3
|
||||
// 7f36b660f7d70f938a8cec61ac155bfb * 2^-395
|
||||
{{0x3ba3f04e23444996ULL, 0xcc2bc51a5fdf3fa9ULL,
|
||||
0x77f3608e92adb242ULL, 0x8eb98a7a9a5b04e3ULL}},
|
||||
// 10^-43 ~= 8eb98a7a9a5b04e3 77f3608e92adb242
|
||||
// 10^-43 ~= 8eb98a7a9a5b04e3 77f3608e92adb242
|
||||
// cc2bc51a5fdf3fa93ba3f04e23444996 * 2^-398
|
||||
{{0xf9064d49d206dc22ULL, 0xe046082a32fecc41ULL,
|
||||
0x8cb89a7db77c506aULL, 0xe45c10c42a2b3b05ULL}},
|
||||
// 10^-44 ~= e45c10c42a2b3b05 8cb89a7db77c506a
|
||||
// 10^-44 ~= e45c10c42a2b3b05 8cb89a7db77c506a
|
||||
// e046082a32fecc41f9064d49d206dc22 * 2^-402
|
||||
{{0xfa6b7107db38b01bULL, 0x4d04d354f598a367ULL,
|
||||
0x3d607b97c5fd0d22ULL, 0xb6b00d69bb55c8d1ULL}},
|
||||
// 10^-45 ~= b6b00d69bb55c8d1 3d607b97c5fd0d22
|
||||
// 10^-45 ~= b6b00d69bb55c8d1 3d607b97c5fd0d22
|
||||
// 4d04d354f598a367fa6b7107db38b01b * 2^-405
|
||||
{{0xfb8927397c2d59b0ULL, 0x3d9d75dd9146e91fULL,
|
||||
0xcab3961304ca70e8ULL, 0x9226712162ab070dULL}},
|
||||
// 10^-46 ~= 9226712162ab070d cab3961304ca70e8
|
||||
// 10^-46 ~= 9226712162ab070d cab3961304ca70e8
|
||||
// 3d9d75dd9146e91ffb8927397c2d59b0 * 2^-408
|
||||
{{0xf8db71f5937bc2b2ULL, 0xc8fbefc8e87174ffULL,
|
||||
0xaab8f01e6e10b4a6ULL, 0xe9d71b689dde71afULL}},
|
||||
// 10^-47 ~= e9d71b689dde71af aab8f01e6e10b4a6
|
||||
// 10^-47 ~= e9d71b689dde71af aab8f01e6e10b4a6
|
||||
// c8fbefc8e87174fff8db71f5937bc2b2 * 2^-412
|
||||
{{0x2d7c5b2adc630228ULL, 0x3a63263a538df733ULL,
|
||||
0x5560c018580d5d52ULL, 0xbb127c53b17ec159ULL}},
|
||||
// 10^-48 ~= bb127c53b17ec159 5560c018580d5d52
|
||||
// 10^-48 ~= bb127c53b17ec159 5560c018580d5d52
|
||||
// 3a63263a538df7332d7c5b2adc630228 * 2^-415
|
||||
{{0x24637c2249e8ce87ULL, 0x2eb5b82ea93e5f5cULL,
|
||||
0xdde7001379a44aa8ULL, 0x95a8637627989aadULL}},
|
||||
// 10^-49 ~= 95a8637627989aad dde7001379a44aa8
|
||||
// 10^-49 ~= 95a8637627989aad dde7001379a44aa8
|
||||
// 2eb5b82ea93e5f5c24637c2249e8ce87 * 2^-418
|
||||
{{0x3a38c69d430e173eULL, 0x4abc59e441fd6560ULL,
|
||||
0x963e66858f6d4440ULL, 0xef73d256a5c0f77cULL}},
|
||||
// 10^-50 ~= ef73d256a5c0f77c 963e66858f6d4440
|
||||
// 10^-50 ~= ef73d256a5c0f77c 963e66858f6d4440
|
||||
// 4abc59e441fd65603a38c69d430e173e * 2^-422
|
||||
{{0x94fa387dcf3e78feULL, 0x6efd14b69b311de6ULL,
|
||||
0xde98520472bdd033ULL, 0xbf8fdb78849a5f96ULL}},
|
||||
// 10^-51 ~= bf8fdb78849a5f96 de98520472bdd033
|
||||
// 10^-51 ~= bf8fdb78849a5f96 de98520472bdd033
|
||||
// 6efd14b69b311de694fa387dcf3e78fe * 2^-425
|
||||
{{0xaa61c6cb0c31fa65ULL, 0x259743c548f417ebULL,
|
||||
0xe546a8038efe4029ULL, 0x993fe2c6d07b7fabULL}},
|
||||
// 10^-52 ~= 993fe2c6d07b7fab e546a8038efe4029
|
||||
// 10^-52 ~= 993fe2c6d07b7fab e546a8038efe4029
|
||||
// 259743c548f417ebaa61c6cb0c31fa65 * 2^-428
|
||||
{{0xaa360ade79e990a2ULL, 0x3c25393ba7ecf312ULL,
|
||||
0xd53dd99f4b3066a8ULL, 0xf53304714d9265dfULL}},
|
||||
// 10^-53 ~= f53304714d9265df d53dd99f4b3066a8
|
||||
// 10^-53 ~= f53304714d9265df d53dd99f4b3066a8
|
||||
// 3c25393ba7ecf312aa360ade79e990a2 * 2^-432
|
||||
{{0x882b3be52e5473b5ULL, 0x96842dc95323f5a8ULL,
|
||||
0xaa97e14c3c26b886ULL, 0xc428d05aa4751e4cULL}},
|
||||
// 10^-54 ~= c428d05aa4751e4c aa97e14c3c26b886
|
||||
// 10^-54 ~= c428d05aa4751e4c aa97e14c3c26b886
|
||||
// 96842dc95323f5a8882b3be52e5473b5 * 2^-435
|
||||
{{0xd355c98425105c91ULL, 0xab9cf16ddc1cc486ULL,
|
||||
0x55464dd69685606bULL, 0x9ced737bb6c4183dULL}},
|
||||
// 10^-55 ~= 9ced737bb6c4183d 55464dd69685606b
|
||||
// 10^-55 ~= 9ced737bb6c4183d 55464dd69685606b
|
||||
// ab9cf16ddc1cc486d355c98425105c91 * 2^-438
|
||||
{{0xebbc75a03b4d60e7ULL, 0xac2e4f162cfad40aULL,
|
||||
0xeed6e2f0f0d56712ULL, 0xfb158592be068d2eULL}},
|
||||
// 10^-56 ~= fb158592be068d2e eed6e2f0f0d56712
|
||||
// 10^-56 ~= fb158592be068d2e eed6e2f0f0d56712
|
||||
// ac2e4f162cfad40aebbc75a03b4d60e7 * 2^-442
|
||||
{{0x8963914cfc3de71fULL, 0x568b727823fbdcd5ULL,
|
||||
0xf245825a5a445275ULL, 0xc8de047564d20a8bULL}},
|
||||
// 10^-57 ~= c8de047564d20a8b f245825a5a445275
|
||||
// 10^-57 ~= c8de047564d20a8b f245825a5a445275
|
||||
// 568b727823fbdcd58963914cfc3de71f * 2^-445
|
||||
{{0xd44fa770c9cb1f4cULL, 0x453c5b934ffcb0aaULL,
|
||||
0x5b6aceaeae9d0ec4ULL, 0xa0b19d2ab70e6ed6ULL}},
|
||||
// 10^-58 ~= a0b19d2ab70e6ed6 5b6aceaeae9d0ec4
|
||||
// 10^-58 ~= a0b19d2ab70e6ed6 5b6aceaeae9d0ec4
|
||||
// 453c5b934ffcb0aad44fa770c9cb1f4c * 2^-448
|
||||
{{0xdd0c85f3d4a27f70ULL, 0x37637c75d996f3bbULL,
|
||||
0xe2bbd88bbee40bd0ULL, 0x808e17555f3ebf11ULL}},
|
||||
// 10^-59 ~= 808e17555f3ebf11 e2bbd88bbee40bd0
|
||||
// 10^-59 ~= 808e17555f3ebf11 e2bbd88bbee40bd0
|
||||
// 37637c75d996f3bbdd0c85f3d4a27f70 * 2^-451
|
||||
{{0x61ada31fba9d98b3ULL, 0x256bfa5628f185f9ULL,
|
||||
0x3792f412cb06794dULL, 0xcdb02555653131b6ULL}},
|
||||
// 10^-60 ~= cdb02555653131b6 3792f412cb06794d
|
||||
// 10^-60 ~= cdb02555653131b6 3792f412cb06794d
|
||||
// 256bfa5628f185f961ada31fba9d98b3 * 2^-455
|
||||
{{0xe7be1c196217ad5cULL, 0x51232eab53f46b2dULL,
|
||||
0x5fa8c3423c052dd7ULL, 0xa48ceaaab75a8e2bULL}},
|
||||
// 10^-61 ~= a48ceaaab75a8e2b 5fa8c3423c052dd7
|
||||
// 10^-61 ~= a48ceaaab75a8e2b 5fa8c3423c052dd7
|
||||
// 51232eab53f46b2de7be1c196217ad5c * 2^-458
|
||||
{{0x52fe7ce11b46244aULL, 0x40e8f222a99055beULL,
|
||||
0x1953cf68300424acULL, 0x83a3eeeef9153e89ULL}},
|
||||
// 10^-62 ~= 83a3eeeef9153e89 1953cf68300424ac
|
||||
// 10^-62 ~= 83a3eeeef9153e89 1953cf68300424ac
|
||||
// 40e8f222a99055be52fe7ce11b46244a * 2^-461
|
||||
{{0x51972e34f8703a10ULL, 0x34a7e9d10f4d55fdULL,
|
||||
0x8eec7f0d19a03aadULL, 0xd29fe4b18e88640eULL}},
|
||||
// 10^-63 ~= d29fe4b18e88640e 8eec7f0d19a03aad
|
||||
// 10^-63 ~= d29fe4b18e88640e 8eec7f0d19a03aad
|
||||
// 34a7e9d10f4d55fd51972e34f8703a10 * 2^-465
|
||||
{{0x0e128b5d938cfb40ULL, 0x2a1fee40d90aab31ULL,
|
||||
0x3f2398d747b36224ULL, 0xa87fea27a539e9a5ULL}},
|
||||
// 10^-64 ~= a87fea27a539e9a5 3f2398d747b36224
|
||||
// 10^-64 ~= a87fea27a539e9a5 3f2398d747b36224
|
||||
// 2a1fee40d90aab310e128b5d938cfb40 * 2^-468
|
||||
{{0x3e753c4adc70c900ULL, 0xbb4cbe9a473bbc27ULL,
|
||||
0x98e947129fc2b4e9ULL, 0x86ccbb52ea94baeaULL}},
|
||||
// 10^-65 ~= 86ccbb52ea94baea 98e947129fc2b4e9
|
||||
// 10^-65 ~= 86ccbb52ea94baea 98e947129fc2b4e9
|
||||
// bb4cbe9a473bbc273e753c4adc70c900 * 2^-471
|
||||
{{0x30bb93aafa4e0e66ULL, 0x9214642a0b92c6a5ULL,
|
||||
0x5b0ed81dcc6abb0fULL, 0xd7adf884aa879177ULL}},
|
||||
// 10^-66 ~= d7adf884aa879177 5b0ed81dcc6abb0f
|
||||
// 10^-66 ~= d7adf884aa879177 5b0ed81dcc6abb0f
|
||||
// 9214642a0b92c6a530bb93aafa4e0e66 * 2^-475
|
||||
{{0xc0960fbbfb71a51fULL, 0xa8105021a2dbd21dULL,
|
||||
0xe272467e3d222f3fULL, 0xac8b2d36eed2dac5ULL}},
|
||||
// 10^-67 ~= ac8b2d36eed2dac5 e272467e3d222f3f
|
||||
// 10^-67 ~= ac8b2d36eed2dac5 e272467e3d222f3f
|
||||
// a8105021a2dbd21dc0960fbbfb71a51f * 2^-478
|
||||
{{0x66de72fcc927b74cULL, 0xb9a6a6814f1641b1ULL,
|
||||
0x1b8e9ecb641b58ffULL, 0x8a08f0f8bf0f156bULL}},
|
||||
// 10^-68 ~= 8a08f0f8bf0f156b 1b8e9ecb641b58ff
|
||||
// 10^-68 ~= 8a08f0f8bf0f156b 1b8e9ecb641b58ff
|
||||
// b9a6a6814f1641b166de72fcc927b74c * 2^-481
|
||||
{{0xd7ca5194750c5879ULL, 0xf5d770cee4f0691bULL,
|
||||
0xf8e431456cf88e65ULL, 0xdcdb1b2798182244ULL}},
|
||||
// 10^-69 ~= dcdb1b2798182244 f8e431456cf88e65
|
||||
// 10^-69 ~= dcdb1b2798182244 f8e431456cf88e65
|
||||
// f5d770cee4f0691bd7ca5194750c5879 * 2^-485
|
||||
{{0xdfd50e105da379faULL, 0x9179270bea59edafULL,
|
||||
0x2d835a9df0c6d851ULL, 0xb0af48ec79ace837ULL}},
|
||||
// 10^-70 ~= b0af48ec79ace837 2d835a9df0c6d851
|
||||
// 10^-70 ~= b0af48ec79ace837 2d835a9df0c6d851
|
||||
// 9179270bea59edafdfd50e105da379fa * 2^-488
|
||||
{{0x19773e737e1c6195ULL, 0x0dfa85a321e18af3ULL,
|
||||
0x579c487e5a38ad0eULL, 0x8d590723948a535fULL}},
|
||||
// 10^-71 ~= 8d590723948a535f 579c487e5a38ad0e
|
||||
// 10^-71 ~= 8d590723948a535f 579c487e5a38ad0e
|
||||
// dfa85a321e18af319773e737e1c6195 * 2^-491
|
||||
{{0xf58b971f302d68efULL, 0x165da29e9c9c1184ULL,
|
||||
0x25c6da63c38de1b0ULL, 0xe2280b6c20dd5232ULL}},
|
||||
// 10^-72 ~= e2280b6c20dd5232 25c6da63c38de1b0
|
||||
// 10^-72 ~= e2280b6c20dd5232 25c6da63c38de1b0
|
||||
// 165da29e9c9c1184f58b971f302d68ef * 2^-495
|
||||
{{0xc46fac18f3578725ULL, 0x4517b54bb07cdad0ULL,
|
||||
0x1e38aeb6360b1af3ULL, 0xb4ecd5f01a4aa828ULL}},
|
||||
// 10^-73 ~= b4ecd5f01a4aa828 1e38aeb6360b1af3
|
||||
// 10^-73 ~= b4ecd5f01a4aa828 1e38aeb6360b1af3
|
||||
// 4517b54bb07cdad0c46fac18f3578725 * 2^-498
|
||||
{{0x36bfbce0c2ac6c1eULL, 0x9dac910959fd7bdaULL,
|
||||
0xb1c6f22b5e6f48c2ULL, 0x90bd77f3483bb9b9ULL}},
|
||||
// 10^-74 ~= 90bd77f3483bb9b9 b1c6f22b5e6f48c2
|
||||
// 10^-74 ~= 90bd77f3483bb9b9 b1c6f22b5e6f48c2
|
||||
// 9dac910959fd7bda36bfbce0c2ac6c1e * 2^-501
|
||||
{{0x2465fb01377a4696ULL, 0x2f7a81a88ffbf95dULL,
|
||||
0xb60b1d1230b20e04ULL, 0xe7958cb87392c2c2ULL}}
|
||||
// 10^-75 ~= e7958cb87392c2c2 b60b1d1230b20e04
|
||||
// 10^-75 ~= e7958cb87392c2c2 b60b1d1230b20e04
|
||||
// 2f7a81a88ffbf95d2465fb01377a4696 * 2^-505
|
||||
};
|
||||
|
||||
@ -4032,302 +4032,302 @@ UINT64 mask256[] = {
|
||||
UINT256 ten2mxtrunc256[] = {
|
||||
{{0xccccccccccccccccULL, 0xccccccccccccccccULL,
|
||||
0xccccccccccccccccULL, 0xccccccccccccccccULL}},
|
||||
// (ten2mx >> 256) = cccccccccccccccc cccccccccccccccc
|
||||
// (ten2mx >> 256) = cccccccccccccccc cccccccccccccccc
|
||||
// cccccccccccccccccccccccccccccccc
|
||||
{{0x70a3d70a3d70a3d7ULL, 0xd70a3d70a3d70a3dULL,
|
||||
0x3d70a3d70a3d70a3ULL, 0xa3d70a3d70a3d70aULL}},
|
||||
// (ten2mx >> 256) = a3d70a3d70a3d70a 3d70a3d70a3d70a3
|
||||
// (ten2mx >> 256) = a3d70a3d70a3d70a 3d70a3d70a3d70a3
|
||||
// d70a3d70a3d70a3d70a3d70a3d70a3d7
|
||||
{{0xc083126e978d4fdfULL, 0x78d4fdf3b645a1caULL,
|
||||
0x645a1cac083126e9ULL, 0x83126e978d4fdf3bULL}},
|
||||
// (ten2mx >> 256) = 83126e978d4fdf3b 645a1cac083126e9
|
||||
// (ten2mx >> 256) = 83126e978d4fdf3b 645a1cac083126e9
|
||||
// 78d4fdf3b645a1cac083126e978d4fdf
|
||||
{{0x67381d7dbf487fcbULL, 0xc154c985f06f6944ULL,
|
||||
0xd3c36113404ea4a8ULL, 0xd1b71758e219652bULL}},
|
||||
// (ten2mx >> 256) = d1b71758e219652b d3c36113404ea4a8
|
||||
// (ten2mx >> 256) = d1b71758e219652b d3c36113404ea4a8
|
||||
// c154c985f06f694467381d7dbf487fcb
|
||||
{{0x85c67dfe32a0663cULL, 0xcddd6e04c0592103ULL,
|
||||
0x0fcf80dc33721d53ULL, 0xa7c5ac471b478423ULL}},
|
||||
// (ten2mx >> 256) = a7c5ac471b478423 fcf80dc33721d53
|
||||
// (ten2mx >> 256) = a7c5ac471b478423 fcf80dc33721d53
|
||||
// cddd6e04c059210385c67dfe32a0663c
|
||||
{{0x37d1fe64f54d1e96ULL, 0xd7e45803cd141a69ULL,
|
||||
0xa63f9a49c2c1b10fULL, 0x8637bd05af6c69b5ULL}},
|
||||
// (ten2mx >> 256) = 8637bd05af6c69b5 a63f9a49c2c1b10f
|
||||
// (ten2mx >> 256) = 8637bd05af6c69b5 a63f9a49c2c1b10f
|
||||
// d7e45803cd141a6937d1fe64f54d1e96
|
||||
{{0x8c8330a1887b6424ULL, 0x8ca08cd2e1b9c3dbULL,
|
||||
0x3d32907604691b4cULL, 0xd6bf94d5e57a42bcULL}},
|
||||
// (ten2mx >> 256) = d6bf94d5e57a42bc 3d32907604691b4c
|
||||
// (ten2mx >> 256) = d6bf94d5e57a42bc 3d32907604691b4c
|
||||
// 8ca08cd2e1b9c3db8c8330a1887b6424
|
||||
{{0x7068f3b46d2f8350ULL, 0x3d4d3d758161697cULL,
|
||||
0xfdc20d2b36ba7c3dULL, 0xabcc77118461cefcULL}},
|
||||
// (ten2mx >> 256) = abcc77118461cefc fdc20d2b36ba7c3d
|
||||
// (ten2mx >> 256) = abcc77118461cefc fdc20d2b36ba7c3d
|
||||
// 3d4d3d758161697c7068f3b46d2f8350
|
||||
{{0xf387295d242602a6ULL, 0xfdd7645e011abac9ULL,
|
||||
0x31680a88f8953030ULL, 0x89705f4136b4a597ULL}},
|
||||
// (ten2mx >> 256) = 89705f4136b4a597 31680a88f8953030
|
||||
// (ten2mx >> 256) = 89705f4136b4a597 31680a88f8953030
|
||||
// fdd7645e011abac9f387295d242602a6
|
||||
{{0xb8d8422ea03cd10aULL, 0x2fbf06fcce912adcULL,
|
||||
0xb573440e5a884d1bULL, 0xdbe6fecebdedd5beULL}},
|
||||
// (ten2mx >> 256) = dbe6fecebdedd5be b573440e5a884d1b
|
||||
// (ten2mx >> 256) = dbe6fecebdedd5be b573440e5a884d1b
|
||||
// 2fbf06fcce912adcb8d8422ea03cd10a
|
||||
{{0x93e034f219ca40d5ULL, 0xf2ff38ca3eda88b0ULL,
|
||||
0xf78f69a51539d748ULL, 0xafebff0bcb24aafeULL}},
|
||||
// (ten2mx >> 256) = afebff0bcb24aafe f78f69a51539d748
|
||||
// (ten2mx >> 256) = afebff0bcb24aafe f78f69a51539d748
|
||||
// f2ff38ca3eda88b093e034f219ca40d5
|
||||
{{0x4319c3f4e16e9a44ULL, 0xf598fa3b657ba08dULL,
|
||||
0xf93f87b7442e45d3ULL, 0x8cbccc096f5088cbULL}},
|
||||
// (ten2mx >> 256) = 8cbccc096f5088cb f93f87b7442e45d3
|
||||
// (ten2mx >> 256) = 8cbccc096f5088cb f93f87b7442e45d3
|
||||
// f598fa3b657ba08d4319c3f4e16e9a44
|
||||
{{0x04f606549be42a06ULL, 0x88f4c3923bf900e2ULL,
|
||||
0x2865a5f206b06fb9ULL, 0xe12e13424bb40e13ULL}},
|
||||
// (ten2mx >> 256) = e12e13424bb40e13 2865a5f206b06fb9
|
||||
// (ten2mx >> 256) = e12e13424bb40e13 2865a5f206b06fb9
|
||||
// 88f4c3923bf900e204f606549be42a06
|
||||
{{0x03f805107cb68805ULL, 0x6d909c74fcc733e8ULL,
|
||||
0x538484c19ef38c94ULL, 0xb424dc35095cd80fULL}},
|
||||
// (ten2mx >> 256) = b424dc35095cd80f 538484c19ef38c94
|
||||
// (ten2mx >> 256) = b424dc35095cd80f 538484c19ef38c94
|
||||
// 6d909c74fcc733e803f805107cb68805
|
||||
{{0x3660040d3092066aULL, 0x57a6e390ca38f653ULL,
|
||||
0x0f9d37014bf60a10ULL, 0x901d7cf73ab0acd9ULL}},
|
||||
// (ten2mx >> 256) = 901d7cf73ab0acd9 f9d37014bf60a10
|
||||
// (ten2mx >> 256) = 901d7cf73ab0acd9 f9d37014bf60a10
|
||||
// 57a6e390ca38f6533660040d3092066a
|
||||
{{0x23ccd3484db670aaULL, 0xbf716c1add27f085ULL,
|
||||
0x4c2ebe687989a9b3ULL, 0xe69594bec44de15bULL}},
|
||||
// (ten2mx >> 256) = e69594bec44de15b 4c2ebe687989a9b3
|
||||
// (ten2mx >> 256) = e69594bec44de15b 4c2ebe687989a9b3
|
||||
// bf716c1add27f08523ccd3484db670aa
|
||||
{{0x4fd70f6d0af85a22ULL, 0xff8df0157db98d37ULL,
|
||||
0x09befeb9fad487c2ULL, 0xb877aa3236a4b449ULL}},
|
||||
// (ten2mx >> 256) = b877aa3236a4b449 9befeb9fad487c2
|
||||
// (ten2mx >> 256) = b877aa3236a4b449 9befeb9fad487c2
|
||||
// ff8df0157db98d374fd70f6d0af85a22
|
||||
{{0x0cac0c573bf9e1b5ULL, 0x32d7f344649470f9ULL,
|
||||
0x3aff322e62439fcfULL, 0x9392ee8e921d5d07ULL}},
|
||||
// (ten2mx >> 256) = 9392ee8e921d5d07 3aff322e62439fcf
|
||||
// (ten2mx >> 256) = 9392ee8e921d5d07 3aff322e62439fcf
|
||||
// 32d7f344649470f90cac0c573bf9e1b5
|
||||
{{0xe11346f1f98fcf88ULL, 0x1e2652070753e7f4ULL,
|
||||
0x2b31e9e3d06c32e5ULL, 0xec1e4a7db69561a5ULL}},
|
||||
// (ten2mx >> 256) = ec1e4a7db69561a5 2b31e9e3d06c32e5
|
||||
// (ten2mx >> 256) = ec1e4a7db69561a5 2b31e9e3d06c32e5
|
||||
// 1e2652070753e7f4e11346f1f98fcf88
|
||||
{{0x4da9058e613fd939ULL, 0x181ea8059f76532aULL,
|
||||
0x88f4bb1ca6bcf584ULL, 0xbce5086492111aeaULL}},
|
||||
// (ten2mx >> 256) = bce5086492111aea 88f4bb1ca6bcf584
|
||||
// (ten2mx >> 256) = bce5086492111aea 88f4bb1ca6bcf584
|
||||
// 181ea8059f76532a4da9058e613fd939
|
||||
{{0xa48737a51a997a94ULL, 0x467eecd14c5ea8eeULL,
|
||||
0xd3f6fc16ebca5e03ULL, 0x971da05074da7beeULL}},
|
||||
// (ten2mx >> 256) = 971da05074da7bee d3f6fc16ebca5e03
|
||||
// (ten2mx >> 256) = 971da05074da7bee d3f6fc16ebca5e03
|
||||
// 467eecd14c5ea8eea48737a51a997a94
|
||||
{{0x3a71f2a1c428c420ULL, 0x70cb148213caa7e4ULL,
|
||||
0x5324c68b12dd6338ULL, 0xf1c90080baf72cb1ULL}},
|
||||
// (ten2mx >> 256) = f1c90080baf72cb1 5324c68b12dd6338
|
||||
// (ten2mx >> 256) = f1c90080baf72cb1 5324c68b12dd6338
|
||||
// 70cb148213caa7e43a71f2a1c428c420
|
||||
{{0x2ec18ee7d0209ce7ULL, 0x8d6f439b43088650ULL,
|
||||
0x75b7053c0f178293ULL, 0xc16d9a0095928a27ULL}},
|
||||
// (ten2mx >> 256) = c16d9a0095928a27 75b7053c0f178293
|
||||
// (ten2mx >> 256) = c16d9a0095928a27 75b7053c0f178293
|
||||
// 8d6f439b430886502ec18ee7d0209ce7
|
||||
{{0xf23472530ce6e3ecULL, 0xd78c3615cf3a050cULL,
|
||||
0xc4926a9672793542ULL, 0x9abe14cd44753b52ULL}},
|
||||
// (ten2mx >> 256) = 9abe14cd44753b52 c4926a9672793542
|
||||
// (ten2mx >> 256) = 9abe14cd44753b52 c4926a9672793542
|
||||
// d78c3615cf3a050cf23472530ce6e3ec
|
||||
{{0xe9ed83b814a49fe0ULL, 0x8c1389bc7ec33b47ULL,
|
||||
0x3a83ddbd83f52204ULL, 0xf79687aed3eec551ULL}},
|
||||
// (ten2mx >> 256) = f79687aed3eec551 3a83ddbd83f52204
|
||||
// (ten2mx >> 256) = f79687aed3eec551 3a83ddbd83f52204
|
||||
// 8c1389bc7ec33b47e9ed83b814a49fe0
|
||||
{{0x87f1362cdd507fe6ULL, 0x3cdc6e306568fc39ULL,
|
||||
0x95364afe032a819dULL, 0xc612062576589ddaULL}},
|
||||
// (ten2mx >> 256) = c612062576589dda 95364afe032a819d
|
||||
// (ten2mx >> 256) = c612062576589dda 95364afe032a819d
|
||||
// 3cdc6e306568fc3987f1362cdd507fe6
|
||||
{{0x9ff42b5717739985ULL, 0xca49f1c05120c9c7ULL,
|
||||
0x775ea264cf55347dULL, 0x9e74d1b791e07e48ULL}},
|
||||
// (ten2mx >> 256) = 9e74d1b791e07e48 775ea264cf55347d
|
||||
// (ten2mx >> 256) = 9e74d1b791e07e48 775ea264cf55347d
|
||||
// ca49f1c05120c9c79ff42b5717739985
|
||||
{{0xccb9def1bf1f5c08ULL, 0x76dcb60081ce0fa5ULL,
|
||||
0x8bca9d6e188853fcULL, 0xfd87b5f28300ca0dULL}},
|
||||
// (ten2mx >> 256) = fd87b5f28300ca0d 8bca9d6e188853fc
|
||||
// (ten2mx >> 256) = fd87b5f28300ca0d 8bca9d6e188853fc
|
||||
// 76dcb60081ce0fa5ccb9def1bf1f5c08
|
||||
{{0xa3c7e58e327f7cd3ULL, 0x5f16f80067d80c84ULL,
|
||||
0x096ee45813a04330ULL, 0xcad2f7f5359a3b3eULL}},
|
||||
// (ten2mx >> 256) = cad2f7f5359a3b3e 96ee45813a04330
|
||||
// (ten2mx >> 256) = cad2f7f5359a3b3e 96ee45813a04330
|
||||
// 5f16f80067d80c84a3c7e58e327f7cd3
|
||||
{{0xb6398471c1ff970fULL, 0x18df2ccd1fe00a03ULL,
|
||||
0xa1258379a94d028dULL, 0xa2425ff75e14fc31ULL}},
|
||||
// (ten2mx >> 256) = a2425ff75e14fc31 a1258379a94d028d
|
||||
// (ten2mx >> 256) = a2425ff75e14fc31 a1258379a94d028d
|
||||
// 18df2ccd1fe00a03b6398471c1ff970f
|
||||
{{0xf82e038e34cc78d9ULL, 0x4718f0a419800802ULL,
|
||||
0x80eacf948770ced7ULL, 0x81ceb32c4b43fcf4ULL}},
|
||||
// (ten2mx >> 256) = 81ceb32c4b43fcf4 80eacf948770ced7
|
||||
// (ten2mx >> 256) = 81ceb32c4b43fcf4 80eacf948770ced7
|
||||
// 4718f0a419800802f82e038e34cc78d9
|
||||
{{0x59e338e387ad8e28ULL, 0x0b5b1aa028ccd99eULL,
|
||||
0x67de18eda5814af2ULL, 0xcfb11ead453994baULL}},
|
||||
// (ten2mx >> 256) = cfb11ead453994ba 67de18eda5814af2
|
||||
// (ten2mx >> 256) = cfb11ead453994ba 67de18eda5814af2
|
||||
// b5b1aa028ccd99e59e338e387ad8e28
|
||||
{{0x47e8fa4f9fbe0b53ULL, 0x6f7c154ced70ae18ULL,
|
||||
0xecb1ad8aeacdd58eULL, 0xa6274bbdd0fadd61ULL}},
|
||||
// (ten2mx >> 256) = a6274bbdd0fadd61 ecb1ad8aeacdd58e
|
||||
// (ten2mx >> 256) = a6274bbdd0fadd61 ecb1ad8aeacdd58e
|
||||
// 6f7c154ced70ae1847e8fa4f9fbe0b53
|
||||
{{0xd320c83fb2fe6f75ULL, 0xbf967770bdf3be79ULL,
|
||||
0xbd5af13bef0b113eULL, 0x84ec3c97da624ab4ULL}},
|
||||
// (ten2mx >> 256) = 84ec3c97da624ab4 bd5af13bef0b113e
|
||||
// (ten2mx >> 256) = 84ec3c97da624ab4 bd5af13bef0b113e
|
||||
// bf967770bdf3be79d320c83fb2fe6f75
|
||||
{{0x85014065eb30b256ULL, 0x65bd8be79652ca5cULL,
|
||||
0x955e4ec64b44e864ULL, 0xd4ad2dbfc3d07787ULL}},
|
||||
// (ten2mx >> 256) = d4ad2dbfc3d07787 955e4ec64b44e864
|
||||
// (ten2mx >> 256) = d4ad2dbfc3d07787 955e4ec64b44e864
|
||||
// 65bd8be79652ca5c85014065eb30b256
|
||||
{{0xd0cdcd1e55c08eabULL, 0xeafe098611dbd516ULL,
|
||||
0xdde50bd1d5d0b9e9ULL, 0xaa242499697392d2ULL}},
|
||||
// (ten2mx >> 256) = aa242499697392d2 dde50bd1d5d0b9e9
|
||||
// (ten2mx >> 256) = aa242499697392d2 dde50bd1d5d0b9e9
|
||||
// eafe098611dbd516d0cdcd1e55c08eab
|
||||
{{0x40a4a418449a0bbcULL, 0xbbfe6e04db164412ULL,
|
||||
0x7e50d64177da2e54ULL, 0x881cea14545c7575ULL}},
|
||||
// (ten2mx >> 256) = 881cea14545c7575 7e50d64177da2e54
|
||||
// (ten2mx >> 256) = 881cea14545c7575 7e50d64177da2e54
|
||||
// bbfe6e04db16441240a4a418449a0bbc
|
||||
{{0x9aa1068d3a9012c7ULL, 0x2cca49a15e8a0683ULL,
|
||||
0x96e7bd358c904a21ULL, 0xd9c7dced53c72255ULL}},
|
||||
// (ten2mx >> 256) = d9c7dced53c72255 96e7bd358c904a21
|
||||
// (ten2mx >> 256) = d9c7dced53c72255 96e7bd358c904a21
|
||||
// 2cca49a15e8a06839aa1068d3a9012c7
|
||||
{{0x154d9ed7620cdbd2ULL, 0x8a3b6e1ab2080536ULL,
|
||||
0xabec975e0a0d081aULL, 0xae397d8aa96c1b77ULL}},
|
||||
// (ten2mx >> 256) = ae397d8aa96c1b77 abec975e0a0d081a
|
||||
// (ten2mx >> 256) = ae397d8aa96c1b77 abec975e0a0d081a
|
||||
// 8a3b6e1ab2080536154d9ed7620cdbd2
|
||||
{{0x443e18ac4e70afdbULL, 0x3b62be7bc1a0042bULL,
|
||||
0x2323ac4b3b3da015ULL, 0x8b61313bbabce2c6ULL}},
|
||||
// (ten2mx >> 256) = 8b61313bbabce2c6 2323ac4b3b3da015
|
||||
// (ten2mx >> 256) = 8b61313bbabce2c6 2323ac4b3b3da015
|
||||
// 3b62be7bc1a0042b443e18ac4e70afdb
|
||||
{{0x6d30277a171ab2f8ULL, 0x5f0463f935ccd378ULL,
|
||||
0x6b6c46dec52f6688ULL, 0xdf01e85f912e37a3ULL}},
|
||||
// (ten2mx >> 256) = df01e85f912e37a3 6b6c46dec52f6688
|
||||
// (ten2mx >> 256) = df01e85f912e37a3 6b6c46dec52f6688
|
||||
// 5f0463f935ccd3786d30277a171ab2f8
|
||||
{{0x8a8cec61ac155bfaULL, 0x7f36b660f7d70f93ULL,
|
||||
0x55f038b237591ed3ULL, 0xb267ed1940f1c61cULL}},
|
||||
// (ten2mx >> 256) = b267ed1940f1c61c 55f038b237591ed3
|
||||
// (ten2mx >> 256) = b267ed1940f1c61c 55f038b237591ed3
|
||||
// 7f36b660f7d70f938a8cec61ac155bfa
|
||||
{{0x3ba3f04e23444995ULL, 0xcc2bc51a5fdf3fa9ULL,
|
||||
0x77f3608e92adb242ULL, 0x8eb98a7a9a5b04e3ULL}},
|
||||
// (ten2mx >> 256) = 8eb98a7a9a5b04e3 77f3608e92adb242
|
||||
// (ten2mx >> 256) = 8eb98a7a9a5b04e3 77f3608e92adb242
|
||||
// cc2bc51a5fdf3fa93ba3f04e23444995
|
||||
{{0xf9064d49d206dc21ULL, 0xe046082a32fecc41ULL,
|
||||
0x8cb89a7db77c506aULL, 0xe45c10c42a2b3b05ULL}},
|
||||
// (ten2mx >> 256) = e45c10c42a2b3b05 8cb89a7db77c506a
|
||||
// (ten2mx >> 256) = e45c10c42a2b3b05 8cb89a7db77c506a
|
||||
// e046082a32fecc41f9064d49d206dc21
|
||||
{{0xfa6b7107db38b01aULL, 0x4d04d354f598a367ULL,
|
||||
0x3d607b97c5fd0d22ULL, 0xb6b00d69bb55c8d1ULL}},
|
||||
// (ten2mx >> 256) = b6b00d69bb55c8d1 3d607b97c5fd0d22
|
||||
// (ten2mx >> 256) = b6b00d69bb55c8d1 3d607b97c5fd0d22
|
||||
// 4d04d354f598a367fa6b7107db38b01a
|
||||
{{0xfb8927397c2d59afULL, 0x3d9d75dd9146e91fULL,
|
||||
0xcab3961304ca70e8ULL, 0x9226712162ab070dULL}},
|
||||
// (ten2mx >> 256) = 9226712162ab070d cab3961304ca70e8
|
||||
// (ten2mx >> 256) = 9226712162ab070d cab3961304ca70e8
|
||||
// 3d9d75dd9146e91ffb8927397c2d59af
|
||||
{{0xf8db71f5937bc2b1ULL, 0xc8fbefc8e87174ffULL,
|
||||
0xaab8f01e6e10b4a6ULL, 0xe9d71b689dde71afULL}},
|
||||
// (ten2mx >> 256) = e9d71b689dde71af aab8f01e6e10b4a6
|
||||
// (ten2mx >> 256) = e9d71b689dde71af aab8f01e6e10b4a6
|
||||
// c8fbefc8e87174fff8db71f5937bc2b1
|
||||
{{0x2d7c5b2adc630227ULL, 0x3a63263a538df733ULL,
|
||||
0x5560c018580d5d52ULL, 0xbb127c53b17ec159ULL}},
|
||||
// (ten2mx >> 256) = bb127c53b17ec159 5560c018580d5d52
|
||||
// (ten2mx >> 256) = bb127c53b17ec159 5560c018580d5d52
|
||||
// 3a63263a538df7332d7c5b2adc630227
|
||||
{{0x24637c2249e8ce86ULL, 0x2eb5b82ea93e5f5cULL,
|
||||
0xdde7001379a44aa8ULL, 0x95a8637627989aadULL}},
|
||||
// (ten2mx >> 256) = 95a8637627989aad dde7001379a44aa8
|
||||
// (ten2mx >> 256) = 95a8637627989aad dde7001379a44aa8
|
||||
// 2eb5b82ea93e5f5c24637c2249e8ce86
|
||||
{{0x3a38c69d430e173dULL, 0x4abc59e441fd6560ULL,
|
||||
0x963e66858f6d4440ULL, 0xef73d256a5c0f77cULL}},
|
||||
// (ten2mx >> 256) = ef73d256a5c0f77c 963e66858f6d4440
|
||||
// (ten2mx >> 256) = ef73d256a5c0f77c 963e66858f6d4440
|
||||
// 4abc59e441fd65603a38c69d430e173d
|
||||
{{0x94fa387dcf3e78fdULL, 0x6efd14b69b311de6ULL,
|
||||
0xde98520472bdd033ULL, 0xbf8fdb78849a5f96ULL}},
|
||||
// (ten2mx >> 256) = bf8fdb78849a5f96 de98520472bdd033
|
||||
// (ten2mx >> 256) = bf8fdb78849a5f96 de98520472bdd033
|
||||
// 6efd14b69b311de694fa387dcf3e78fd
|
||||
{{0xaa61c6cb0c31fa64ULL, 0x259743c548f417ebULL,
|
||||
0xe546a8038efe4029ULL, 0x993fe2c6d07b7fabULL}},
|
||||
// (ten2mx >> 256) = 993fe2c6d07b7fab e546a8038efe4029
|
||||
// (ten2mx >> 256) = 993fe2c6d07b7fab e546a8038efe4029
|
||||
// 259743c548f417ebaa61c6cb0c31fa64
|
||||
{{0xaa360ade79e990a1ULL, 0x3c25393ba7ecf312ULL,
|
||||
0xd53dd99f4b3066a8ULL, 0xf53304714d9265dfULL}},
|
||||
// (ten2mx >> 256) = f53304714d9265df d53dd99f4b3066a8
|
||||
// (ten2mx >> 256) = f53304714d9265df d53dd99f4b3066a8
|
||||
// 3c25393ba7ecf312aa360ade79e990a1
|
||||
{{0x882b3be52e5473b4ULL, 0x96842dc95323f5a8ULL,
|
||||
0xaa97e14c3c26b886ULL, 0xc428d05aa4751e4cULL}},
|
||||
// (ten2mx >> 256) = c428d05aa4751e4c aa97e14c3c26b886
|
||||
// (ten2mx >> 256) = c428d05aa4751e4c aa97e14c3c26b886
|
||||
// 96842dc95323f5a8882b3be52e5473b4
|
||||
{{0xd355c98425105c90ULL, 0xab9cf16ddc1cc486ULL,
|
||||
0x55464dd69685606bULL, 0x9ced737bb6c4183dULL}},
|
||||
// (ten2mx >> 256) = 9ced737bb6c4183d 55464dd69685606b
|
||||
// (ten2mx >> 256) = 9ced737bb6c4183d 55464dd69685606b
|
||||
// ab9cf16ddc1cc486d355c98425105c90
|
||||
{{0xebbc75a03b4d60e6ULL, 0xac2e4f162cfad40aULL,
|
||||
0xeed6e2f0f0d56712ULL, 0xfb158592be068d2eULL}},
|
||||
// (ten2mx >> 256) = fb158592be068d2e eed6e2f0f0d56712
|
||||
// (ten2mx >> 256) = fb158592be068d2e eed6e2f0f0d56712
|
||||
// ac2e4f162cfad40aebbc75a03b4d60e6
|
||||
{{0x8963914cfc3de71eULL, 0x568b727823fbdcd5ULL,
|
||||
0xf245825a5a445275ULL, 0xc8de047564d20a8bULL}},
|
||||
// (ten2mx >> 256) = c8de047564d20a8b f245825a5a445275
|
||||
// (ten2mx >> 256) = c8de047564d20a8b f245825a5a445275
|
||||
// 568b727823fbdcd58963914cfc3de71e
|
||||
{{0xd44fa770c9cb1f4bULL, 0x453c5b934ffcb0aaULL,
|
||||
0x5b6aceaeae9d0ec4ULL, 0xa0b19d2ab70e6ed6ULL}},
|
||||
// (ten2mx >> 256) = a0b19d2ab70e6ed6 5b6aceaeae9d0ec4
|
||||
// (ten2mx >> 256) = a0b19d2ab70e6ed6 5b6aceaeae9d0ec4
|
||||
// 453c5b934ffcb0aad44fa770c9cb1f4b
|
||||
{{0xdd0c85f3d4a27f6fULL, 0x37637c75d996f3bbULL,
|
||||
0xe2bbd88bbee40bd0ULL, 0x808e17555f3ebf11ULL}},
|
||||
// (ten2mx >> 256) = 808e17555f3ebf11 e2bbd88bbee40bd0
|
||||
// (ten2mx >> 256) = 808e17555f3ebf11 e2bbd88bbee40bd0
|
||||
// 37637c75d996f3bbdd0c85f3d4a27f6f
|
||||
{{0x61ada31fba9d98b2ULL, 0x256bfa5628f185f9ULL,
|
||||
0x3792f412cb06794dULL, 0xcdb02555653131b6ULL}},
|
||||
// (ten2mx >> 256) = cdb02555653131b6 3792f412cb06794d
|
||||
// (ten2mx >> 256) = cdb02555653131b6 3792f412cb06794d
|
||||
// 256bfa5628f185f961ada31fba9d98b2
|
||||
{{0xe7be1c196217ad5bULL, 0x51232eab53f46b2dULL,
|
||||
0x5fa8c3423c052dd7ULL, 0xa48ceaaab75a8e2bULL}},
|
||||
// (ten2mx >> 256) = a48ceaaab75a8e2b 5fa8c3423c052dd7
|
||||
// (ten2mx >> 256) = a48ceaaab75a8e2b 5fa8c3423c052dd7
|
||||
// 51232eab53f46b2de7be1c196217ad5b
|
||||
{{0x52fe7ce11b462449ULL, 0x40e8f222a99055beULL,
|
||||
0x1953cf68300424acULL, 0x83a3eeeef9153e89ULL}},
|
||||
// (ten2mx >> 256) = 83a3eeeef9153e89 1953cf68300424ac
|
||||
// (ten2mx >> 256) = 83a3eeeef9153e89 1953cf68300424ac
|
||||
// 40e8f222a99055be52fe7ce11b462449
|
||||
{{0x51972e34f8703a0fULL, 0x34a7e9d10f4d55fdULL,
|
||||
0x8eec7f0d19a03aadULL, 0xd29fe4b18e88640eULL}},
|
||||
// (ten2mx >> 256) = d29fe4b18e88640e 8eec7f0d19a03aad
|
||||
// (ten2mx >> 256) = d29fe4b18e88640e 8eec7f0d19a03aad
|
||||
// 34a7e9d10f4d55fd51972e34f8703a0f
|
||||
{{0x0e128b5d938cfb3fULL, 0x2a1fee40d90aab31ULL,
|
||||
0x3f2398d747b36224ULL, 0xa87fea27a539e9a5ULL}},
|
||||
// (ten2mx >> 256) = a87fea27a539e9a5 3f2398d747b36224
|
||||
// (ten2mx >> 256) = a87fea27a539e9a5 3f2398d747b36224
|
||||
// 2a1fee40d90aab310e128b5d938cfb3f
|
||||
{{0x3e753c4adc70c8ffULL, 0xbb4cbe9a473bbc27ULL,
|
||||
0x98e947129fc2b4e9ULL, 0x86ccbb52ea94baeaULL}},
|
||||
// (ten2mx >> 256) = 86ccbb52ea94baea 98e947129fc2b4e9
|
||||
// (ten2mx >> 256) = 86ccbb52ea94baea 98e947129fc2b4e9
|
||||
// bb4cbe9a473bbc273e753c4adc70c8ff
|
||||
{{0x30bb93aafa4e0e65ULL, 0x9214642a0b92c6a5ULL,
|
||||
0x5b0ed81dcc6abb0fULL, 0xd7adf884aa879177ULL}},
|
||||
// (ten2mx >> 256) = d7adf884aa879177 5b0ed81dcc6abb0f
|
||||
// (ten2mx >> 256) = d7adf884aa879177 5b0ed81dcc6abb0f
|
||||
// 9214642a0b92c6a530bb93aafa4e0e65
|
||||
{{0xc0960fbbfb71a51eULL, 0xa8105021a2dbd21dULL,
|
||||
0xe272467e3d222f3fULL, 0xac8b2d36eed2dac5ULL}},
|
||||
// (ten2mx >> 256) = ac8b2d36eed2dac5 e272467e3d222f3f
|
||||
// (ten2mx >> 256) = ac8b2d36eed2dac5 e272467e3d222f3f
|
||||
// a8105021a2dbd21dc0960fbbfb71a51e
|
||||
{{0x66de72fcc927b74bULL, 0xb9a6a6814f1641b1ULL,
|
||||
0x1b8e9ecb641b58ffULL, 0x8a08f0f8bf0f156bULL}},
|
||||
// (ten2mx >> 256) = 8a08f0f8bf0f156b 1b8e9ecb641b58ff
|
||||
// (ten2mx >> 256) = 8a08f0f8bf0f156b 1b8e9ecb641b58ff
|
||||
// b9a6a6814f1641b166de72fcc927b74b
|
||||
{{0xd7ca5194750c5878ULL, 0xf5d770cee4f0691bULL,
|
||||
0xf8e431456cf88e65ULL, 0xdcdb1b2798182244ULL}},
|
||||
// (ten2mx >> 256) = dcdb1b2798182244 f8e431456cf88e65
|
||||
// (ten2mx >> 256) = dcdb1b2798182244 f8e431456cf88e65
|
||||
// f5d770cee4f0691bd7ca5194750c5878
|
||||
{{0xdfd50e105da379f9ULL, 0x9179270bea59edafULL,
|
||||
0x2d835a9df0c6d851ULL, 0xb0af48ec79ace837ULL}},
|
||||
// (ten2mx >> 256) = b0af48ec79ace837 2d835a9df0c6d851
|
||||
// (ten2mx >> 256) = b0af48ec79ace837 2d835a9df0c6d851
|
||||
// 9179270bea59edafdfd50e105da379f9
|
||||
{{0x19773e737e1c6194ULL, 0x0dfa85a321e18af3ULL,
|
||||
0x579c487e5a38ad0eULL, 0x8d590723948a535fULL}},
|
||||
// (ten2mx >> 256) = 8d590723948a535f 579c487e5a38ad0e
|
||||
// (ten2mx >> 256) = 8d590723948a535f 579c487e5a38ad0e
|
||||
// dfa85a321e18af319773e737e1c6194
|
||||
{{0xf58b971f302d68eeULL, 0x165da29e9c9c1184ULL,
|
||||
0x25c6da63c38de1b0ULL, 0xe2280b6c20dd5232ULL}},
|
||||
// (ten2mx >> 256) = e2280b6c20dd5232 25c6da63c38de1b0
|
||||
// (ten2mx >> 256) = e2280b6c20dd5232 25c6da63c38de1b0
|
||||
// 165da29e9c9c1184f58b971f302d68ee
|
||||
{{0xc46fac18f3578724ULL, 0x4517b54bb07cdad0ULL,
|
||||
0x1e38aeb6360b1af3ULL, 0xb4ecd5f01a4aa828ULL}},
|
||||
// (ten2mx >> 256) = b4ecd5f01a4aa828 1e38aeb6360b1af3
|
||||
// (ten2mx >> 256) = b4ecd5f01a4aa828 1e38aeb6360b1af3
|
||||
// 4517b54bb07cdad0c46fac18f3578724
|
||||
{{0x36bfbce0c2ac6c1dULL, 0x9dac910959fd7bdaULL,
|
||||
0xb1c6f22b5e6f48c2ULL, 0x90bd77f3483bb9b9ULL}},
|
||||
// (ten2mx >> 256) = 90bd77f3483bb9b9 b1c6f22b5e6f48c2
|
||||
// (ten2mx >> 256) = 90bd77f3483bb9b9 b1c6f22b5e6f48c2
|
||||
// 9dac910959fd7bda36bfbce0c2ac6c1d
|
||||
{{0x2465fb01377a4695ULL, 0x2f7a81a88ffbf95dULL,
|
||||
0xb60b1d1230b20e04ULL, 0xe7958cb87392c2c2ULL}}
|
||||
// (ten2mx >> 256) = e7958cb87392c2c2 b60b1d1230b20e04
|
||||
// (ten2mx >> 256) = e7958cb87392c2c2 b60b1d1230b20e04
|
||||
// 2f7a81a88ffbf95d2465fb01377a4695
|
||||
};
|
||||
|
@ -135,7 +135,7 @@ const char midi_tbl[1000][3] = {
|
||||
};
|
||||
|
||||
const UINT64 mod10_18_tbl[9][128] = {
|
||||
// 2^59 = 576460752303423488, A and B breakdown, where data = A*10^18 + B
|
||||
// 2^59 = 576460752303423488, A and B breakdown, where data = A*10^18 + B
|
||||
|
||||
{
|
||||
0LL, 0LL, 0LL, 576460752303423488LL,
|
||||
|
@ -573,15 +573,15 @@ bid128_add (UINT128 x, UINT128 y
|
||||
}
|
||||
// unpack the arguments
|
||||
|
||||
// unpack x
|
||||
// unpack x
|
||||
C1_hi = x.w[1] & MASK_COEFF;
|
||||
C1_lo = x.w[0];
|
||||
// test for non-canonical values:
|
||||
// - values whose encoding begins with x00, x01, or x10 and whose
|
||||
// - values whose encoding begins with x00, x01, or x10 and whose
|
||||
// coefficient is larger than 10^34 -1, or
|
||||
// - values whose encoding begins with x1100, x1101, x1110 (if NaNs
|
||||
// and infinitis were eliminated already this test is reduced to
|
||||
// checking for x10x)
|
||||
// - values whose encoding begins with x1100, x1101, x1110 (if NaNs
|
||||
// and infinitis were eliminated already this test is reduced to
|
||||
// checking for x10x)
|
||||
|
||||
// x is not infinity; check for non-canonical values - treated as zero
|
||||
if ((x.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull) {
|
||||
@ -602,21 +602,21 @@ bid128_add (UINT128 x, UINT128 y
|
||||
}
|
||||
}
|
||||
|
||||
// unpack y
|
||||
// unpack y
|
||||
C2_hi = y.w[1] & MASK_COEFF;
|
||||
C2_lo = y.w[0];
|
||||
// y is not infinity; check for non-canonical values - treated as zero
|
||||
// y is not infinity; check for non-canonical values - treated as zero
|
||||
if ((y.w[1] & 0x6000000000000000ull) == 0x6000000000000000ull) {
|
||||
// G0_G1=11; non-canonical
|
||||
// G0_G1=11; non-canonical
|
||||
y_exp = (y.w[1] << 2) & MASK_EXP; // biased and shifted left 49 bits
|
||||
C2_hi = 0; // significand high
|
||||
C2_lo = 0; // significand low
|
||||
} else { // G0_G1 != 11
|
||||
C2_lo = 0; // significand low
|
||||
} else { // G0_G1 != 11
|
||||
y_exp = y.w[1] & MASK_EXP; // biased and shifted left 49 bits
|
||||
if (C2_hi > 0x0001ed09bead87c0ull ||
|
||||
(C2_hi == 0x0001ed09bead87c0ull
|
||||
&& C2_lo > 0x378d8e63ffffffffull)) {
|
||||
// y is non-canonical if coefficient is larger than 10^34 -1
|
||||
// y is non-canonical if coefficient is larger than 10^34 -1
|
||||
C2_hi = 0;
|
||||
C2_lo = 0;
|
||||
} else { // canonical
|
||||
@ -651,7 +651,7 @@ bid128_add (UINT128 x, UINT128 y
|
||||
|
||||
if (C2_hi == 0) { // y_bits is the nr. of bits in C2_lo
|
||||
if (C2_lo >= 0x0020000000000000ull) { // y >= 2^53
|
||||
// split the 64-bit value in two 32-bit halves to avoid
|
||||
// split the 64-bit value in two 32-bit halves to avoid
|
||||
// rounding errors
|
||||
if (C2_lo >= 0x0000000100000000ull) { // y >= 2^32
|
||||
tmp2.d = (double) (C2_lo >> 32); // exact conversion
|
||||
@ -690,7 +690,7 @@ bid128_add (UINT128 x, UINT128 y
|
||||
if (scale == 0) {
|
||||
res.w[1] = y.w[1];
|
||||
res.w[0] = y.w[0];
|
||||
} else if (q2 <= 19) { // y fits in 64 bits
|
||||
} else if (q2 <= 19) { // y fits in 64 bits
|
||||
if (scale <= 19) { // 10^scale fits in 64 bits
|
||||
// 64 x 64 C2_lo * ten2k64[scale]
|
||||
__mul_64x64_to_128MACH (res, C2_lo, ten2k64[scale]);
|
||||
@ -698,7 +698,7 @@ bid128_add (UINT128 x, UINT128 y
|
||||
// 64 x 128 C2_lo * ten2k128[scale - 20]
|
||||
__mul_128x64_to_128 (res, C2_lo, ten2k128[scale - 20]);
|
||||
}
|
||||
} else { // y fits in 128 bits, but 10^scale must fit in 64 bits
|
||||
} else { // y fits in 128 bits, but 10^scale must fit in 64 bits
|
||||
// 64 x 128 ten2k64[scale] * C2
|
||||
C2.w[1] = C2_hi;
|
||||
C2.w[0] = C2_lo;
|
||||
@ -724,7 +724,7 @@ bid128_add (UINT128 x, UINT128 y
|
||||
// determine first the nr. of bits in x
|
||||
if (C1_hi == 0) { // x_bits is the nr. of bits in C1_lo
|
||||
if (C1_lo >= 0x0020000000000000ull) { // x >= 2^53
|
||||
// split the 64-bit value in two 32-bit halves to avoid
|
||||
// split the 64-bit value in two 32-bit halves to avoid
|
||||
// rounding errors
|
||||
if (C1_lo >= 0x0000000100000000ull) { // x >= 2^32
|
||||
tmp1.d = (double) (C1_lo >> 32); // exact conversion
|
||||
@ -755,7 +755,7 @@ bid128_add (UINT128 x, UINT128 y
|
||||
q1++;
|
||||
}
|
||||
// return (C1 * 10^scale) * 10^(x_exp - scale)
|
||||
// where scale = min (P34-q1, x_exp-y_exp)
|
||||
// where scale = min (P34-q1, x_exp-y_exp)
|
||||
scale = P34 - q1;
|
||||
ind = (x_exp - y_exp) >> 49;
|
||||
if (ind < scale)
|
||||
@ -763,9 +763,9 @@ bid128_add (UINT128 x, UINT128 y
|
||||
if (scale == 0) {
|
||||
res.w[1] = x.w[1];
|
||||
res.w[0] = x.w[0];
|
||||
} else if (q1 <= 19) { // x fits in 64 bits
|
||||
} else if (q1 <= 19) { // x fits in 64 bits
|
||||
if (scale <= 19) { // 10^scale fits in 64 bits
|
||||
// 64 x 64 C1_lo * ten2k64[scale]
|
||||
// 64 x 64 C1_lo * ten2k64[scale]
|
||||
__mul_64x64_to_128MACH (res, C1_lo, ten2k64[scale]);
|
||||
} else { // 10^scale fits in 128 bits
|
||||
// 64 x 128 C1_lo * ten2k128[scale - 20]
|
||||
@ -786,7 +786,7 @@ bid128_add (UINT128 x, UINT128 y
|
||||
} else { // x and y are not canonical, not special, and are not zero
|
||||
// note that the result may still be zero, and then it has to have the
|
||||
// preferred exponent
|
||||
if (x_exp < y_exp) { // if exp_x < exp_y then swap x and y
|
||||
if (x_exp < y_exp) { // if exp_x < exp_y then swap x and y
|
||||
tmp_sign = x_sign;
|
||||
tmp_exp = x_exp;
|
||||
tmp_signif_hi = C1_hi;
|
||||
@ -879,7 +879,7 @@ bid128_add (UINT128 x, UINT128 y
|
||||
// possibly scaled up by 10^(P34-q1)
|
||||
// an overflow cannot occur in this case (rounding to nearest)
|
||||
if (q1 < P34) { // scale C1 up by 10^(P34-q1)
|
||||
// Note: because delta >= P34+1 it is certain that
|
||||
// Note: because delta >= P34+1 it is certain that
|
||||
// x_exp - ((UINT64)scale << 49) will stay above e_min
|
||||
scale = P34 - q1;
|
||||
if (q1 <= 19) { // C1 fits in 64 bits
|
||||
@ -903,10 +903,10 @@ bid128_add (UINT128 x, UINT128 y
|
||||
C1_hi = C1.w[1];
|
||||
C1_lo = C1.w[0];
|
||||
}
|
||||
// some special cases arise: if delta = P34 + 1 and C1 = 10^(P34-1)
|
||||
// (after scaling) and x_sign != y_sign and C2 > 5*10^(q2-1) =>
|
||||
// some special cases arise: if delta = P34 + 1 and C1 = 10^(P34-1)
|
||||
// (after scaling) and x_sign != y_sign and C2 > 5*10^(q2-1) =>
|
||||
// subtract 1 ulp
|
||||
// Note: do this only for rounding to nearest; for other rounding
|
||||
// Note: do this only for rounding to nearest; for other rounding
|
||||
// modes the correction will be applied next
|
||||
if ((rnd_mode == ROUNDING_TO_NEAREST
|
||||
|| rnd_mode == ROUNDING_TIES_AWAY) && delta == (P34 + 1)
|
||||
@ -970,7 +970,7 @@ bid128_add (UINT128 x, UINT128 y
|
||||
C1_lo = C1_lo - 1;
|
||||
if (C1_lo == 0xffffffffffffffffull)
|
||||
C1_hi = C1_hi - 1;
|
||||
// if the coefficient is 10^33 - 1 then make it 10^34 - 1 and
|
||||
// if the coefficient is 10^33 - 1 then make it 10^34 - 1 and
|
||||
// decrease the exponent by 1 (because delta >= P34 + 1 the
|
||||
// exponent will not become less than e_min)
|
||||
// 10^33 - 1 = 0x0000314dc6448d9338c15b09ffffffff
|
||||
@ -991,7 +991,7 @@ bid128_add (UINT128 x, UINT128 y
|
||||
// assemble the result
|
||||
res.w[1] = x_sign | x_exp | C1_hi;
|
||||
res.w[0] = C1_lo;
|
||||
} else { // delta = P34
|
||||
} else { // delta = P34
|
||||
// in most cases, the smaller operand may be < or = or > 1/2 ulp of the
|
||||
// larger operand
|
||||
// however, the case C1 = 10^(q1-1) and x_sign != y_sign is special due
|
||||
@ -1007,7 +1007,7 @@ bid128_add (UINT128 x, UINT128 y
|
||||
if (q2 <= 19) { // C2 and 5*10^(q2-1) both fit in 64 bits
|
||||
halfulp64 = midpoint64[q2 - 1]; // 5 * 10^(q2-1)
|
||||
if (C2_lo < halfulp64) { // n2 < 1/2 ulp (n1)
|
||||
// for RN the result is the operand with the larger magnitude,
|
||||
// for RN the result is the operand with the larger magnitude,
|
||||
// possibly scaled up by 10^(P34-q1)
|
||||
// an overflow cannot occur in this case (rounding to nearest)
|
||||
if (q1 < P34) { // scale C1 up by 10^(P34-q1)
|
||||
@ -1067,7 +1067,7 @@ bid128_add (UINT128 x, UINT128 y
|
||||
C1_lo = C1_lo - 1;
|
||||
if (C1_lo == 0xffffffffffffffffull)
|
||||
C1_hi = C1_hi - 1;
|
||||
// if the coefficient is 10^33-1 then make it 10^34-1 and
|
||||
// if the coefficient is 10^33-1 then make it 10^34-1 and
|
||||
// decrease the exponent by 1 (because delta >= P34 + 1 the
|
||||
// exponent will not become less than e_min)
|
||||
// 10^33 - 1 = 0x0000314dc6448d9338c15b09ffffffff
|
||||
@ -1102,17 +1102,17 @@ bid128_add (UINT128 x, UINT128 y
|
||||
// 1 <= q1 <= 19 => 15 <= scale <= 33
|
||||
if (scale <= 19) { // 10^scale fits in 64 bits
|
||||
__mul_64x64_to_128MACH (C1, ten2k64[scale], C1_lo);
|
||||
} else { // if 20 <= scale <= 33
|
||||
} else { // if 20 <= scale <= 33
|
||||
// C1 * 10^scale = (C1 * 10^(scale-19)) * 10^19 where
|
||||
// (C1 * 10^(scale-19)) fits in 64 bits
|
||||
// (C1 * 10^(scale-19)) fits in 64 bits
|
||||
C1_lo = C1_lo * ten2k64[scale - 19];
|
||||
__mul_64x64_to_128MACH (C1, ten2k64[19], C1_lo);
|
||||
}
|
||||
} else { //if 20 <= q1 <= 33=P34-1 then C1 fits only in 128 bits
|
||||
// => 1 <= P34 - q1 <= 14 so 10^(P34-q1) fits in 64 bits
|
||||
// => 1 <= P34 - q1 <= 14 so 10^(P34-q1) fits in 64 bits
|
||||
C1.w[1] = C1_hi;
|
||||
C1.w[0] = C1_lo;
|
||||
// C1 = ten2k64[P34 - q1] * C1
|
||||
// C1 = ten2k64[P34 - q1] * C1
|
||||
__mul_128x64_to_128 (C1, ten2k64[P34 - q1], C1);
|
||||
}
|
||||
x_exp = x_exp - ((UINT64) scale << 49);
|
||||
@ -1172,17 +1172,17 @@ bid128_add (UINT128 x, UINT128 y
|
||||
}
|
||||
// set the inexact flag
|
||||
*pfpsf |= INEXACT_EXCEPTION;
|
||||
// assemble the result
|
||||
// assemble the result
|
||||
res.w[1] = x_sign | x_exp | C1_hi;
|
||||
res.w[0] = C1_lo;
|
||||
} else { // if C2_lo > halfulp64 ||
|
||||
} else { // if C2_lo > halfulp64 ||
|
||||
// (C2_lo == halfulp64 && q1 == P34 && ((C1_lo & 0x1) == 1)), i.e.
|
||||
// 1/2 ulp(n1) < n2 < 1 ulp(n1) or n2 = 1/2 ulp(n1) and C1 odd
|
||||
// res = x+1 ulp if n1*n2 > 0 and res = x-1 ulp if n1*n2 < 0
|
||||
if (q1 < P34) { // then 1 ulp = 10^(e1+q1-P34) < 10^e1
|
||||
// Note: if (q1 == P34) then 1 ulp = 10^(e1+q1-P34) = 10^e1
|
||||
// because q1 < P34 we must first replace C1 by
|
||||
// C1 * 10^(P34-q1), and must decrease the exponent by
|
||||
// because q1 < P34 we must first replace C1 by
|
||||
// C1 * 10^(P34-q1), and must decrease the exponent by
|
||||
// (P34-q1) (it will still be at least e_min)
|
||||
scale = P34 - q1;
|
||||
if (q1 <= 19) { // C1 fits in 64 bits
|
||||
@ -1208,7 +1208,7 @@ bid128_add (UINT128 x, UINT128 y
|
||||
// check for rounding overflow
|
||||
if (C1_hi == 0x0001ed09bead87c0ull
|
||||
&& C1_lo == 0x378d8e6400000000ull) {
|
||||
// C1 = 10^34 => rounding overflow
|
||||
// C1 = 10^34 => rounding overflow
|
||||
C1_hi = 0x0000314dc6448d93ull;
|
||||
C1_lo = 0x38c15b0a00000000ull; // 10^33
|
||||
x_exp = x_exp + EXP_P1;
|
||||
@ -1269,7 +1269,7 @@ bid128_add (UINT128 x, UINT128 y
|
||||
res.w[1] = x_sign | x_exp | C1_hi;
|
||||
res.w[0] = C1_lo;
|
||||
}
|
||||
} else { // if q2 >= 20 then 5*10^(q2-1) and C2 (the latter in
|
||||
} else { // if q2 >= 20 then 5*10^(q2-1) and C2 (the latter in
|
||||
// most cases) fit only in more than 64 bits
|
||||
halfulp128 = midpoint128[q2 - 20]; // 5 * 10^(q2-1)
|
||||
if ((C2_hi < halfulp128.w[1])
|
||||
@ -1287,17 +1287,17 @@ bid128_add (UINT128 x, UINT128 y
|
||||
// 1 <= q1 <= 19 => 15 <= scale <= 33
|
||||
if (scale <= 19) { // 10^scale fits in 64 bits
|
||||
__mul_64x64_to_128MACH (C1, ten2k64[scale], C1_lo);
|
||||
} else { // if 20 <= scale <= 33
|
||||
} else { // if 20 <= scale <= 33
|
||||
// C1 * 10^scale = (C1 * 10^(scale-19)) * 10^19 where
|
||||
// (C1 * 10^(scale-19)) fits in 64 bits
|
||||
// (C1 * 10^(scale-19)) fits in 64 bits
|
||||
C1_lo = C1_lo * ten2k64[scale - 19];
|
||||
__mul_64x64_to_128MACH (C1, ten2k64[19], C1_lo);
|
||||
}
|
||||
} else { //if 20 <= q1 <= 33=P34-1 then C1 fits only in 128 bits
|
||||
// => 1 <= P34 - q1 <= 14 so 10^(P34-q1) fits in 64 bits
|
||||
// => 1 <= P34 - q1 <= 14 so 10^(P34-q1) fits in 64 bits
|
||||
C1.w[1] = C1_hi;
|
||||
C1.w[0] = C1_lo;
|
||||
// C1 = ten2k64[P34 - q1] * C1
|
||||
// C1 = ten2k64[P34 - q1] * C1
|
||||
__mul_128x64_to_128 (C1, ten2k64[P34 - q1], C1);
|
||||
}
|
||||
C1_hi = C1.w[1];
|
||||
@ -1352,9 +1352,9 @@ bid128_add (UINT128 x, UINT128 y
|
||||
; // the result is already correct
|
||||
}
|
||||
}
|
||||
// set the inexact flag
|
||||
// set the inexact flag
|
||||
*pfpsf |= INEXACT_EXCEPTION;
|
||||
// assemble the result
|
||||
// assemble the result
|
||||
res.w[1] = x_sign | x_exp | C1_hi;
|
||||
res.w[0] = C1_lo;
|
||||
} else if ((C2_hi == halfulp128.w[1]
|
||||
@ -1532,15 +1532,15 @@ bid128_add (UINT128 x, UINT128 y
|
||||
// end case where C1 != 10^(q1-1)
|
||||
} else { // C1 = 10^(q1-1) and x_sign != y_sign
|
||||
// instead of C' = (C1 * 10^(e1-e2) + C2)rnd,P34
|
||||
// calculate C' = C1 * 10^(e1-e2-x1) + (C2 * 10^(-x1))rnd,P34
|
||||
// calculate C' = C1 * 10^(e1-e2-x1) + (C2 * 10^(-x1))rnd,P34
|
||||
// where x1 = q2 - 1, 0 <= x1 <= P34 - 1
|
||||
// Because C1 = 10^(q1-1) and x_sign != y_sign, C' will have P34
|
||||
// Because C1 = 10^(q1-1) and x_sign != y_sign, C' will have P34
|
||||
// digits and n = C' * 10^(e2+x1)
|
||||
// If the result has P34+1 digits, redo the steps above with x1+1
|
||||
// If the result has P34-1 digits or less, redo the steps above with
|
||||
// If the result has P34-1 digits or less, redo the steps above with
|
||||
// x1-1 but only if initially x1 >= 1
|
||||
// NOTE: these two steps can be improved, e.g we could guess if
|
||||
// P34+1 or P34-1 digits will be obtained by adding/subtracting
|
||||
// P34+1 or P34-1 digits will be obtained by adding/subtracting
|
||||
// just the top 64 bits of the two operands
|
||||
// The result cannot be zero, and it cannot overflow
|
||||
x1 = q2 - 1; // 0 <= x1 <= P34-1
|
||||
@ -1835,14 +1835,14 @@ bid128_add (UINT128 x, UINT128 y
|
||||
// The coefficient of the result is C1 * 10^(e1-e2) + C2 and the
|
||||
// exponent is e2; either C1 or 10^(e1-e2) may not fit is 64 bits,
|
||||
// but their product fits with certainty in 128 bits (actually in 113)
|
||||
scale = delta - q1 + q2; // scale = (int)(e1 >> 49) - (int)(e2 >> 49)
|
||||
scale = delta - q1 + q2; // scale = (int)(e1 >> 49) - (int)(e2 >> 49)
|
||||
|
||||
if (scale >= 20) { // 10^(e1-e2) does not fit in 64 bits, but C1 does
|
||||
__mul_128x64_to_128 (C1, C1_lo, ten2k128[scale - 20]);
|
||||
C1_hi = C1.w[1];
|
||||
C1_lo = C1.w[0];
|
||||
} else if (scale >= 1) {
|
||||
// if 1 <= scale <= 19 then 10^(e1-e2) fits in 64 bits
|
||||
// if 1 <= scale <= 19 then 10^(e1-e2) fits in 64 bits
|
||||
if (q1 <= 19) { // C1 fits in 64 bits
|
||||
__mul_64x64_to_128MACH (C1, C1_lo, ten2k64[scale]);
|
||||
} else { // q1 >= 20
|
||||
@ -1853,7 +1853,7 @@ bid128_add (UINT128 x, UINT128 y
|
||||
C1_hi = C1.w[1];
|
||||
C1_lo = C1.w[0];
|
||||
} else { // if (scale == 0) C1 is unchanged
|
||||
C1.w[0] = C1_lo; // C1.w[1] = C1_hi;
|
||||
C1.w[0] = C1_lo; // C1.w[1] = C1_hi;
|
||||
}
|
||||
// now add C2
|
||||
if (x_sign == y_sign) {
|
||||
@ -1894,7 +1894,7 @@ bid128_add (UINT128 x, UINT128 y
|
||||
res.w[1] = x_sign | y_exp | C1_hi;
|
||||
res.w[0] = C1_lo;
|
||||
} else if (delta == P34 - q2) {
|
||||
// calculate C' directly; the result may be inexact if it requires
|
||||
// calculate C' directly; the result may be inexact if it requires
|
||||
// P34+1 decimal digits; in this case the 'cutoff' point for addition
|
||||
// is at the position of the lsb of C2, so 0 <= e1-e2 <= P34-1
|
||||
// The coefficient of the result is C1 * 10^(e1-e2) + C2 and the
|
||||
@ -1927,8 +1927,8 @@ bid128_add (UINT128 x, UINT128 y
|
||||
C1_hi++;
|
||||
// test for overflow, possible only when C1 >= 10^34
|
||||
if (C1_hi > 0x0001ed09bead87c0ull || (C1_hi == 0x0001ed09bead87c0ull && C1_lo >= 0x378d8e6400000000ull)) { // C1 >= 10^34
|
||||
// in this case q = P34 + 1 and x = q - P34 = 1, so multiply
|
||||
// C'' = C'+ 5 = C1 + 5 by k1 ~ 10^(-1) calculated for P34 + 1
|
||||
// in this case q = P34 + 1 and x = q - P34 = 1, so multiply
|
||||
// C'' = C'+ 5 = C1 + 5 by k1 ~ 10^(-1) calculated for P34 + 1
|
||||
// decimal digits
|
||||
// Calculate C'' = C' + 1/2 * 10^x
|
||||
if (C1_lo >= 0xfffffffffffffffbull) { // low half add has carry
|
||||
@ -1946,10 +1946,10 @@ bid128_add (UINT128 x, UINT128 y
|
||||
ten2m1.w[0] = 0x9999999999999a00ull;
|
||||
__mul_128x128_to_256 (P256, C1, ten2m1); // P256 = C*, f*
|
||||
// C* is actually floor(C*) in this case
|
||||
// the top Ex = 128 bits of 10^(-1) are
|
||||
// the top Ex = 128 bits of 10^(-1) are
|
||||
// T* = 0x00199999999999999999999999999999
|
||||
// if (0 < f* < 10^(-x)) then
|
||||
// if floor(C*) is even then C = floor(C*) - logical right
|
||||
// if floor(C*) is even then C = floor(C*) - logical right
|
||||
// shift; C has p decimal digits, correct by Prop. 1)
|
||||
// else if floor(C*) is odd C = floor(C*) - 1 (logical right
|
||||
// shift; C has p decimal digits, correct by Pr. 1)
|
||||
@ -1989,9 +1989,9 @@ bid128_add (UINT128 x, UINT128 y
|
||||
BID_SWAP128 (res);
|
||||
BID_RETURN (res);
|
||||
}
|
||||
// if (0 < f* - 1/2 < 10^(-x)) then
|
||||
// the result of the addition is exact
|
||||
// else
|
||||
// if (0 < f* - 1/2 < 10^(-x)) then
|
||||
// the result of the addition is exact
|
||||
// else
|
||||
// the result of the addition is inexact
|
||||
if (P256.w[1] > 0x8000000000000000ull || (P256.w[1] == 0x8000000000000000ull && P256.w[0] > 0x0ull)) { // the result may be exact
|
||||
tmp64 = P256.w[1] - 0x8000000000000000ull; // f* - 1/2
|
||||
@ -2015,7 +2015,7 @@ bid128_add (UINT128 x, UINT128 y
|
||||
is_inexact_gt_midpoint = is_inexact
|
||||
&& !(P256.w[1] & 0x8000000000000000ull);
|
||||
}
|
||||
// general correction from RN to RA, RM, RP, RZ;
|
||||
// general correction from RN to RA, RM, RP, RZ;
|
||||
// result uses y_exp
|
||||
if (rnd_mode != ROUNDING_TO_NEAREST) {
|
||||
if ((!x_sign
|
||||
@ -2125,11 +2125,11 @@ bid128_add (UINT128 x, UINT128 y
|
||||
res.w[0] = C1_lo;
|
||||
} else { // if (delta >= P34 + 1 - q2)
|
||||
// instead of C' = (C1 * 10^(e1-e2) + C2)rnd,P34
|
||||
// calculate C' = C1 * 10^(e1-e2-x1) + (C2 * 10^(-x1))rnd,P34
|
||||
// calculate C' = C1 * 10^(e1-e2-x1) + (C2 * 10^(-x1))rnd,P34
|
||||
// where x1 = q1 + e1 - e2 - P34, 1 <= x1 <= P34 - 1
|
||||
// In most cases C' will have P34 digits, and n = C' * 10^(e2+x1)
|
||||
// If the result has P34+1 digits, redo the steps above with x1+1
|
||||
// If the result has P34-1 digits or less, redo the steps above with
|
||||
// If the result has P34-1 digits or less, redo the steps above with
|
||||
// x1-1 but only if initially x1 >= 1
|
||||
// NOTE: these two steps can be improved, e.g we could guess if
|
||||
// P34+1 or P34-1 digits will be obtained by adding/subtracting just
|
||||
@ -2160,7 +2160,7 @@ bid128_add (UINT128 x, UINT128 y
|
||||
tmp64 = C1.w[0]; // C1.w[1], C1.w[0] contains C1 * 10^(e1-e2-x1)
|
||||
|
||||
// now round C2 to q2-x1 decimal digits, where 1<=x1<=q2-1<=P34-1
|
||||
// (but if we got here a second time after x1 = x1 - 1, then
|
||||
// (but if we got here a second time after x1 = x1 - 1, then
|
||||
// x1 >= 0; note that for x1 = 0 C2 is unchanged)
|
||||
// C2' = C2 + 1/2 * 10^x1 = C2 + 5 * 10^(x1-1)
|
||||
ind = x1 - 1; // 0 <= ind <= q2-2<=P34-2=32; but note that if x1 = 0
|
||||
@ -2224,8 +2224,8 @@ bid128_add (UINT128 x, UINT128 y
|
||||
is_midpoint_lt_even = 0;
|
||||
is_midpoint_gt_even = 0;
|
||||
}
|
||||
// determine inexactness of the rounding of C2* (this may be
|
||||
// followed by a second rounding only if we get P34+1
|
||||
// determine inexactness of the rounding of C2* (this may be
|
||||
// followed by a second rounding only if we get P34+1
|
||||
// decimal digits)
|
||||
// if (0 < f2* - 1/2 < 10^(-x1)) then
|
||||
// the result is exact
|
||||
@ -2383,7 +2383,7 @@ bid128_add (UINT128 x, UINT128 y
|
||||
if (C1.w[0] < tmp64)
|
||||
C1.w[1]++; // carry
|
||||
// if the sum has P34+1 digits, i.e. C1>=10^34 redo the calculation
|
||||
// with x1=x1+1
|
||||
// with x1=x1+1
|
||||
if (C1.w[1] > 0x0001ed09bead87c0ull || (C1.w[1] == 0x0001ed09bead87c0ull && C1.w[0] >= 0x378d8e6400000000ull)) { // C1 >= 10^34
|
||||
// chop off one more digit from the sum, but make sure there is
|
||||
// no double-rounding error (see table - double rounding logic)
|
||||
@ -2451,7 +2451,7 @@ bid128_add (UINT128 x, UINT128 y
|
||||
}
|
||||
}
|
||||
tmp_inexact = 1; // in all cases
|
||||
} else { // the result is not a midpoint
|
||||
} else { // the result is not a midpoint
|
||||
// determine inexactness of the rounding of C1 (the sum C1+C2*)
|
||||
// if (0 < f1* - 1/2 < 10^(-1)) then
|
||||
// the result is exact
|
||||
@ -2537,9 +2537,9 @@ bid128_add (UINT128 x, UINT128 y
|
||||
}
|
||||
// if the difference has P34-1 digits or less, i.e. C1 < 10^33 then
|
||||
// redo the calculation with x1=x1-1;
|
||||
// redo the calculation also if C1 = 10^33 and
|
||||
// redo the calculation also if C1 = 10^33 and
|
||||
// (is_inexact_gt_midpoint or is_midpoint_lt_even);
|
||||
// (the last part should have really been
|
||||
// (the last part should have really been
|
||||
// (is_inexact_lt_midpoint or is_midpoint_gt_even) from
|
||||
// the rounding of C2, but the position flags have been reversed)
|
||||
// 10^33 = 0x0000314dc6448d93 0x38c15b0a00000000
|
||||
@ -2557,7 +2557,7 @@ bid128_add (UINT128 x, UINT128 y
|
||||
}
|
||||
}
|
||||
// if the coefficient of the result is 10^34 it means that this
|
||||
// must be the second pass, and we are done
|
||||
// must be the second pass, and we are done
|
||||
if (C1.w[1] == 0x0001ed09bead87c0ull && C1.w[0] == 0x378d8e6400000000ull) { // if C1 = 10^34
|
||||
C1.w[1] = 0x0000314dc6448d93ull; // C1 = 10^33
|
||||
C1.w[0] = 0x38c15b0a00000000ull;
|
||||
@ -2566,8 +2566,8 @@ bid128_add (UINT128 x, UINT128 y
|
||||
x_sign = tmp_sign;
|
||||
if (x1 >= 1)
|
||||
y_exp = y_exp + ((UINT64) x1 << 49);
|
||||
// x1 = -1 is possible at the end of a second pass when the
|
||||
// first pass started with x1 = 1
|
||||
// x1 = -1 is possible at the end of a second pass when the
|
||||
// first pass started with x1 = 1
|
||||
}
|
||||
C1_hi = C1.w[1];
|
||||
C1_lo = C1.w[0];
|
||||
@ -2650,12 +2650,12 @@ bid128_add (UINT128 x, UINT128 y
|
||||
*pfpsf |= INEXACT_EXCEPTION;
|
||||
}
|
||||
} else { // if (-P34 + 1 <= delta <= -1) <=> 1 <= -delta <= P34 - 1
|
||||
// NOTE: the following, up to "} else { // if x_sign != y_sign
|
||||
// NOTE: the following, up to "} else { // if x_sign != y_sign
|
||||
// the result is exact" is identical to "else if (delta == P34 - q2) {"
|
||||
// from above; also, the code is not symmetric: a+b and b+a may take
|
||||
// different paths (need to unify eventually!)
|
||||
// calculate C' = C2 + C1 * 10^(e1-e2) directly; the result may be
|
||||
// inexact if it requires P34 + 1 decimal digits; in either case the
|
||||
// different paths (need to unify eventually!)
|
||||
// calculate C' = C2 + C1 * 10^(e1-e2) directly; the result may be
|
||||
// inexact if it requires P34 + 1 decimal digits; in either case the
|
||||
// 'cutoff' point for addition is at the position of the lsb of C2
|
||||
// The coefficient of the result is C1 * 10^(e1-e2) + C2 and the
|
||||
// exponent is e2; either C1 or 10^(e1-e2) may not fit is 64 bits,
|
||||
@ -2692,8 +2692,8 @@ bid128_add (UINT128 x, UINT128 y
|
||||
C1_hi++;
|
||||
// test for overflow, possible only when C1 >= 10^34
|
||||
if (C1_hi > 0x0001ed09bead87c0ull || (C1_hi == 0x0001ed09bead87c0ull && C1_lo >= 0x378d8e6400000000ull)) { // C1 >= 10^34
|
||||
// in this case q = P34 + 1 and x = q - P34 = 1, so multiply
|
||||
// C'' = C'+ 5 = C1 + 5 by k1 ~ 10^(-1) calculated for P34 + 1
|
||||
// in this case q = P34 + 1 and x = q - P34 = 1, so multiply
|
||||
// C'' = C'+ 5 = C1 + 5 by k1 ~ 10^(-1) calculated for P34 + 1
|
||||
// decimal digits
|
||||
// Calculate C'' = C' + 1/2 * 10^x
|
||||
if (C1_lo >= 0xfffffffffffffffbull) { // low half add has carry
|
||||
@ -2711,10 +2711,10 @@ bid128_add (UINT128 x, UINT128 y
|
||||
ten2m1.w[0] = 0x9999999999999a00ull;
|
||||
__mul_128x128_to_256 (P256, C1, ten2m1); // P256 = C*, f*
|
||||
// C* is actually floor(C*) in this case
|
||||
// the top Ex = 128 bits of 10^(-1) are
|
||||
// the top Ex = 128 bits of 10^(-1) are
|
||||
// T* = 0x00199999999999999999999999999999
|
||||
// if (0 < f* < 10^(-x)) then
|
||||
// if floor(C*) is even then C = floor(C*) - logical right
|
||||
// if floor(C*) is even then C = floor(C*) - logical right
|
||||
// shift; C has p decimal digits, correct by Prop. 1)
|
||||
// else if floor(C*) is odd C = floor(C*) - 1 (logical right
|
||||
// shift; C has p decimal digits, correct by Pr. 1)
|
||||
@ -2754,9 +2754,9 @@ bid128_add (UINT128 x, UINT128 y
|
||||
BID_SWAP128 (res);
|
||||
BID_RETURN (res);
|
||||
}
|
||||
// if (0 < f* - 1/2 < 10^(-x)) then
|
||||
// the result of the addition is exact
|
||||
// else
|
||||
// if (0 < f* - 1/2 < 10^(-x)) then
|
||||
// the result of the addition is exact
|
||||
// else
|
||||
// the result of the addition is inexact
|
||||
if (P256.w[1] > 0x8000000000000000ull || (P256.w[1] == 0x8000000000000000ull && P256.w[0] > 0x0ull)) { // the result may be exact
|
||||
tmp64 = P256.w[1] - 0x8000000000000000ull; // f* - 1/2
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user