Try to stop git complaining about certain files changing.

This commit is contained in:
William Hart 2014-02-04 13:24:05 +00:00
parent fbf04dda95
commit 8caeabc661
11 changed files with 218 additions and 5726 deletions

14
.gitignore vendored
View File

@ -176,8 +176,22 @@ mpn/*.asm
Makefile
mpir.h
config.h
config.m4
config.log
config.status
libtool
stamp-h1
yasm/.deps/
yasm/configure.gnu
yasm/configure.lineno
yasm/libyasm-stdint.h
yasm/po/Makefile.in
yasm/po/POTFILES
yasm/stamp-h1
yasm_mac.inc
gmp.h
longlong.h
gmp-mparam.h
/build.vc11/output_params.bat
/build.vc11/mpir-tests/test-config.props

View File

@ -25,7 +25,7 @@ END-INFO-DIR-ENTRY

Indirect:
mpir.info-1: 1026
mpir.info-2: 299211
mpir.info-2: 299690

Tag Table:
(Indirect)
@ -34,144 +34,144 @@ Node: Copying3245
Node: Introduction to MPIR4965
Node: Installing MPIR7135
Node: Build Options8573
Node: ABI and ISA24632
Node: Notes for Package Builds31401
Node: Notes for Particular Systems34839
Node: Known Build Problems42271
Node: Performance optimization43959
Node: MPIR Basics45095
Node: Headers and Libraries45746
Node: Nomenclature and Types47201
Node: MPIR on Windows x6449122
Node: Function Classes51049
Node: Variable Conventions52584
Node: Parameter Conventions54113
Node: Memory Management56165
Node: Reentrancy57297
Node: Useful Macros and Constants58734
Node: Compatibility with older versions59925
Node: Efficiency60962
Node: Debugging68641
Node: Profiling75041
Node: Autoconf79075
Node: Emacs80949
Node: Reporting Bugs81558
Node: Integer Functions84125
Node: Initializing Integers84904
Node: Assigning Integers86838
Node: Simultaneous Integer Init & Assign88617
Node: Converting Integers90445
Node: Integer Arithmetic94061
Node: Integer Division95527
Node: Integer Exponentiation101432
Node: Integer Roots102255
Node: Number Theoretic Functions104042
Node: Integer Comparisons112099
Node: Integer Logic and Bit Fiddling113450
Node: I/O of Integers116010
Node: Integer Random Numbers118897
Node: Integer Import and Export120661
Node: Miscellaneous Integer Functions124648
Node: Integer Special Functions126494
Node: Rational Number Functions129665
Node: Initializing Rationals130860
Node: Rational Conversions133316
Node: Rational Arithmetic135048
Node: Comparing Rationals136353
Node: Applying Integer Functions137670
Node: I/O of Rationals139154
Node: Floating-point Functions141017
Node: Initializing Floats143908
Node: Assigning Floats147996
Node: Simultaneous Float Init & Assign150546
Node: Converting Floats152058
Node: Float Arithmetic155281
Node: Float Comparison157145
Node: I/O of Floats158473
Node: Miscellaneous Float Functions161044
Node: Low-level Functions163677
Node: Random Number Functions189839
Node: Random State Initialization190909
Node: Random State Seeding192962
Node: Random State Miscellaneous194332
Node: Formatted Output194924
Node: Formatted Output Strings195170
Node: Formatted Output Functions200410
Node: C++ Formatted Output204487
Node: Formatted Input207174
Node: Formatted Input Strings207411
Node: Formatted Input Functions212073
Node: C++ Formatted Input215046
Node: C++ Class Interface216954
Node: C++ Interface General217952
Node: C++ Interface Integers221032
Node: C++ Interface Rationals224418
Node: C++ Interface Floats228064
Node: C++ Interface Random Numbers233291
Node: C++ Interface Limitations235399
Node: Custom Allocation238245
Node: Language Bindings242891
Node: Algorithms246921
Node: Multiplication Algorithms247626
Node: Basecase Multiplication248838
Node: Karatsuba Multiplication250750
Node: Toom 3-Way Multiplication254380
Node: Toom 4-Way Multiplication260796
Node: FFT Multiplication262170
Node: Other Multiplication267596
Node: Unbalanced Multiplication270278
Node: Division Algorithms271174
Node: Single Limb Division271522
Node: Basecase Division274442
Node: Divide and Conquer Division275645
Node: Exact Division277915
Node: Exact Remainder281115
Node: Small Quotient Division283408
Node: Greatest Common Divisor Algorithms285007
Node: Binary GCD285299
Node: Lehmer's GCD287975
Node: Subquadratic GCD290179
Node: Extended GCD292633
Node: Jacobi Symbol293192
Node: Powering Algorithms294109
Node: Normal Powering Algorithm294373
Node: Modular Powering Algorithm294902
Node: Root Extraction Algorithms295966
Node: Square Root Algorithm296282
Node: Nth Root Algorithm298425
Node: Perfect Square Algorithm299211
Node: Perfect Power Algorithm301298
Node: Radix Conversion Algorithms301920
Node: Binary to Radix302297
Node: Radix to Binary306228
Node: Other Algorithms308193
Node: Prime Testing Algorithm308547
Node: Factorial Algorithm309774
Node: Binomial Coefficients Algorithm311211
Node: Fibonacci Numbers Algorithm312106
Node: Lucas Numbers Algorithm314582
Node: Random Number Algorithms315304
Node: Assembler Coding317428
Node: Assembler Code Organisation318405
Node: Assembler Basics319378
Node: Assembler Carry Propagation320537
Node: Assembler Cache Handling322375
Node: Assembler Functional Units324543
Node: Assembler Floating Point326164
Node: Assembler SIMD Instructions329947
Node: Assembler Software Pipelining330936
Node: Assembler Loop Unrolling332004
Node: Assembler Writing Guide334224
Node: Internals336994
Node: Integer Internals337508
Node: Rational Internals339765
Node: Float Internals341005
Node: Raw Output Internals348333
Node: C++ Interface Internals349528
Node: Contributors352815
Node: References361806
Node: GNU Free Documentation License369549
Node: Concept Index394715
Node: Function Index437093
Node: ABI and ISA25111
Node: Notes for Package Builds31880
Node: Notes for Particular Systems35318
Node: Known Build Problems42750
Node: Performance optimization44438
Node: MPIR Basics45574
Node: Headers and Libraries46225
Node: Nomenclature and Types47680
Node: MPIR on Windows x6449601
Node: Function Classes51528
Node: Variable Conventions53063
Node: Parameter Conventions54592
Node: Memory Management56644
Node: Reentrancy57776
Node: Useful Macros and Constants59213
Node: Compatibility with older versions60404
Node: Efficiency61441
Node: Debugging69120
Node: Profiling75520
Node: Autoconf79554
Node: Emacs81428
Node: Reporting Bugs82037
Node: Integer Functions84604
Node: Initializing Integers85383
Node: Assigning Integers87317
Node: Simultaneous Integer Init & Assign89096
Node: Converting Integers90924
Node: Integer Arithmetic94540
Node: Integer Division96006
Node: Integer Exponentiation101911
Node: Integer Roots102734
Node: Number Theoretic Functions104521
Node: Integer Comparisons112578
Node: Integer Logic and Bit Fiddling113929
Node: I/O of Integers116489
Node: Integer Random Numbers119376
Node: Integer Import and Export121140
Node: Miscellaneous Integer Functions125127
Node: Integer Special Functions126973
Node: Rational Number Functions130144
Node: Initializing Rationals131339
Node: Rational Conversions133795
Node: Rational Arithmetic135527
Node: Comparing Rationals136832
Node: Applying Integer Functions138149
Node: I/O of Rationals139633
Node: Floating-point Functions141496
Node: Initializing Floats144387
Node: Assigning Floats148475
Node: Simultaneous Float Init & Assign151025
Node: Converting Floats152537
Node: Float Arithmetic155760
Node: Float Comparison157624
Node: I/O of Floats158952
Node: Miscellaneous Float Functions161523
Node: Low-level Functions164156
Node: Random Number Functions190318
Node: Random State Initialization191388
Node: Random State Seeding193441
Node: Random State Miscellaneous194811
Node: Formatted Output195403
Node: Formatted Output Strings195649
Node: Formatted Output Functions200889
Node: C++ Formatted Output204966
Node: Formatted Input207653
Node: Formatted Input Strings207890
Node: Formatted Input Functions212552
Node: C++ Formatted Input215525
Node: C++ Class Interface217433
Node: C++ Interface General218431
Node: C++ Interface Integers221511
Node: C++ Interface Rationals224897
Node: C++ Interface Floats228543
Node: C++ Interface Random Numbers233770
Node: C++ Interface Limitations235878
Node: Custom Allocation238724
Node: Language Bindings243370
Node: Algorithms247400
Node: Multiplication Algorithms248105
Node: Basecase Multiplication249317
Node: Karatsuba Multiplication251229
Node: Toom 3-Way Multiplication254859
Node: Toom 4-Way Multiplication261275
Node: FFT Multiplication262649
Node: Other Multiplication268075
Node: Unbalanced Multiplication270757
Node: Division Algorithms271653
Node: Single Limb Division272001
Node: Basecase Division274921
Node: Divide and Conquer Division276124
Node: Exact Division278394
Node: Exact Remainder281594
Node: Small Quotient Division283887
Node: Greatest Common Divisor Algorithms285486
Node: Binary GCD285778
Node: Lehmer's GCD288454
Node: Subquadratic GCD290658
Node: Extended GCD293112
Node: Jacobi Symbol293671
Node: Powering Algorithms294588
Node: Normal Powering Algorithm294852
Node: Modular Powering Algorithm295381
Node: Root Extraction Algorithms296445
Node: Square Root Algorithm296761
Node: Nth Root Algorithm298904
Node: Perfect Square Algorithm299690
Node: Perfect Power Algorithm301777
Node: Radix Conversion Algorithms302399
Node: Binary to Radix302776
Node: Radix to Binary306707
Node: Other Algorithms308672
Node: Prime Testing Algorithm309026
Node: Factorial Algorithm310253
Node: Binomial Coefficients Algorithm311690
Node: Fibonacci Numbers Algorithm312585
Node: Lucas Numbers Algorithm315061
Node: Random Number Algorithms315783
Node: Assembler Coding317907
Node: Assembler Code Organisation318884
Node: Assembler Basics319857
Node: Assembler Carry Propagation321016
Node: Assembler Cache Handling322854
Node: Assembler Functional Units325022
Node: Assembler Floating Point326643
Node: Assembler SIMD Instructions330426
Node: Assembler Software Pipelining331415
Node: Assembler Loop Unrolling332483
Node: Assembler Writing Guide334703
Node: Internals337473
Node: Integer Internals337987
Node: Rational Internals340244
Node: Float Internals341484
Node: Raw Output Internals348812
Node: C++ Interface Internals350007
Node: Contributors353294
Node: References362289
Node: GNU Free Documentation License370036
Node: Concept Index395206
Node: Function Index437803

End Tag Table

View File

@ -396,6 +396,17 @@ Fat binary, `--enable-fat'
See *note ABI and ISA::, for the available choices on relevant
CPUs, and what applications need to do.
`--with-yasm', `--with-system-yasm'
By default MPIR will compile its own version of Yasm if needed.
Passing `--with-yasm' or `--with-system-yasm' let MPIR use a
precompiled version of Yasm. With the former option a full path to
Yasm's binary should be given, for example
./configure --with-yasm=/usr/local/bin/yasm
with the latter option MPIR will try to detect a system-wide
installation of Yasm. Both options are mutually exclusive.
`CC', `CFLAGS'
By default the C compiler used is chosen from among some likely
candidates, with `gcc' normally preferred if it's present. The

View File

@ -1268,8 +1268,8 @@ complexity and all subexpressions are evaluated to the precision of `f'.

File: mpir.info, Node: Contributors, Next: References, Prev: Internals, Up: Top
Annexe A Contributors
*********************
Appendix A Contributors
***********************
Torbjorn Granlund wrote the original GMP library and is still
developing and maintaining it. Several other individuals and
@ -1486,8 +1486,8 @@ supporting us in inumerably many other ways.

File: mpir.info, Node: References, Next: GNU Free Documentation License, Prev: Contributors, Up: Top
Annexe B References
*******************
Appendix B References
*********************
B.1 Books
=========
@ -1661,8 +1661,8 @@ B.2 Papers

File: mpir.info, Node: GNU Free Documentation License, Next: Concept Index, Prev: References, Up: Top
Annexe C GNU Free Documentation License
***************************************
Appendix C GNU Free Documentation License
*****************************************
Version 1.3, 3 November 2008
@ -2156,19 +2156,21 @@ Concept Index
* #include: Headers and Libraries.
(line 6)
* --build: Build Options. (line 60)
* --disable-fft: Build Options. (line 316)
* --disable-fft: Build Options. (line 327)
* --disable-shared: Build Options. (line 53)
* --disable-static: Build Options. (line 53)
* --enable-alloca: Build Options. (line 277)
* --enable-assert: Build Options. (line 321)
* --enable-cxx: Build Options. (line 229)
* --enable-alloca: Build Options. (line 288)
* --enable-assert: Build Options. (line 332)
* --enable-cxx: Build Options. (line 240)
* --enable-fat: Build Options. (line 162)
* --enable-gmpcompat: Build Options. (line 45)
* --enable-profiling <1>: Profiling. (line 6)
* --enable-profiling: Build Options. (line 325)
* --enable-profiling: Build Options. (line 336)
* --exec-prefix: Build Options. (line 32)
* --host: Build Options. (line 74)
* --prefix: Build Options. (line 32)
* --with-system-yasm: Build Options. (line 181)
* --with-yasm: Build Options. (line 181)
* -finstrument-functions: Profiling. (line 66)
* 2exp functions: Efficiency. (line 43)
* 80x86: Notes for Particular Systems.
@ -2182,7 +2184,7 @@ Concept Index
(line 7)
* AIX: ABI and ISA. (line 96)
* Algorithms: Algorithms. (line 6)
* alloca: Build Options. (line 277)
* alloca: Build Options. (line 288)
* Allocation of memory: Custom Allocation. (line 6)
* AMD64: ABI and ISA. (line 45)
* Application Binary Interface: ABI and ISA. (line 6)
@ -2209,7 +2211,7 @@ Concept Index
* Assembler writing guide: Assembler Writing Guide.
(line 6)
* Assertion checking <1>: Debugging. (line 76)
* Assertion checking: Build Options. (line 321)
* Assertion checking: Build Options. (line 332)
* Assignment functions <1>: Simultaneous Float Init & Assign.
(line 6)
* Assignment functions <2>: Assigning Floats. (line 6)
@ -2244,18 +2246,18 @@ Concept Index
* Build system: Build Options. (line 60)
* Building MPIR: Installing MPIR. (line 6)
* Bus error: Debugging. (line 7)
* C compiler: Build Options. (line 181)
* C++ compiler: Build Options. (line 253)
* C compiler: Build Options. (line 192)
* C++ compiler: Build Options. (line 264)
* C++ interface: C++ Class Interface. (line 6)
* C++ interface internals: C++ Interface Internals.
(line 6)
* C++ istream input: C++ Formatted Input. (line 6)
* C++ ostream output: C++ Formatted Output.
(line 6)
* C++ support: Build Options. (line 229)
* CC: Build Options. (line 181)
* CC_FOR_BUILD: Build Options. (line 216)
* CFLAGS: Build Options. (line 181)
* C++ support: Build Options. (line 240)
* CC: Build Options. (line 192)
* CC_FOR_BUILD: Build Options. (line 227)
* CFLAGS: Build Options. (line 192)
* Checker: Debugging. (line 112)
* checkergcc: Debugging. (line 119)
* Code organisation: Assembler Code Organisation.
@ -2281,14 +2283,14 @@ Concept Index
(line 6)
* Conversion functions: Converting Integers. (line 6)
* Copying conditions: Copying. (line 6)
* CPPFLAGS: Build Options. (line 207)
* CPPFLAGS: Build Options. (line 218)
* CPU types <1>: Build Options. (line 115)
* CPU types: Introduction to MPIR.
(line 24)
* Cross compiling: Build Options. (line 74)
* Custom allocation: Custom Allocation. (line 6)
* CXX: Build Options. (line 253)
* CXXFLAGS: Build Options. (line 253)
* CXX: Build Options. (line 264)
* CXXFLAGS: Build Options. (line 264)
* Cygwin: Notes for Particular Systems.
(line 34)
* Darwin: Known Build Problems.
@ -2305,18 +2307,18 @@ Concept Index
* Division functions: Integer Division. (line 6)
* DLLs: Notes for Particular Systems.
(line 73)
* DocBook: Build Options. (line 348)
* Documentation formats: Build Options. (line 341)
* DocBook: Build Options. (line 359)
* Documentation formats: Build Options. (line 352)
* Documentation license: GNU Free Documentation License.
(line 6)
* DVI: Build Options. (line 344)
* DVI: Build Options. (line 355)
* Efficiency: Efficiency. (line 6)
* Emacs: Emacs. (line 6)
* Exact division functions: Integer Division. (line 92)
* Exact remainder: Exact Remainder. (line 6)
* Exec prefix: Build Options. (line 32)
* Execution profiling <1>: Profiling. (line 6)
* Execution profiling: Build Options. (line 325)
* Execution profiling: Build Options. (line 336)
* Exponentiation functions <1>: Float Arithmetic. (line 34)
* Exponentiation functions: Integer Exponentiation.
(line 6)
@ -2332,7 +2334,7 @@ Concept Index
* Fast Fourier Transform: FFT Multiplication. (line 6)
* Fat binary: Build Options. (line 162)
* FFT multiplication <1>: FFT Multiplication. (line 6)
* FFT multiplication: Build Options. (line 316)
* FFT multiplication: Build Options. (line 327)
* Fibonacci number algorithm: Fibonacci Numbers Algorithm.
(line 6)
* Fibonacci sequence functions: Number Theoretic Functions.
@ -2546,7 +2548,7 @@ Concept Index
(line 6)
* mpirxx.h: C++ Interface General.
(line 8)
* MPN_PATH: Build Options. (line 329)
* MPN_PATH: Build Options. (line 340)
* MS Windows: Notes for Particular Systems.
(line 34)
* MS-DOS: Notes for Particular Systems.
@ -2591,14 +2593,14 @@ Concept Index
(line 6)
* Past GMP/MPIR versions: Compatibility with older versions.
(line 6)
* PDF: Build Options. (line 344)
* PDF: Build Options. (line 355)
* Perfect power algorithm: Perfect Power Algorithm.
(line 6)
* Perfect power functions: Integer Roots. (line 30)
* Perfect square algorithm: Perfect Square Algorithm.
(line 6)
* Perfect square functions: Integer Roots. (line 39)
* Postscript: Build Options. (line 344)
* Postscript: Build Options. (line 355)
* Powering algorithms: Powering Algorithms. (line 6)
* Powering functions <1>: Float Arithmetic. (line 34)
* Powering functions: Integer Exponentiation.
@ -2698,7 +2700,7 @@ Concept Index
(line 145)
* Stack backtrace: Debugging. (line 47)
* Stack overflow <1>: Debugging. (line 7)
* Stack overflow: Build Options. (line 277)
* Stack overflow: Build Options. (line 288)
* Static linking: Efficiency. (line 14)
* stdarg.h: Headers and Libraries.
(line 17)
@ -2707,8 +2709,8 @@ Concept Index
* Sun: ABI and ISA. (line 121)
* Systems: Notes for Particular Systems.
(line 6)
* Temporary memory: Build Options. (line 277)
* Texinfo: Build Options. (line 341)
* Temporary memory: Build Options. (line 288)
* Texinfo: Build Options. (line 352)
* Text input/output: Efficiency. (line 153)
* Thread safety: Reentrancy. (line 6)
* Toom multiplication <1>: Other Multiplication.
@ -2742,7 +2744,8 @@ Concept Index
(line 139)
* x87: Notes for Particular Systems.
(line 25)
* XML: Build Options. (line 348)
* XML: Build Options. (line 359)
* Yasm: Build Options. (line 181)

File: mpir.info, Node: Function Index, Prev: Concept Index, Up: Top

View File

@ -1,82 +0,0 @@
/* Generated by tuneup.c, 2012-10-23, gcc 4.1 */
#define MUL_KARATSUBA_THRESHOLD 14
#define MUL_TOOM3_THRESHOLD 98
#define MUL_TOOM4_THRESHOLD 154
#define MUL_TOOM8H_THRESHOLD 270
#define SQR_BASECASE_THRESHOLD 0 /* always (native) */
#define SQR_KARATSUBA_THRESHOLD 27
#define SQR_TOOM3_THRESHOLD 90
#define SQR_TOOM4_THRESHOLD 248
#define SQR_TOOM8_THRESHOLD 351
#define POWM_THRESHOLD 110
#define HGCD_THRESHOLD 31
#define GCD_DC_THRESHOLD 1502
#define GCDEXT_DC_THRESHOLD 1105
#define JACOBI_BASE_METHOD 1
#define DIVREM_1_NORM_THRESHOLD MP_SIZE_T_MAX /* never */
#define DIVREM_1_UNNORM_THRESHOLD MP_SIZE_T_MAX /* never */
#define MOD_1_NORM_THRESHOLD 0 /* always */
#define MOD_1_UNNORM_THRESHOLD 0 /* always */
#define USE_PREINV_DIVREM_1 1 /* native */
#define USE_PREINV_MOD_1 1
#define DIVEXACT_1_THRESHOLD 0 /* always */
#define MODEXACT_1_ODD_THRESHOLD 0 /* always (native) */
#define MOD_1_1_THRESHOLD 5
#define MOD_1_2_THRESHOLD 8
#define MOD_1_3_THRESHOLD 25
#define DIVREM_HENSEL_QR_1_THRESHOLD 7
#define RSH_DIVREM_HENSEL_QR_1_THRESHOLD 5
#define DIVREM_EUCLID_HENSEL_THRESHOLD 105
#define ROOTREM_THRESHOLD 6
#define GET_STR_DC_THRESHOLD 13
#define GET_STR_PRECOMPUTE_THRESHOLD 20
#define SET_STR_DC_THRESHOLD 6082
#define SET_STR_PRECOMPUTE_THRESHOLD 7122
#define MUL_FFT_FULL_THRESHOLD 2880
#define SQR_FFT_FULL_THRESHOLD 2880
#define MULLOW_BASECASE_THRESHOLD 7
#define MULLOW_DC_THRESHOLD 11
#define MULLOW_MUL_THRESHOLD 2416
#define MULHIGH_BASECASE_THRESHOLD 16
#define MULHIGH_DC_THRESHOLD 16
#define MULHIGH_MUL_THRESHOLD 2416
#define MULMOD_2EXPM1_THRESHOLD 14
#define FAC_UI_THRESHOLD 1430
#define DC_DIV_QR_THRESHOLD 100
#define DC_DIVAPPR_Q_N_THRESHOLD 71
#define INV_DIV_QR_THRESHOLD 465
#define INV_DIVAPPR_Q_N_THRESHOLD 71
#define DC_DIV_Q_THRESHOLD 102
#define INV_DIV_Q_THRESHOLD 3837
#define DC_DIVAPPR_Q_THRESHOLD 73
#define INV_DIVAPPR_Q_THRESHOLD 11836
#define DC_BDIV_QR_THRESHOLD 100
#define DC_BDIV_Q_THRESHOLD 11
/* fft_tuning -- autogenerated by tune-fft */
#define FFT_TAB \
{ { 4, 3 }, { 4, 3 }, { 3, 2 }, { 2, 1 }, { 1, 0 } }
#define MULMOD_TAB \
{ 4, 4, 3, 4, 4, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1 }
#define FFT_N_NUM 19
#define FFT_MULMOD_2EXPP1_CUTOFF 128
/* Tuneup completed successfully, took 158 seconds */

