changed: small optimization in ttmath_subindexed_x64()
(asm for x86_64 on MS VC) changed: removed some MS VC warnings changed: if TTMATH_DEBUG_LOG is defined then UInt::UInt() constructor fills the table with special values added: macro: TTMATH_BITS(min_bits) which returns the number of machine words capable to hold min_bits bits git-svn-id: svn://ttmath.org/publicrep/ttmath/trunk@201 e52654a7-88a9-db11-a3e9-0013d4bc506e
This commit is contained in:
parent
01a86e40d9
commit
4c0d8c26ff
|
@ -1,4 +1,4 @@
|
|||
Version 0.9.0 prerelease (2009.09.13):
|
||||
Version 0.9.0 prerelease (2009.09.20):
|
||||
* fixed: Big::operator>>(std::istream&, Big<> &) didn't recognize values
|
||||
in scientific mode (with 'e' character)
|
||||
* added: support for wide characters (wchar_t, std::wstring)
|
||||
|
@ -25,6 +25,9 @@ Version 0.9.0 prerelease (2009.09.13):
|
|||
Big::SetInfoBit(unsigned char)
|
||||
Big::IsInfoBit(unsigned char)
|
||||
some methods for manipulating the info flags
|
||||
* added: macro: TTMATH_BITS(min_bits)
|
||||
which returns the number of machine words
|
||||
capable to hold min_bits bits
|
||||
* changed: Factorial() is using the Gamma() function now
|
||||
* changed: Big::Div(ss2)
|
||||
Big::Mod(ss2)
|
||||
|
|
|
@ -46,10 +46,13 @@
|
|||
*/
|
||||
|
||||
#ifdef _MSC_VER
|
||||
//warning C4127: conditional expression is constant
|
||||
#pragma warning( disable: 4127 )
|
||||
//warning C4127: conditional expression is constant
|
||||
#pragma warning( disable: 4702 )
|
||||
//warning C4702: unreachable code
|
||||
#endif
|
||||
|
||||
|
||||
#include "ttmathbig.h"
|
||||
#include "ttmathobjects.h"
|
||||
|
||||
|
@ -2788,6 +2791,8 @@ namespace ttmath
|
|||
#ifdef _MSC_VER
|
||||
#pragma warning( default: 4127 )
|
||||
//warning C4127: conditional expression is constant
|
||||
#pragma warning( disable: 4702 )
|
||||
//warning C4702: unreachable code
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
@ -157,6 +157,13 @@ namespace ttmath
|
|||
*/
|
||||
#define TTMATH_BUILTIN_VARIABLES_SIZE 256u
|
||||
|
||||
/*!
|
||||
this macro returns the number of machine words
|
||||
capable to hold min_bits bits
|
||||
e.g. TTMATH_BITS(128) returns 4
|
||||
*/
|
||||
#define TTMATH_BITS(min_bits) ((min_bits-1)/32 + 1)
|
||||
|
||||
#else
|
||||
|
||||
/*!
|
||||
|
@ -203,6 +210,13 @@ namespace ttmath
|
|||
*/
|
||||
#define TTMATH_BUILTIN_VARIABLES_SIZE 128ul
|
||||
|
||||
/*!
|
||||
this macro returns the number of machine words
|
||||
capable to hold min_bits bits
|
||||
e.g. TTMATH_BITS(128) returns 2
|
||||
*/
|
||||
#define TTMATH_BITS(min_bits) ((min_bits-1)/64 + 1)
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -279,6 +293,7 @@ namespace ttmath
|
|||
|
||||
|
||||
|
||||
|
||||
namespace ttmath
|
||||
{
|
||||
|
||||
|
|
|
@ -2594,6 +2594,18 @@ public:
|
|||
*/
|
||||
UInt()
|
||||
{
|
||||
// when macro TTMATH_DEBUG_LOG is defined
|
||||
// we set special values to the table
|
||||
// in order to be everywhere the same value of the UInt object
|
||||
#ifdef TTMATH_DEBUG_LOG
|
||||
#ifdef TTMATH_PLATFORM32
|
||||
for(uint i=0 ; i<value_size ; ++i)
|
||||
table[i] = 0xc1c1c1c1;
|
||||
#else
|
||||
for(uint i=0 ; i<value_size ; ++i)
|
||||
table[i] = 0xc1c1c1c1c1c1c1c1;
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -390,7 +390,7 @@ namespace ttmath
|
|||
|
||||
#endif
|
||||
|
||||
TTMATH_LOG("UInt::AddVector")
|
||||
// TTMATH_LOG("UInt::AddVector")
|
||||
|
||||
return c;
|
||||
}
|
||||
|
@ -613,7 +613,7 @@ namespace ttmath
|
|||
|
||||
#endif
|
||||
|
||||
TTMATH_LOG("UInt::SubVector")
|
||||
// TTMATH_LOG("UInt::SubVector")
|
||||
|
||||
return c;
|
||||
}
|
||||
|
|
|
@ -44,11 +44,11 @@
|
|||
PUBLIC ttmath_adc_x64
|
||||
PUBLIC ttmath_addindexed_x64
|
||||
PUBLIC ttmath_addindexed2_x64
|
||||
PUBLIC ttmath_addvector_x64
|
||||
PUBLIC ttmath_addvector_x64
|
||||
|
||||
PUBLIC ttmath_sbb_x64
|
||||
PUBLIC ttmath_subindexed_x64
|
||||
PUBLIC ttmath_subvector_x64
|
||||
PUBLIC ttmath_subvector_x64
|
||||
|
||||
PUBLIC ttmath_rcl_x64
|
||||
PUBLIC ttmath_rcr_x64
|
||||
|
@ -58,6 +58,8 @@ PUBLIC ttmath_rcr2_x64
|
|||
|
||||
PUBLIC ttmath_div_x64
|
||||
|
||||
;
|
||||
; Microsoft x86_64 convention: http://msdn.microsoft.com/en-us/library/9b372w95.aspx
|
||||
;
|
||||
; "rax, rcx, rdx, r8-r11 are volatile."
|
||||
; "rbx, rbp, rdi, rsi, r12-r15 are nonvolatile."
|
||||
|
@ -289,16 +291,14 @@ loop1:
|
|||
mov r9, 1
|
||||
dec rdx
|
||||
jnz loop1
|
||||
jc return_1 ; most of the times, there will be NO carry (I hope)
|
||||
|
||||
mov rax, 1
|
||||
ret
|
||||
|
||||
done:
|
||||
xor rax, rax
|
||||
ret
|
||||
|
||||
return_1:
|
||||
mov rax, 1
|
||||
ret
|
||||
|
||||
ttmath_subindexed_x64 ENDP
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue