You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1407 lines
38 KiB
1407 lines
38 KiB
/* |
|
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__ */ |
|
|
|
|