1910
gmp.h

File diff suppressed because it is too large Load Diff

View File

@ -1,633 +0,0 @@
/* longlong.h -- definitions for mixed size 32/64 bit arithmetic.
Copyright 1991, 1992, 1993, 1994, 1996, 1997, 1999, 2000, 2001, 2002, 2003,
2004, 2005 Free Software Foundation, Inc.
This file is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, 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 Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License
along with this file; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
MA 02110-1301, USA. */
/* You have to define the following before including this file:
UWtype -- An unsigned type, default type for operations (typically a "word")
UHWtype -- An unsigned type, at least half the size of UWtype.
UDWtype -- An unsigned type, at least twice as large a UWtype
W_TYPE_SIZE -- size in bits of UWtype
SItype, USItype -- Signed and unsigned 32 bit types.
DItype, UDItype -- Signed and unsigned 64 bit types.
On a 32 bit machine UWtype should typically be USItype;
on a 64 bit machine, UWtype should typically be UDItype.
*/
#define __BITS4 (W_TYPE_SIZE / 4)
#define __ll_B ((UWtype) 1 << (W_TYPE_SIZE / 2))
#define __ll_lowpart(t) ((UWtype) (t) & (__ll_B - 1))
#define __ll_highpart(t) ((UWtype) (t) >> (W_TYPE_SIZE / 2))
/* This is used to make sure no undesirable sharing between different libraries
that use this file takes place. */
#ifndef __MPN
#define __MPN(x) __##x
#endif
#ifndef _PROTO
#if (__STDC__-0) || defined (__cplusplus) || defined( _MSC_VER )
#define _PROTO(x) x
#else
#define _PROTO(x) ()
#endif
#endif
/* Define auxiliary asm macros.
1) umul_ppmm(high_prod, low_prod, multipler, multiplicand) multiplies two
UWtype integers MULTIPLER and MULTIPLICAND, and generates a two UWtype
word product in HIGH_PROD and LOW_PROD.
3) udiv_qrnnd(quotient, remainder, high_numerator, low_numerator,
denominator) divides a UDWtype, composed by the UWtype integers
HIGH_NUMERATOR and LOW_NUMERATOR, by DENOMINATOR and places the quotient
in QUOTIENT and the remainder in REMAINDER. HIGH_NUMERATOR must be less
than DENOMINATOR for correct operation. If, in addition, the most
significant bit of DENOMINATOR must be 1, then the pre-processor symbol
UDIV_NEEDS_NORMALIZATION is defined to 1.
4) sdiv_qrnnd(quotient, remainder, high_numerator, low_numerator,
denominator). Like udiv_qrnnd but the numbers are signed. The quotient
is rounded towards 0.
5) count_leading_zeros(count, x) counts the number of zero-bits from the
msb to the first non-zero bit in the UWtype X. This is the number of
steps X needs to be shifted left to set the msb. Undefined for X == 0,
unless the symbol COUNT_LEADING_ZEROS_0 is defined to some value.
6) count_trailing_zeros(count, x) like count_leading_zeros, but counts
from the least significant end.
7) add_ssaaaa(high_sum, low_sum, high_addend_1, low_addend_1,
high_addend_2, low_addend_2) adds two UWtype integers, composed by
HIGH_ADDEND_1 and LOW_ADDEND_1, and HIGH_ADDEND_2 and LOW_ADDEND_2
respectively. The result is placed in HIGH_SUM and LOW_SUM. Overflow
(i.e. carry out) is not stored anywhere, and is lost.
8) sub_ddmmss(high_difference, low_difference, high_minuend, low_minuend,
high_subtrahend, low_subtrahend) subtracts two two-word UWtype integers,
composed by HIGH_MINUEND_1 and LOW_MINUEND_1, and HIGH_SUBTRAHEND_2 and
LOW_SUBTRAHEND_2 respectively. The result is placed in HIGH_DIFFERENCE
and LOW_DIFFERENCE. Overflow (i.e. carry out) is not stored anywhere,
and is lost.
If any of these macros are left undefined for a particular CPU,
C macros are used.
Notes:
For add_ssaaaa the two high and two low addends can both commute, but
unfortunately gcc only supports one "%" commutative in each asm block.
This has always been so but is only documented in recent versions
(eg. pre-release 3.3). Having two or more "%"s can cause an internal
compiler error in certain rare circumstances.
Apparently it was only the last "%" that was ever actually respected, so
the code has been updated to leave just that. Clearly there's a free
choice whether high or low should get it, if there's a reason to favour
one over the other. Also obviously when the constraints on the two
operands are identical there's no benefit to the reloader in any "%" at
all.
*/
/* The CPUs come in alphabetical order below.
Please add support for more CPUs here, or improve the current support
for the CPUs below! */
/* count_leading_zeros_gcc_clz is count_leading_zeros implemented with gcc
3.4 __builtin_clzl or __builtin_clzll, according to our limb size.
Similarly count_trailing_zeros_gcc_ctz using __builtin_ctzl or
__builtin_ctzll.
These builtins are only used when we check what code comes out, on some
chips they're merely libgcc calls, where we will instead want an inline
in that case (either asm or generic C).
These builtins are better than an asm block of the same insn, since an
asm block doesn't give gcc any information about scheduling or resource
usage. We keep an asm block for use on prior versions of gcc though.
For reference, __builtin_ffs existed in gcc prior to __builtin_clz, but
it's not used (for count_leading_zeros) because it generally gives extra
code to ensure the result is 0 when the input is 0, which we don't need
or want. */
#ifdef _LONG_LONG_LIMB
#define count_leading_zeros_gcc_clz(count,x) \
do { \
ASSERT ((x) != 0); \
(count) = __builtin_clzll (x); \
} while (0)
#else
#define count_leading_zeros_gcc_clz(count,x) \
do { \
ASSERT ((x) != 0); \
(count) = __builtin_clzl (x); \
} while (0)
#endif
#ifdef _LONG_LONG_LIMB
#define count_trailing_zeros_gcc_ctz(count,x) \
do { \
ASSERT ((x) != 0); \
(count) = __builtin_ctzll (x); \
} while (0)
#else
#define count_trailing_zeros_gcc_ctz(count,x) \
do { \
ASSERT ((x) != 0); \
(count) = __builtin_ctzl (x); \
} while (0)
#endif
/* longlong.h -- definitions for mixed size 32/64 bit arithmetic.
Copyright 1991, 1992, 1993, 1994, 1996, 1997, 1999, 2000, 2001, 2002, 2003,
2004, 2005 Free Software Foundation, Inc.
Copyright 2013 William Hart
This file is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, 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 Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License
along with this file; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
MA 02110-1301, USA. */
#if defined(__ICL)
#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
__asm__ ("addq %5,%q1\n\tadcq %3,%q0" \
: "=r" (sh), "=&r" (sl) \
: "0" ((UDItype)(ah)), "rme" ((UDItype)(bh)), \
"%1" ((UDItype)(al)), "rme" ((UDItype)(bl)))
#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
__asm__ ("subq %5,%q1\n\tsbbq %3,%q0" \
: "=r" (sh), "=&r" (sl) \
: "0" ((UDItype)(ah)), "rme" ((UDItype)(bh)), \
"1" ((UDItype)(al)), "rme" ((UDItype)(bl)))
#define umul_ppmm(w1, w0, u, v) \
__asm__ ("mulq %3" \
: "=a" (w0), "=d" (w1) \
: "%0" ((UDItype)(u)), "rm" ((UDItype)(v)))
#define udiv_qrnnd(q, r, n1, n0, dx) /* d renamed to dx avoiding "=d" */\
__asm__ ("divq %4" /* stringification in K&R C */ \
: "=a" (q), "=d" (r) \
: "0" ((UDItype)(n0)), "1" ((UDItype)(n1)), "rm" ((UDItype)(dx)))
#define add_333(sh, sm, sl, ah, am, al, bh, bm, bl) \
__asm__ ("addq %8,%q2\n\tadcq %6,%q1\n\tadcq %4,%q0" \
: "=r" (sh), "=r" (sm), "=&r" (sl) \
: "0" ((UDItype)(ah)), "rme" ((UDItype)(bh)), \
"1" ((UDItype)(am)), "rme" ((UDItype)(bm)), \
"2" ((UDItype)(al)), "rme" ((UDItype)(bl)))
#define sub_333(sh, sm, sl, ah, am, al, bh, bm, bl) \
__asm__ ("subq %8,%q2\n\tsbbq %6,%q1\n\tsbbq %4,%q0" \
: "=r" (sh), "=r" (sm), "=&r" (sl) \
: "0" ((UDItype)(ah)), "rme" ((UDItype)(bh)), \
"1" ((UDItype)(am)), "rme" ((UDItype)(bm)), \
"2" ((UDItype)(al)), "rme" ((UDItype)(bl)))
/* bsrq destination must be a 64-bit register, hence UDItype for __cbtmp. */
#define count_leading_zeros(count, x) \
do { \
UDItype __cbtmp; \
ASSERT ((x) != 0); \
__asm__ ("bsrq %1,%0" : "=r" (__cbtmp) : "rm" ((UDItype)(x))); \
(count) = __cbtmp ^ 63; \
} while (0)
/* bsfq destination must be a 64-bit register, "%q0" forces this in case
count is only an int. */
#define count_trailing_zeros(count, x) \
do { \
ASSERT ((x) != 0); \
__asm__ ("bsfq %1,%q0" : "=r" (count) : "rm" ((UDItype)(x))); \
} while (0)
#endif
#if !defined(BSWAP_LIMB) && defined (__GNUC__)
#define BSWAP_LIMB(dst, src) \
do { \
__asm__ ("bswap %q0" : "=r" (dst) : "0" (src)); \
} while (0)
#endif
#if defined( _MSC_VER )
#include <intrin.h>
#if !defined( COUNT_LEADING_ZEROS_NEED_CLZ_TAB )
# define COUNT_LEADING_ZEROS_NEED_CLZ_TAB
#endif
#if defined( _WIN64 )
#if !defined(count_leading_zeros)
# pragma intrinsic(_BitScanReverse64)
# define count_leading_zeros(c,x) \
do { unsigned long _z; \
ASSERT ((x) != 0); \
_BitScanReverse64(&_z, (x)); \
c = 63 - _z; \
} while (0)
#endif
#if !defined(count_trailing_zeros)
# pragma intrinsic(_BitScanForward64)
# define count_trailing_zeros(c,x) \
do { unsigned long _z; \
ASSERT ((x) != 0); \
_BitScanForward64(&_z, (x)); \
c = _z; \
} while (0)
#endif
#if !defined(umul_ppmm)
# pragma intrinsic(_umul128)
# define umul_ppmm(xh, xl, m0, m1) \
do { \
xl = _umul128( (m0), (m1), &xh); \
} while (0)
#endif
#if !defined( BSWAP_LIMB )
# pragma intrinsic(_byteswap_uint64)
# define BSWAP_LIMB
# define BSWAP_LIMB(dst, src) dst = _byteswap_uint64(src)
#endif
#endif /* _WIN64 */
#if 0 /* trial re-definition of C versions */
#define add_333(sh, sm, sl, ah, am, al, bh, bm, bl) \
do { \
UWtype _cy; \
(sl) = (al) + (bl); \
_cy = (sl) < (bl) ? 1 : 0; \
(sm) = (am) + (bm) + _cy; \
_cy = (sm) < (bm) ? 1 : (sm) > (bm) ? 0 : _cy; \
(sh) = (ah) + (bh) + _cy; \
} while (0)
#define sub_333(sh, sm, sl, ah, am, al, bh, bm, bl) \
do { \
UWtype _bw; \
(sl) = (al) - (bl); \
_bw = (sl) > (al) ? 1 : 0; \
(sm) = (am) - (bm) - _bw; \
_bw = (sm) > (am) ? 1 : (sm) < (am) ? 0 : _bw; \
(sh) = (ah) - (bh) - _bw; \
} while (0)
#endif
#endif /* _MSC_VER */
/* longlong.h -- definitions for mixed size 32/64 bit arithmetic.
Copyright 1991, 1992, 1993, 1994, 1996, 1997, 1999, 2000, 2001, 2002, 2003,
2004, 2005 Free Software Foundation, Inc.
Copyright 2013 William Hart
This file is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, 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 Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public License
along with this file; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
MA 02110-1301, USA. */
/* You have to define the following before including this file:
UWtype -- An unsigned type, default type for operations (typically a "word")
UHWtype -- An unsigned type, at least half the size of UWtype.
UDWtype -- An unsigned type, at least twice as large a UWtype
W_TYPE_SIZE -- size in bits of UWtype
SItype, USItype -- Signed and unsigned 32 bit types.
DItype, UDItype -- Signed and unsigned 64 bit types.
On a 32 bit machine UWtype should typically be USItype;
on a 64 bit machine, UWtype should typically be UDItype.
*/
/* Use mpn_umul_ppmm or mpn_udiv_qrnnd functions, if they exist. The "_r"
forms have "reversed" arguments, meaning the pointer is last, which
sometimes allows better parameter passing, in particular on 64-bit
hppa. */
#define mpn_umul_ppmm __MPN(umul_ppmm)
extern UWtype mpn_umul_ppmm _PROTO ((UWtype *, UWtype, UWtype));
#if ! defined (umul_ppmm) && HAVE_NATIVE_mpn_umul_ppmm \
&& ! defined (LONGLONG_STANDALONE)
#define umul_ppmm(wh, wl, u, v) \
do { \
UWtype __umul_ppmm__p0; \
(wh) = mpn_umul_ppmm (&__umul_ppmm__p0, (UWtype) (u), (UWtype) (v)); \
(wl) = __umul_ppmm__p0; \
} while (0)
#endif
#define mpn_umul_ppmm_r __MPN(umul_ppmm_r)
extern UWtype mpn_umul_ppmm_r _PROTO ((UWtype, UWtype, UWtype *));
#if ! defined (umul_ppmm) && HAVE_NATIVE_mpn_umul_ppmm_r \
&& ! defined (LONGLONG_STANDALONE)
#define umul_ppmm(wh, wl, u, v) \
do { \
UWtype __umul_ppmm__p0; \
(wh) = mpn_umul_ppmm_r ((UWtype) (u), (UWtype) (v), &__umul_ppmm__p0); \
(wl) = __umul_ppmm__p0; \
} while (0)
#endif
#define mpn_udiv_qrnnd __MPN(udiv_qrnnd)
extern UWtype mpn_udiv_qrnnd _PROTO ((UWtype *, UWtype, UWtype, UWtype));
#if ! defined (udiv_qrnnd) && HAVE_NATIVE_mpn_udiv_qrnnd \
&& ! defined (LONGLONG_STANDALONE)
#define udiv_qrnnd(q, r, n1, n0, d) \
do { \
UWtype __udiv_qrnnd__r; \
(q) = mpn_udiv_qrnnd (&__udiv_qrnnd__r, \
(UWtype) (n1), (UWtype) (n0), (UWtype) d); \
(r) = __udiv_qrnnd__r; \
} while (0)
#endif
#define mpn_udiv_qrnnd_r __MPN(udiv_qrnnd_r)
extern UWtype mpn_udiv_qrnnd_r _PROTO ((UWtype, UWtype, UWtype, UWtype *));
#if ! defined (udiv_qrnnd) && HAVE_NATIVE_mpn_udiv_qrnnd_r \
&& ! defined (LONGLONG_STANDALONE)
#define udiv_qrnnd(q, r, n1, n0, d) \
do { \
UWtype __udiv_qrnnd__r; \
(q) = mpn_udiv_qrnnd_r ((UWtype) (n1), (UWtype) (n0), (UWtype) d, \
&__udiv_qrnnd__r); \
(r) = __udiv_qrnnd__r; \
} while (0)
#endif
/* If this machine has no inline assembler, use C macros. */
#if !defined (add_ssaaaa)
#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
do { \
UWtype __x; \
__x = (al) + (bl); \
(sh) = (ah) + (bh) + (__x < (al)); \
(sl) = __x; \
} while (0)
#endif
#if !defined (sub_ddmmss)
#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
do { \
UWtype __x; \
__x = (al) - (bl); \
(sh) = (ah) - (bh) - ((al) < (bl)); \
(sl) = __x; \
} while (0)
#endif
#if !defined (add_333)
#define add_333(sh, sm, sl, ah, am, al, bh, bm, bl) \
do { \
UWtype __cy1, __cy2; \
__cy1 = ((al) + (bl) < (al)); \
(sl) = (al) + (bl); \
__cy2 = ((am) + (bm) < (am)); \
(sm) = (am) + (bm); \
__cy2 += ((sm) + __cy1 < (sm)); \
(sm) = (sm) + __cy1; \
(sh) = (ah) + (bh) + __cy2; \
} while (0)
#endif
#if !defined(sub_333)
#define sub_333(sh, sm, sl, ah, am, al, bh, bm, bl) \
do { \
UWtype __cy1, __cy2; \
__cy1 = ((al) < (bl)); \
(sl) = (al) - (bl); \
__cy2 = ((am) < (bm)); \
(sm) = (am) - (bm); \
__cy2 += ((sm) < __cy1); \
(sm) = (sm) - __cy1; \
(sh) = (ah) - (bh) - __cy2; \
} while (0)
#endif
/* If we lack umul_ppmm but have smul_ppmm, define umul_ppmm in terms of
smul_ppmm. */
#if !defined (umul_ppmm) && defined (smul_ppmm)
#define umul_ppmm(w1, w0, u, v) \
do { \
UWtype __w1; \
UWtype __xm0 = (u), __xm1 = (v); \
smul_ppmm (__w1, w0, __xm0, __xm1); \
(w1) = __w1 + (-(__xm0 >> (W_TYPE_SIZE - 1)) & __xm1) \
+ (-(__xm1 >> (W_TYPE_SIZE - 1)) & __xm0); \
} while (0)
#endif
/* If we still don't have umul_ppmm, define it using plain C.
For reference, when this code is used for squaring (ie. u and v identical
expressions), gcc recognises __x1 and __x2 are the same and generates 3
multiplies, not 4. The subsequent additions could be optimized a bit,
but the only place GMP currently uses such a square is mpn_sqr_basecase,
and chips obliged to use this generic C umul will have plenty of worse
performance problems than a couple of extra instructions on the diagonal
of sqr_basecase. */
#if !defined (umul_ppmm)
#define umul_ppmm(w1, w0, u, v) \
do { \
UWtype __x0, __x1, __x2, __x3; \
UHWtype __ul, __vl, __uh, __vh; \
UWtype __u = (u), __v = (v); \
\
__ul = __ll_lowpart (__u); \
__uh = __ll_highpart (__u); \
__vl = __ll_lowpart (__v); \
__vh = __ll_highpart (__v); \
\
__x0 = (UWtype) __ul * __vl; \
__x1 = (UWtype) __ul * __vh; \
__x2 = (UWtype) __uh * __vl; \
__x3 = (UWtype) __uh * __vh; \
\
__x1 += __ll_highpart (__x0);/* this can't give carry */ \
__x1 += __x2; /* but this indeed can */ \
if (__x1 < __x2) /* did we get it? */ \
__x3 += __ll_B; /* yes, add it in the proper pos. */ \
\
(w1) = __x3 + __ll_highpart (__x1); \
(w0) = (__x1 << W_TYPE_SIZE/2) + __ll_lowpart (__x0); \
} while (0)
#endif
/* If we don't have smul_ppmm, define it using umul_ppmm (which surely will
exist in one form or another. */
#if !defined (smul_ppmm)
#define smul_ppmm(w1, w0, u, v) \
do { \
UWtype __w1; \
UWtype __xm0 = (u), __xm1 = (v); \
umul_ppmm (__w1, w0, __xm0, __xm1); \
(w1) = __w1 - (-(__xm0 >> (W_TYPE_SIZE - 1)) & __xm1) \
- (-(__xm1 >> (W_TYPE_SIZE - 1)) & __xm0); \
} while (0)
#endif
/* Define this unconditionally, so it can be used for debugging. */
#define __udiv_qrnnd_c(q, r, n1, n0, d) \
do { \
UWtype __d1, __d0, __q1, __q0, __r1, __r0, __m; \
\
ASSERT ((d) != 0); \
ASSERT ((n1) < (d)); \
\
__d1 = __ll_highpart (d); \
__d0 = __ll_lowpart (d); \
\
__q1 = (n1) / __d1; \
__r1 = (n1) - __q1 * __d1; \
__m = __q1 * __d0; \
__r1 = __r1 * __ll_B | __ll_highpart (n0); \
if (__r1 < __m) \
{ \
__q1--, __r1 += (d); \
if (__r1 >= (d)) /* i.e. we didn't get carry when adding to __r1 */\
if (__r1 < __m) \
__q1--, __r1 += (d); \
} \
__r1 -= __m; \
\
__q0 = __r1 / __d1; \
__r0 = __r1 - __q0 * __d1; \
__m = __q0 * __d0; \
__r0 = __r0 * __ll_B | __ll_lowpart (n0); \
if (__r0 < __m) \
{ \
__q0--, __r0 += (d); \
if (__r0 >= (d)) \
if (__r0 < __m) \
__q0--, __r0 += (d); \
} \
__r0 -= __m; \
\
(q) = __q1 * __ll_B | __q0; \
(r) = __r0; \
} while (0)
/* If the processor has no udiv_qrnnd but sdiv_qrnnd, go through
__udiv_w_sdiv (defined in libgcc or elsewhere). */
#if !defined (udiv_qrnnd) && defined (sdiv_qrnnd)
#define udiv_qrnnd(q, r, nh, nl, d) \
do { \
UWtype __r; \
(q) = __MPN(udiv_w_sdiv) (&__r, nh, nl, d); \
(r) = __r; \
} while (0)
#endif
/* If udiv_qrnnd was not defined for this processor, use __udiv_qrnnd_c. */
#if !defined (udiv_qrnnd)
#define UDIV_NEEDS_NORMALIZATION 1
#define udiv_qrnnd __udiv_qrnnd_c
#endif
#if !defined (count_leading_zeros)
#define count_leading_zeros(count, x) \
do { \
UWtype __xr = (x); \
UWtype __a; \
\
if (W_TYPE_SIZE == 32) \
{ \
__a = __xr < ((UWtype) 1 << 2*__BITS4) \
? (__xr < ((UWtype) 1 << __BITS4) ? 1 : __BITS4 + 1) \
: (__xr < ((UWtype) 1 << 3*__BITS4) ? 2*__BITS4 + 1 \
: 3*__BITS4 + 1); \
} \
else \
{ \
for (__a = W_TYPE_SIZE - 8; __a > 0; __a -= 8) \
if (((__xr >> __a) & 0xff) != 0) \
break; \
++__a; \
} \
\
(count) = W_TYPE_SIZE + 1 - __a - __clz_tab[__xr >> __a]; \
} while (0)
/* This version gives a well-defined value for zero. */
#define COUNT_LEADING_ZEROS_0 (W_TYPE_SIZE - 1)
#define COUNT_LEADING_ZEROS_NEED_CLZ_TAB
#endif
#ifdef COUNT_LEADING_ZEROS_NEED_CLZ_TAB
extern const unsigned char __GMP_DECLSPEC __clz_tab[128];
#endif
#if !defined (count_trailing_zeros)
/* Define count_trailing_zeros using count_leading_zeros. The latter might be
defined in asm, but if it is not, the C version above is good enough. */
#define count_trailing_zeros(count, x) \
do { \
UWtype __ctz_x = (x); \
UWtype __ctz_c; \
ASSERT (__ctz_x != 0); \
count_leading_zeros (__ctz_c, __ctz_x & -__ctz_x); \
(count) = W_TYPE_SIZE - 1 - __ctz_c; \
} while (0)
#endif
#ifndef UDIV_NEEDS_NORMALIZATION
#define UDIV_NEEDS_NORMALIZATION 0
#endif
/* Whether udiv_qrnnd is actually implemented with udiv_qrnnd_preinv, and
that hence the latter should always be used. */
#ifndef UDIV_PREINV_ALWAYS
#define UDIV_PREINV_ALWAYS 0
#endif

