diff options
Diffstat (limited to 'common/quicktime_win32/vBigNum.h')
| -rw-r--r-- | common/quicktime_win32/vBigNum.h | 1407 |
1 files changed, 1407 insertions, 0 deletions
diff --git a/common/quicktime_win32/vBigNum.h b/common/quicktime_win32/vBigNum.h new file mode 100644 index 0000000..0a526f4 --- /dev/null +++ b/common/quicktime_win32/vBigNum.h @@ -0,0 +1,1407 @@ +/* + File: vBigNum.h + + Contains: Algebraic and logical operations on large operands. + + Version: QuickTime 7.3 + + Copyright: (c) 2007 (c) 1999-2001 by Apple Computer, Inc., all rights reserved. + + Bugs?: For bug reports, consult the following page on + the World Wide Web: + + http://developer.apple.com/bugreporter/ + +*/ +#ifndef __VBIGNUM__ +#define __VBIGNUM__ + +#ifndef __CONDITIONALMACROS__ +#include <ConditionalMacros.h> +#endif + + + +#if PRAGMA_ONCE +#pragma once +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#if PRAGMA_IMPORT +#pragma import on +#endif + +#if PRAGMA_STRUCT_ALIGN + #pragma options align=mac68k +#elif PRAGMA_STRUCT_PACKPUSH + #pragma pack(push, 2) +#elif PRAGMA_STRUCT_PACK + #pragma pack(2) +#endif + +#ifdef __VEC__ +/************************************************************************************ +* * +* This library provides a set of subroutines for basic algebraic and some logical * +* operations performed on operands with the following sizes: * +* * +* 128 - bits * +* 256 - bits * +* 512 - bits * +* 1024 - bits * +* * +* Following basic and algebraic operations are included: * +* * +* Addition * +* Subtraction * +* Multiplication * +* Division * +* Mod * +* Shift Right * +* Shift Right Arithmatic * +* Shift Left * +* Rotate Right * +* Rotate Left * +* * +* * +************************************************************************************/ +/*********************************************************************************** +* Following abbreviations are used in the names of functions in this library: * +* * +* v Vector * +* U Unsigned * +* S Signed * +* 128 128 - bit * +* 256 256 - bit * +* 512 512 - bit * +* 1024 1024 - bit * +* Add Addition, modular arithmetic * +* AddS Addition with Saturation * +* Sub Subtraction, modular arithmetic * +* SubS Subtraction with Saturation * +* Multiply Multiplication * +* Divide Division * +* Half Half (multiplication, width of result is the same as width of * +* operands) * +* Full Full (multiplication, width of result is twice width of each * +* operand) * +* * +* Mod Modular operation * +* Neg Negate a number * +* A Algebraic * +* LL Logical Left * +* LR Logical Right * +* Shift Shift * +* Rotate Rotation * +* * +***********************************************************************************/ +/************************************************************************************ +* * +* A few explanations for the choices made in naming, passing arguments, and * +* various functions. * +* * +* 1) Names for the functions are made compatible with the names used in the * +* vBasicOps library. The format of the names are the same and include a * +* designation to show a vector operation, then a symbol for the type of data * +* (signed or unsigned), followed by the size of operands, then the operation * +* performed. * +* * +* 2) Note that the logical and arithmetic shiftLeft operation are the same. * +* * +* 3) Rotate operation is performed on unsigned and signed numbers. * +* * +************************************************************************************/ + +/************************************************************************************ +* * +* Following are a set of structures for vector data types and scalar data types * +* * +************************************************************************************/ + +union vU128 { + vector unsigned int v; + struct { + unsigned long MSW; + unsigned long d2; + unsigned long d3; + unsigned long LSW; + } s; +}; +typedef union vU128 vU128; +union vS128 { + vector unsigned int v; + struct { + signed long MSW; + unsigned long d2; + unsigned long d3; + unsigned long LSW; + } s; +}; +typedef union vS128 vS128; +union vU256 { + vector unsigned int v[2]; + struct { + unsigned long MSW; + unsigned long d2; + unsigned long d3; + unsigned long d4; + unsigned long d5; + unsigned long d6; + unsigned long d7; + unsigned long LSW; + } s; +}; +typedef union vU256 vU256; +union vS256 { + vector unsigned int v[2]; + struct { + signed long MSW; + unsigned long d2; + unsigned long d3; + unsigned long d4; + unsigned long d5; + unsigned long d6; + unsigned long d7; + unsigned long LSW; + } s; +}; +typedef union vS256 vS256; +union vU512 { + vector unsigned int v[4]; + struct { + unsigned long MSB; + unsigned long d2; + unsigned long d3; + unsigned long d4; + unsigned long d5; + unsigned long d6; + unsigned long d7; + unsigned long d8; + unsigned long d9; + unsigned long d10; + unsigned long d11; + unsigned long d12; + unsigned long d13; + unsigned long d14; + unsigned long d15; + unsigned long LSB; + } s; +}; +typedef union vU512 vU512; +union vS512 { + vector unsigned int v[4]; + struct { + signed long MSW; + unsigned long d2; + unsigned long d3; + unsigned long d4; + unsigned long d5; + unsigned long d6; + unsigned long d7; + unsigned long d8; + unsigned long d9; + unsigned long d10; + unsigned long d11; + unsigned long d12; + unsigned long d13; + unsigned long d14; + unsigned long d15; + unsigned long LSW; + } s; +}; +typedef union vS512 vS512; +union vU1024 { + vector unsigned int v[8]; + struct { + unsigned long MSW; + unsigned long d2; + unsigned long d3; + unsigned long d4; + unsigned long d5; + unsigned long d6; + unsigned long d7; + unsigned long d8; + unsigned long d9; + unsigned long d10; + unsigned long d11; + unsigned long d12; + unsigned long d13; + unsigned long d14; + unsigned long d15; + unsigned long d16; + unsigned long d17; + unsigned long d18; + unsigned long d19; + unsigned long d20; + unsigned long d21; + unsigned long d22; + unsigned long d23; + unsigned long d24; + unsigned long d25; + unsigned long d26; + unsigned long d27; + unsigned long d28; + unsigned long d29; + unsigned long d30; + unsigned long d31; + unsigned long LSW; + } s; +}; +typedef union vU1024 vU1024; +union vS1024 { + vector unsigned int v[8]; + struct { + signed long MSW; + unsigned long d2; + unsigned long d3; + unsigned long d4; + unsigned long d5; + unsigned long d6; + unsigned long d7; + unsigned long d8; + unsigned long d9; + unsigned long d10; + unsigned long d11; + unsigned long d12; + unsigned long d13; + unsigned long d14; + unsigned long d15; + unsigned long d16; + unsigned long d17; + unsigned long d18; + unsigned long d19; + unsigned long d20; + unsigned long d21; + unsigned long d22; + unsigned long d23; + unsigned long d24; + unsigned long d25; + unsigned long d26; + unsigned long d27; + unsigned long d28; + unsigned long d29; + unsigned long d30; + unsigned long d31; + unsigned long LSW; + } s; +}; +typedef union vS1024 vS1024; + +/************************************************************************************ +* * +* Division operations * +* * +************************************************************************************/ + + +/* + * vU256Divide() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vU256Divide( + const vU256 * numerator, + const vU256 * divisor, + vU256 * result, + vU256 * remainder); + + +/* + * vS256Divide() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vS256Divide( + const vS256 * numerator, + const vS256 * divisor, + vS256 * result, + vS256 * remainder); + + +/* + * vU512Divide() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vU512Divide( + const vU512 * numerator, + const vU512 * divisor, + vU512 * result, + vU512 * remainder); + + +/* + * vS512Divide() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vS512Divide( + const vS512 * numerator, + const vS512 * divisor, + vS512 * result, + vS512 * remainder); + + +/* + * vU1024Divide() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vU1024Divide( + const vU1024 * numerator, + const vU1024 * divisor, + vU1024 * result, + vU1024 * remainder); + + +/* + * vS1024Divide() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vS1024Divide( + const vS1024 * numerator, + const vS1024 * divisor, + vS1024 * result, + vS1024 * remainder); + + + +/************************************************************************************ +* * +* Multiply operations * +* * +************************************************************************************/ + +/* + * vU128FullMultiply() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vU128FullMultiply( + const vU128 * a, + const vU128 * b, + vU256 * result); + + +/* + * vS128FullMultiply() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vS128FullMultiply( + const vS128 * a, + const vS128 * b, + vS256 * result); + + +/* + * vU256FullMultiply() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vU256FullMultiply( + const vU256 * a, + const vU256 * b, + vU512 * result); + + +/* + * vS256FullMultiply() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vS256FullMultiply( + const vS256 * a, + const vS256 * b, + vS512 * result); + + +/* + * vU512FullMultiply() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vU512FullMultiply( + const vU512 * a, + const vU512 * b, + vU1024 * result); + + +/* + * vS512FullMultiply() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vS512FullMultiply( + const vS512 * a, + const vS512 * b, + vS1024 * result); + + +/* + * vU256HalfMultiply() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vU256HalfMultiply( + const vU256 * a, + const vU256 * b, + vU256 * result); + + +/* + * vS256HalfMultiply() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vS256HalfMultiply( + const vS256 * a, + const vS256 * b, + vS256 * result); + + +/* + * vU512HalfMultiply() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vU512HalfMultiply( + const vU512 * a, + const vU512 * b, + vU512 * result); + + +/* + * vS512HalfMultiply() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vS512HalfMultiply( + const vS512 * a, + const vS512 * b, + vS512 * result); + + +/* + * vU1024HalfMultiply() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vU1024HalfMultiply( + const vU1024 * a, + const vU1024 * b, + vU1024 * result); + + +/* + * vS1024HalfMultiply() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vS1024HalfMultiply( + const vS1024 * a, + const vS1024 * b, + vS1024 * result); + + + +/************************************************************************************ +* * +* Subtraction operations * +* * +************************************************************************************/ + +/* + * vU256Sub() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vU256Sub( + const vU256 * a, + const vU256 * b, + vU256 * result); + + +/* + * vS256Sub() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vS256Sub( + const vS256 * a, + const vS256 * b, + vS256 * result); + + +/* + * vU256SubS() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vU256SubS( + const vU256 * a, + const vU256 * b, + vU256 * result); + + +/* + * vS256SubS() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vS256SubS( + const vS256 * a, + const vS256 * b, + vS256 * result); + + +/* + * vU512Sub() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vU512Sub( + const vU512 * a, + const vU512 * b, + vU512 * result); + + +/* + * vS512Sub() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vS512Sub( + const vS512 * a, + const vS512 * b, + vS512 * result); + + +/* + * vU512SubS() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vU512SubS( + const vU512 * a, + const vU512 * b, + vU512 * result); + + +/* + * vS512SubS() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vS512SubS( + const vS512 * a, + const vS512 * b, + vS512 * result); + + +/* + * vU1024Sub() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vU1024Sub( + const vU1024 * a, + const vU1024 * b, + vU1024 * result); + + +/* + * vS1024Sub() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vS1024Sub( + const vS1024 * a, + const vS1024 * b, + vS1024 * result); + + +/* + * vU1024SubS() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vU1024SubS( + const vU1024 * a, + const vU1024 * b, + vU1024 * result); + + +/* + * vS1024SubS() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vS1024SubS( + const vS1024 * a, + const vS1024 * b, + vS1024 * result); + + + +/************************************************************************************ +* * +* Negate operations * +* * +************************************************************************************/ + +/* + * vU256Neg() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vU256Neg( + const vU256 * a, + vU256 * result); + + +/* + * vS256Neg() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vS256Neg( + const vS256 * a, + vS256 * result); + + +/* + * vU512Neg() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vU512Neg( + const vU512 * a, + vU512 * result); + + +/* + * vS512Neg() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vS512Neg( + const vS512 * a, + vS512 * result); + + +/* + * vU1024Neg() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vU1024Neg( + const vU1024 * a, + vU1024 * result); + + +/* + * vS1024Neg() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vS1024Neg( + const vS1024 * a, + vS1024 * result); + + + +/************************************************************************************ +* * +* Addition operations * +* * +************************************************************************************/ + +/* + * vU256Add() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vU256Add( + const vU256 * a, + const vU256 * b, + vU256 * result); + + +/* + * vS256Add() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vS256Add( + const vS256 * a, + const vS256 * b, + vS256 * result); + + +/* + * vU256AddS() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vU256AddS( + const vU256 * a, + const vU256 * b, + vU256 * result); + + +/* + * vS256AddS() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vS256AddS( + const vS256 * a, + const vS256 * b, + vS256 * result); + + +/* + * vU512Add() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vU512Add( + const vU512 * a, + const vU512 * b, + vU512 * result); + + +/* + * vS512Add() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vS512Add( + const vS512 * a, + const vS512 * b, + vS512 * result); + + +/* + * vU512AddS() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vU512AddS( + const vU512 * a, + const vU512 * b, + vU512 * result); + + +/* + * vS512AddS() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vS512AddS( + const vS512 * a, + const vS512 * b, + vS512 * result); + + +/* + * vU1024Add() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vU1024Add( + const vU1024 * a, + const vU1024 * b, + vU1024 * result); + + +/* + * vS1024Add() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vS1024Add( + const vS1024 * a, + const vS1024 * b, + vS1024 * result); + + +/* + * vU1024AddS() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vU1024AddS( + const vU1024 * a, + const vU1024 * b, + vU1024 * result); + + +/* + * vS1024AddS() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vS1024AddS( + const vS1024 * a, + const vS1024 * b, + vS1024 * result); + + + +/************************************************************************************ +* * +* Mod operations * +* * +************************************************************************************/ + +/* + * vU256Mod() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vU256Mod( + const vU256 * numerator, + const vU256 * divisor, + vU256 * remainder); + + +/* + * vS256Mod() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vS256Mod( + const vS256 * numerator, + const vS256 * divisor, + vS256 * remainder); + + +/* + * vU512Mod() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vU512Mod( + const vU512 * numerator, + const vU512 * divisor, + vU512 * remainder); + + +/* + * vS512Mod() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vS512Mod( + const vS512 * numerator, + const vS512 * divisor, + vS512 * remainder); + + +/* + * vU1024Mod() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vU1024Mod( + const vU1024 * numerator, + const vU1024 * divisor, + vU1024 * remainder); + + +/* + * vS1024Mod() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vS1024Mod( + const vS1024 * numerator, + const vS1024 * divisor, + vS1024 * remainder); + + + +/************************************************************************************ +* * +* Shift operations * +* * +************************************************************************************/ + +/* + * vLL256Shift() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vLL256Shift( + const vU256 * a, + unsigned long shiftAmount, + vU256 * result); + + +/* + * vLL512Shift() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vLL512Shift( + const vU512 * a, + unsigned long shiftAmount, + vU512 * result); + + +/* + * vLL1024Shift() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vLL1024Shift( + const vU1024 * a, + unsigned long shiftAmount, + vU1024 * result); + + +/* + * vLR256Shift() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vLR256Shift( + const vU256 * a, + unsigned long shiftAmount, + vU256 * result); + + +/* + * vLR512Shift() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vLR512Shift( + const vU512 * a, + unsigned long shiftAmount, + vU512 * result); + + +/* + * vLR1024Shift() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vLR1024Shift( + const vU1024 * a, + unsigned long shiftAmount, + vU1024 * result); + + +/* + * vA256Shift() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vA256Shift( + const vS256 * a, + unsigned long shiftAmount, + vS256 * result); + + +/* + * vA512Shift() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vA512Shift( + const vS512 * a, + unsigned long shiftAmount, + vS512 * result); + + +/* + * vA1024Shift() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vA1024Shift( + const vS1024 * a, + unsigned long shiftAmount, + vS1024 * result); + + + +/************************************************************************************ +* * +* Rotate operations * +* * +************************************************************************************/ + +/* + * vL256Rotate() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vL256Rotate( + const vU256 * a, + unsigned long rotateAmount, + vU256 * result); + + +/* + * vL512Rotate() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vL512Rotate( + const vU512 * a, + unsigned long rotateAmount, + vU512 * result); + + +/* + * vL1024Rotate() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vL1024Rotate( + const vU1024 * a, + unsigned long rotateAmount, + vU1024 * result); + + +/* + * vR256Rotate() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vR256Rotate( + const vU256 * a, + unsigned long rotateAmount, + vU256 * result); + + +/* + * vR512Rotate() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vR512Rotate( + const vU512 * a, + unsigned long rotateAmount, + vU512 * result); + + +/* + * vR1024Rotate() + * + * Availability: + * Non-Carbon CFM: in vecLib 1.0 and later + * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +vR1024Rotate( + const vU1024 * a, + unsigned long rotateAmount, + vU1024 * result); + + + +#endif /* defined(__VEC__) */ + + +#if PRAGMA_STRUCT_ALIGN + #pragma options align=reset +#elif PRAGMA_STRUCT_PACKPUSH + #pragma pack(pop) +#elif PRAGMA_STRUCT_PACK + #pragma pack() +#endif + +#ifdef PRAGMA_IMPORT_OFF +#pragma import off +#elif PRAGMA_IMPORT +#pragma import reset +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* __VBIGNUM__ */ + |