@@ -43,11 +43,11 @@ typedef enum GTE_MAC
4343 GTE_MAC_3 , /* s32 */
4444} GTE_MAC ;
4545
46- typedef enum GTE_INTERPOLATE
46+ typedef enum GTE_CALC
4747{
48- GTE_INTERPOLATE_INT ,
49- GTE_INTERPOLATE_FLOATING_POINT ,
50- } GTE_INTERPOLATE ;
48+ GTE_CALC_INT ,
49+ GTE_CALC_FLOATING_POINT ,
50+ } GTE_CALC ;
5151
5252/* HELPERS */
5353#define _CAT (a , b ) a##b
@@ -75,12 +75,17 @@ typedef enum GTE_INTERPOLATE
7575#define _gte_readMac_GTE_MAC_3 (out ) gte_stlvnl2(out)
7676#define _gte_readMac_GTE_VECTOR_MAC (out ) gte_stlvnl(out)
7777#define _gte_loadIR_GTE_IR_0 (in ) gte_lddp(in)
78- #define _gte_dotProduct_GTE_ROW_INDEX_0 (out , matrixType , vecType ) gte_mvmva(0, matrixType, vecType, 3, 0); _gte_readMac_GTE_MAC_1(out)
79- #define _gte_dotProduct_GTE_ROW_INDEX_1 (out , matrixType , vecType ) gte_mvmva(0, matrixType, vecType, 3, 0); _gte_readMac_GTE_MAC_2(out)
80- #define _gte_dotProduct_GTE_ROW_INDEX_2 (out , matrixType , vecType ) gte_mvmva(0, matrixType, vecType, 3, 0); _gte_readMac_GTE_MAC_3(out)
78+ #define _gte_dotProduct_GTE_ROW_INDEX_0_GTE_CALC_INT (out , matrixType , vecType ) gte_mvmva(0, matrixType, vecType, 3, 0); _gte_readMac_GTE_MAC_1(out)
79+ #define _gte_dotProduct_GTE_ROW_INDEX_1_GTE_CALC_INT (out , matrixType , vecType ) gte_mvmva(0, matrixType, vecType, 3, 0); _gte_readMac_GTE_MAC_2(out)
80+ #define _gte_dotProduct_GTE_ROW_INDEX_2_GTE_CALC_INT (out , matrixType , vecType ) gte_mvmva(0, matrixType, vecType, 3, 0); _gte_readMac_GTE_MAC_3(out)
81+ #define _gte_dotProduct_GTE_ROW_INDEX_0_GTE_CALC_FLOATING_POINT (out , matrixType , vecType ) gte_mvmva(1, matrixType, vecType, 3, 0); _gte_readMac_GTE_MAC_1(out)
82+ #define _gte_dotProduct_GTE_ROW_INDEX_1_GTE_CALC_FLOATING_POINT (out , matrixType , vecType ) gte_mvmva(1, matrixType, vecType, 3, 0); _gte_readMac_GTE_MAC_2(out)
83+ #define _gte_dotProduct_GTE_ROW_INDEX_2_GTE_CALC_FLOATING_POINT (out , matrixType , vecType ) gte_mvmva(1, matrixType, vecType, 3, 0); _gte_readMac_GTE_MAC_3(out)
8184#define _gte_mulMatrixVec (out , matrixType , vecType , shift ) gte_mvmva(shift, matrixType, vecType, 3, 0); _gte_readMac_GTE_VECTOR_MAC(out)
82- #define _gte_interpolate_GTE_INTERPOLATE_INT () gte_gpl0()
83- #define _gte_interpolate_GTE_INTERPOLATE_FLOATING_POINT () gte_gpl12()
85+ #define _gte_interpolate_GTE_CALC_INT () gte_gpf0()
86+ #define _gte_interpolate_GTE_CALC_FLOATING_POINT () gte_gpf12()
87+ #define _gte_interpolateBase_GTE_CALC_INT () gte_gpl0()
88+ #define _gte_interpolateBase_GTE_CALC_FLOATING_POINT () gte_gpl12()
8489#define _gte_leadingZeroes (out , in ) __asm__ volatile ( \
8590 "mtc2 %1, $30;" \
8691 "nop;" \
@@ -98,6 +103,8 @@ typedef enum GTE_INTERPOLATE
98103#define gte_loadVec (v , vecType ) CAT(_gte_loadVec_, vecType)(v)
99104#define gte_loadRowMatrix (v , rowIndex , matrixType ) CAT3(_gte_loadSVecMatrix_, matrixType, _##rowIndex)(v)
100105#define gte_mulMatrixVec (out , matrixType , vecType ) _gte_mulMatrixVec(out, matrixType, vecType, 1)
101- #define gte_dotProduct (out , rowIndex , matrixType , vecType ) CAT (_gte_dotProduct_, rowIndex)(out, matrixType, vecType)
106+ #define gte_dotProduct (out , rowIndex , matrixType , vecType , calcType ) CAT3 (_gte_dotProduct_, rowIndex, _##calcType )(out, matrixType, vecType)
102107#define gte_leadingZeroes (out , in ) _gte_leadingZeroes(out, in)
103- #define gte_interpolate (out , interpolationType ) CAT(_gte_interpolate_, interpolationType)(); _gte_readMac_GTE_VECTOR_MAC(out)
108+ #define gte_interpolate (out , calcType ) CAT(_gte_interpolate_, calcType)(); _gte_readMac_GTE_VECTOR_MAC(out)
109+ #define gte_interpolateBase (out , calcType ) CAT(_gte_interpolateBase_, calcType)(); _gte_readMac_GTE_VECTOR_MAC(out)
110+ #define gte_crossProduct (out , matrix , vector ) gte_SetRotMatrix(matrix); gte_loadSVec(vector, GTE_VECTOR_IR); gte_op0(); gte_readMac(out, GTE_VECTOR_MAC)
0 commit comments