1407
yasm/config/config.guess vendored

File diff suppressed because it is too large Load Diff

1504
yasm/config/config.sub vendored

File diff suppressed because it is too large Load Diff

View File

@ -1,10 +1,10 @@
s/"\([^"]*\)"/“\1”/g
s/`\([^`']*\)'/\1/g
s/ '\([^`']*\)' / \1 /g
s/ '\([^`']*\)'$/ \1/g
s/^'\([^`']*\)' /\1 /g
s/“”/""/g
s///g
s//”/g
s///g
s///g
s/"\([^"]*\)"/“\1”/g
s/`\([^`']*\)'/\1/g
s/ '\([^`']*\)' / \1 /g
s/ '\([^`']*\)'$/ \1/g
s/^'\([^`']*\)' /\1 /g
s/“”/""/g
s///g
s//”/g
s///g
s///g

View File

@ -1,6 +1,6 @@
s/"\([^"]*\)"/“\1”/g
s/`\([^`']*\)'/\1/g
s/ '\([^`']*\)' / \1 /g
s/ '\([^`']*\)'$/ \1/g
s/^'\([^`']*\)' /\1 /g
s/“”/""/g
s/"\([^"]*\)"/“\1”/g
s/`\([^`']*\)'/\1/g
s/ '\([^`']*\)' / \1 /g
s/ '\([^`']*\)'$/ \1/g
s/^'\([^`']*\)' /\1 /g
s/“”/""/g