mirror of
https://github.com/nillerusr/source-engine.git
synced 2024-12-22 14:16:50 +00:00
1408 lines
38 KiB
C
1408 lines
38 KiB
C
/*
|
|
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__ */
|
|
|