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.
988 lines
27 KiB
988 lines
27 KiB
5 years ago
|
/*
|
||
|
File: vBasicOps.h
|
||
|
|
||
|
Contains: Basic Algebraic Operations for AltiVec
|
||
|
|
||
|
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 __VBASICOPS__
|
||
|
#define __VBASICOPS__
|
||
|
|
||
|
#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 section is a collection of algebraic functions that uses the AltiVec
|
||
|
instruction set, and is designed to facilitate vector processing in
|
||
|
mathematical programming. Following table indicates which functions are covered
|
||
|
by AltiVec instruction set and which ones are performed by vBasicOps library:
|
||
|
|
||
|
Legend:
|
||
|
H/W = Hardware
|
||
|
LIB = vBasicOps Library
|
||
|
NRel = Next Release of vBasicOps Library
|
||
|
N/A = Not Applicable
|
||
|
|
||
|
+---------------+-----+-----+-----+-----+-----+-----+-----+-----+------+------+
|
||
|
| Data Type/ | U8 | S8 | U16 | S16 | U32 | S32 | U64 | S64 | U128 | S128 |
|
||
|
| Function | | | | | | | | | | |
|
||
|
+---------------+-----+-----+-----+-----+-----+-----+-----+-----+------+------+
|
||
|
| Add | H/W | H/W | H/W | H/W | H/W | H/W | LIB | LIB | LIB | LIB |
|
||
|
+---------------+-----+-----+-----+-----+-----+-----+-----+-----+------+------+
|
||
|
| AddS | H/W | H/W | H/W | H/W | H/W | H/W | LIB | LIB | LIB | LIB |
|
||
|
+---------------+-----+-----+-----+-----+-----+-----+-----+-----+------+------+
|
||
|
| Sub | H/W | H/W | H/W | H/W | H/W | H/W | LIB | LIB | LIB | LIB |
|
||
|
+---------------+-----+-----+-----+-----+-----+-----+-----+-----+------+------+
|
||
|
| SubS | H/W | H/W | H/W | H/W | H/W | H/W | LIB | LIB | LIB | LIB |
|
||
|
+---------------+-----+-----+-----+-----+-----+-----+-----+-----+------+------+
|
||
|
| Mul(Half) | LIB | LIB | LIB | LIB | LIB | LIB | LIB | LIB | LIB | LIB |
|
||
|
+---------------+-----+-----+-----+-----+-----+-----+-----+-----+------+------+
|
||
|
|Mul Even (Full)| H/W | H/W | H/W | H/W | LIB | LIB | LIB | LIB | N/A | N/A |
|
||
|
+---------------+-----+-----+-----+-----+-----+-----+-----+-----+------+------+
|
||
|
|Mul Odd (Full)| H/W | H/W | H/W | H/W | LIB | LIB | LIB | LIB | N/A | N/A |
|
||
|
+---------------+-----+-----+-----+-----+-----+-----+-----+-----+------+------+
|
||
|
| Divide | LIB | LIB | LIB | LIB | LIB | LIB | LIB |NRel | LIB | LIB |
|
||
|
+---------------+-----+-----+-----+-----+-----+-----+-----+-----+------+------+
|
||
|
| Shift | H/W | H/W | H/W | H/W | H/W | H/W | LIB | LIB | LIB | LIB |
|
||
|
+---------------+-----+-----+-----+-----+-----+-----+-----+-----+------+------+
|
||
|
| Rotate | H/W | H/W | H/W | H/W | H/W | H/W | LIB | LIB | LIB | LIB |
|
||
|
+---------------+-----+-----+-----+-----+-----+-----+-----+-----+------+------+
|
||
|
|
||
|
|
||
|
|
||
|
Following is a short description of functions in this section:
|
||
|
|
||
|
Add: It takes two vectors of data elements and adds each element
|
||
|
of the second vector to the corresponding element of the first
|
||
|
vector and puts the result in the associated data element of the
|
||
|
destination register.
|
||
|
|
||
|
Subtract: It takes two vectors of data elements and subtracts each element
|
||
|
of the second vector from the corresponding element of the first
|
||
|
vector and puts the result in the associated data element of the
|
||
|
destination register.
|
||
|
|
||
|
Multiply: It takes two vectors of data elements and multiplies each element
|
||
|
of the first vector by the corresponding element of the second
|
||
|
vector and puts the result in the associated data element of the
|
||
|
destination register.
|
||
|
|
||
|
Divide: It takes two vectors of data elements and divides each element
|
||
|
of the first vector by the corresponding element of the second
|
||
|
vector and puts the result in the associated data element of the
|
||
|
destination register. A pointer is passed to the function to get
|
||
|
the remainder.
|
||
|
|
||
|
Shift: It takes a vector of two 64-bit data elements or one 128-bit
|
||
|
data element and shifts it to right or left, in a logical or
|
||
|
algebraic manner, using a shift factor that is passed as an
|
||
|
arguement to the function.
|
||
|
|
||
|
Rotate: It takes a vector of two 64-bit data elements or one 128-bit
|
||
|
data element and rotates it to right or left, using a shift
|
||
|
factor that is passed as an arguement to the function.
|
||
|
|
||
|
|
||
|
Following abbreviations are used in the names of functions in this section:
|
||
|
|
||
|
v Vector
|
||
|
U Unsigned
|
||
|
S Signed
|
||
|
8 8-bit
|
||
|
16 16-bit
|
||
|
32 32-bit
|
||
|
64 64-bit
|
||
|
128 128-bit
|
||
|
Add Addition
|
||
|
AddS Addition with Saturation
|
||
|
Sub Subtraction
|
||
|
SubS Subtraction with Saturation
|
||
|
Mul 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)
|
||
|
Even Multiplication is performed on EVEN data elements of vector
|
||
|
(Please note that Big endian is used. So the left-most
|
||
|
data element is labled as element 0)
|
||
|
Odd Multiplication is performed on ODD data elements of vector.
|
||
|
A Algebraic
|
||
|
LL Logical Left
|
||
|
LR Logical Right
|
||
|
Shift Shift by one factor
|
||
|
Shift2 Shift by two factors( only apply to 64 bit operation )
|
||
|
Rotate Rotate by one factor
|
||
|
Rotate2 Rotate by two factors( only apply to 64 bit operation )
|
||
|
|
||
|
*/
|
||
|
|
||
|
/*
|
||
|
* vU8Divide()
|
||
|
*
|
||
|
* 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( vector unsigned char )
|
||
|
vU8Divide(
|
||
|
vector unsigned char vN,
|
||
|
vector unsigned char vD,
|
||
|
vector unsigned char * vRemainder);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* vS8Divide()
|
||
|
*
|
||
|
* 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( vector signed char )
|
||
|
vS8Divide(
|
||
|
vector signed char vN,
|
||
|
vector signed char vD,
|
||
|
vector signed char * vRemainder);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* vU16Divide()
|
||
|
*
|
||
|
* 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( vector unsigned short )
|
||
|
vU16Divide(
|
||
|
vector unsigned short vN,
|
||
|
vector unsigned short vD,
|
||
|
vector unsigned short * vRemainder);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* vS16Divide()
|
||
|
*
|
||
|
* 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( vector signed short )
|
||
|
vS16Divide(
|
||
|
vector signed short vN,
|
||
|
vector signed short vD,
|
||
|
vector signed short * vRemainder);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* vU32Divide()
|
||
|
*
|
||
|
* 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( vector unsigned int )
|
||
|
vU32Divide(
|
||
|
vector unsigned int vN,
|
||
|
vector unsigned int vD,
|
||
|
vector unsigned int * vRemainder);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* vS32Divide()
|
||
|
*
|
||
|
* 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( vector signed int )
|
||
|
vS32Divide(
|
||
|
vector signed int vN,
|
||
|
vector signed int vD,
|
||
|
vector signed int * vRemainder);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* vU64Divide()
|
||
|
*
|
||
|
* 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( vector unsigned int )
|
||
|
vU64Divide(
|
||
|
vector unsigned int vN,
|
||
|
vector unsigned int vD,
|
||
|
vector unsigned int * vRemainder);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* vS64Divide()
|
||
|
*
|
||
|
* 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( vector signed int )
|
||
|
vS64Divide(
|
||
|
vector signed int vN,
|
||
|
vector signed int vD,
|
||
|
vector signed int * vRemainder);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* vU128Divide()
|
||
|
*
|
||
|
* 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( vector unsigned int )
|
||
|
vU128Divide(
|
||
|
vector unsigned int vN,
|
||
|
vector unsigned int vD,
|
||
|
vector unsigned int * vRemainder);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* vS128Divide()
|
||
|
*
|
||
|
* 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( vector signed int )
|
||
|
vS128Divide(
|
||
|
vector signed int vN,
|
||
|
vector signed int vD,
|
||
|
vector signed int * vRemainder);
|
||
|
|
||
|
|
||
|
|
||
|
/*
|
||
|
* vU8HalfMultiply()
|
||
|
*
|
||
|
* 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( vector unsigned char )
|
||
|
vU8HalfMultiply(
|
||
|
vector unsigned char vA,
|
||
|
vector unsigned char vB);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* vS8HalfMultiply()
|
||
|
*
|
||
|
* 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( vector signed char )
|
||
|
vS8HalfMultiply(
|
||
|
vector signed char vA,
|
||
|
vector signed char vB);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* vU16HalfMultiply()
|
||
|
*
|
||
|
* 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( vector unsigned short )
|
||
|
vU16HalfMultiply(
|
||
|
vector unsigned short vA,
|
||
|
vector unsigned short vB);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* vS16HalfMultiply()
|
||
|
*
|
||
|
* 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( vector signed short )
|
||
|
vS16HalfMultiply(
|
||
|
vector signed short vA,
|
||
|
vector signed short vB);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* vU32HalfMultiply()
|
||
|
*
|
||
|
* 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( vector unsigned int )
|
||
|
vU32HalfMultiply(
|
||
|
vector unsigned int vA,
|
||
|
vector unsigned int vB);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* vS32HalfMultiply()
|
||
|
*
|
||
|
* 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( vector signed int )
|
||
|
vS32HalfMultiply(
|
||
|
vector signed int vA,
|
||
|
vector signed int vB);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* vU32FullMulEven()
|
||
|
*
|
||
|
* 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( vector unsigned int )
|
||
|
vU32FullMulEven(
|
||
|
vector unsigned int vA,
|
||
|
vector unsigned int vB);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* vU32FullMulOdd()
|
||
|
*
|
||
|
* 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( vector unsigned int )
|
||
|
vU32FullMulOdd(
|
||
|
vector unsigned int vA,
|
||
|
vector unsigned int vB);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* vS32FullMulEven()
|
||
|
*
|
||
|
* 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( vector signed int )
|
||
|
vS32FullMulEven(
|
||
|
vector signed int vA,
|
||
|
vector signed int vB);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* vS32FullMulOdd()
|
||
|
*
|
||
|
* 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( vector signed int )
|
||
|
vS32FullMulOdd(
|
||
|
vector signed int vA,
|
||
|
vector signed int vB);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* vU64FullMulEven()
|
||
|
*
|
||
|
* 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( vector unsigned int )
|
||
|
vU64FullMulEven(
|
||
|
vector unsigned int vA,
|
||
|
vector unsigned int vB);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* vU64FullMulOdd()
|
||
|
*
|
||
|
* 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( vector unsigned int )
|
||
|
vU64FullMulOdd(
|
||
|
vector unsigned int vA,
|
||
|
vector unsigned int vB);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* vU64HalfMultiply()
|
||
|
*
|
||
|
* 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( vector unsigned int )
|
||
|
vU64HalfMultiply(
|
||
|
vector unsigned int vA,
|
||
|
vector unsigned int vB);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* vS64HalfMultiply()
|
||
|
*
|
||
|
* 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( vector signed int )
|
||
|
vS64HalfMultiply(
|
||
|
vector signed int vA,
|
||
|
vector signed int vB);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* vS64FullMulEven()
|
||
|
*
|
||
|
* 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( vector signed int )
|
||
|
vS64FullMulEven(
|
||
|
vector signed int vA,
|
||
|
vector signed int vB);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* vS64FullMulOdd()
|
||
|
*
|
||
|
* 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( vector signed int )
|
||
|
vS64FullMulOdd(
|
||
|
vector signed int vA,
|
||
|
vector signed int vB);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* vU128HalfMultiply()
|
||
|
*
|
||
|
* 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( vector unsigned int )
|
||
|
vU128HalfMultiply(
|
||
|
vector unsigned int vA,
|
||
|
vector unsigned int vB);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* vS128HalfMultiply()
|
||
|
*
|
||
|
* 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( vector signed int )
|
||
|
vS128HalfMultiply(
|
||
|
vector signed int vA,
|
||
|
vector signed int vB);
|
||
|
|
||
|
|
||
|
|
||
|
/*
|
||
|
* vU64Sub()
|
||
|
*
|
||
|
* 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( vector unsigned int )
|
||
|
vU64Sub(
|
||
|
vector unsigned int vA,
|
||
|
vector unsigned int vB);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* vU64SubS()
|
||
|
*
|
||
|
* 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( vector unsigned int )
|
||
|
vU64SubS(
|
||
|
vector unsigned int vA,
|
||
|
vector unsigned int vB);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* vU128Sub()
|
||
|
*
|
||
|
* 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( vector unsigned int )
|
||
|
vU128Sub(
|
||
|
vector unsigned int vA,
|
||
|
vector unsigned int vB);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* vU128SubS()
|
||
|
*
|
||
|
* 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( vector unsigned int )
|
||
|
vU128SubS(
|
||
|
vector unsigned int vA,
|
||
|
vector unsigned int vB);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* vS64Sub()
|
||
|
*
|
||
|
* 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( vector signed int )
|
||
|
vS64Sub(
|
||
|
vector signed int vA,
|
||
|
vector signed int vB);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* vS128Sub()
|
||
|
*
|
||
|
* 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( vector signed int )
|
||
|
vS128Sub(
|
||
|
vector signed int vA,
|
||
|
vector signed int vB);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* vS64SubS()
|
||
|
*
|
||
|
* 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( vector signed int )
|
||
|
vS64SubS(
|
||
|
vector signed int vA,
|
||
|
vector signed int vB);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* vS128SubS()
|
||
|
*
|
||
|
* 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( vector signed int )
|
||
|
vS128SubS(
|
||
|
vector signed int vA,
|
||
|
vector signed int vB);
|
||
|
|
||
|
|
||
|
|
||
|
/*
|
||
|
* vU64Add()
|
||
|
*
|
||
|
* 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( vector unsigned int )
|
||
|
vU64Add(
|
||
|
vector unsigned int vA,
|
||
|
vector unsigned int vB);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* vU64AddS()
|
||
|
*
|
||
|
* 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( vector unsigned int )
|
||
|
vU64AddS(
|
||
|
vector unsigned int vA,
|
||
|
vector unsigned int vB);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* vU128Add()
|
||
|
*
|
||
|
* 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( vector unsigned int )
|
||
|
vU128Add(
|
||
|
vector unsigned int vA,
|
||
|
vector unsigned int vB);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* vU128AddS()
|
||
|
*
|
||
|
* 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( vector unsigned int )
|
||
|
vU128AddS(
|
||
|
vector unsigned int vA,
|
||
|
vector unsigned int vB);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* vS64Add()
|
||
|
*
|
||
|
* 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( vector signed int )
|
||
|
vS64Add(
|
||
|
vector signed int vA,
|
||
|
vector signed int vB);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* vS64AddS()
|
||
|
*
|
||
|
* 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( vector signed int )
|
||
|
vS64AddS(
|
||
|
vector signed int vA,
|
||
|
vector signed int vB);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* vS128Add()
|
||
|
*
|
||
|
* 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( vector signed int )
|
||
|
vS128Add(
|
||
|
vector signed int vA,
|
||
|
vector signed int vB);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* vS128AddS()
|
||
|
*
|
||
|
* 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( vector signed int )
|
||
|
vS128AddS(
|
||
|
vector signed int vA,
|
||
|
vector signed int vB);
|
||
|
|
||
|
|
||
|
|
||
|
/*
|
||
|
* vLL64Shift()
|
||
|
*
|
||
|
* 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( vector unsigned int )
|
||
|
vLL64Shift(
|
||
|
vector unsigned int vA,
|
||
|
vector unsigned char vShiftFactor);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* vA64Shift()
|
||
|
*
|
||
|
* 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( vector unsigned int )
|
||
|
vA64Shift(
|
||
|
vector unsigned int vA,
|
||
|
vector unsigned char vShiftFactor);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* vLR64Shift()
|
||
|
*
|
||
|
* 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( vector unsigned int )
|
||
|
vLR64Shift(
|
||
|
vector unsigned int vA,
|
||
|
vector unsigned char vShiftFactor);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* vLL64Shift2()
|
||
|
*
|
||
|
* 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( vector unsigned int )
|
||
|
vLL64Shift2(
|
||
|
vector unsigned int vA,
|
||
|
vector unsigned char vShiftFactor);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* vA64Shift2()
|
||
|
*
|
||
|
* 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( vector unsigned int )
|
||
|
vA64Shift2(
|
||
|
vector unsigned int vA,
|
||
|
vector unsigned char vShiftFactor);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* vLR64Shift2()
|
||
|
*
|
||
|
* 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( vector unsigned int )
|
||
|
vLR64Shift2(
|
||
|
vector unsigned int vA,
|
||
|
vector unsigned char vShiftFactor);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* vA128Shift()
|
||
|
*
|
||
|
* 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( vector unsigned int )
|
||
|
vA128Shift(
|
||
|
vector unsigned int vA,
|
||
|
vector unsigned char vShiftFactor);
|
||
|
|
||
|
|
||
|
|
||
|
/*
|
||
|
* vL64Rotate()
|
||
|
*
|
||
|
* 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( vector unsigned int )
|
||
|
vL64Rotate(
|
||
|
vector unsigned int vA,
|
||
|
vector unsigned char vRotateFactor);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* vR64Rotate()
|
||
|
*
|
||
|
* 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( vector unsigned int )
|
||
|
vR64Rotate(
|
||
|
vector unsigned int vA,
|
||
|
vector unsigned char vRotateFactor);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* vL64Rotate2()
|
||
|
*
|
||
|
* 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( vector unsigned int )
|
||
|
vL64Rotate2(
|
||
|
vector unsigned int vA,
|
||
|
vector unsigned char vRotateFactor);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* vR64Rotate2()
|
||
|
*
|
||
|
* 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( vector unsigned int )
|
||
|
vR64Rotate2(
|
||
|
vector unsigned int vA,
|
||
|
vector unsigned char vRotateFactor);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* vL128Rotate()
|
||
|
*
|
||
|
* 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( vector unsigned int )
|
||
|
vL128Rotate(
|
||
|
vector unsigned int vA,
|
||
|
vector unsigned char vRotateFactor);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* vR128Rotate()
|
||
|
*
|
||
|
* 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( vector unsigned int )
|
||
|
vR128Rotate(
|
||
|
vector unsigned int vA,
|
||
|
vector unsigned char vRotateFactor);
|
||
|
|
||
|
|
||
|
#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 /* __VBASICOPS__ */
|
||
|
|