📄 g7231_basop.h
字号:
#include <stdlib.h>
#include <intrindefs.h>
#include "typedef.h"
#ifndef _H_G7231BASOP
#define _H_G7231BASOP
#define G7231MAX_32 (Word32)0x7fffffffL
#define G7231MIN_32 (Word32)0x80000000L
#define G7231MAX_16 (Word16)0x7fff
#define G7231MIN_16 (Word16)0x8000
extern Word16 G7231div_s(Word16 var1, Word16 var2); /* Short division,18 */
#ifdef C54X_MODE
extern Word16 c54_sadd2(Word32 var1, Word32 var2);
extern Word32 c54_sadd(Word32 var1,Word32 var2);
extern Word16 c54_abs2(Word16 var1);
extern Word32 c54_smpy(Word16 var1,Word16 var2);
extern Word32 c54_sshvl(Word32 var1,Word32 var2);
extern Word32 c54_sshvr(Word32 var1,Word32 var2);
extern Word32 c54_spack2(Word32 var1,Word32 var2);
extern Word32 c54_mpyus( Word32 Lv, Word32 v );
extern Word32 c54_smpylh( Word32 v, Word32 Lv);
extern Word32 c54_abs(Word32 v);
extern Word32 c54_mpy(Word16 var1, Word16 var2);
extern Word32 c54_ssub( Word32 v, Word32 Lv);
extern Word16 c54_norm(Word32 v);
#endif
Word32 G7231L_mls( Word32, Word16 );
Word16 G7231div_l( Word32, Word16 );
inline Word16 G7231add(Word16 var1, Word16 var2) /* Short add, 1 */
{
#ifdef C54X_MODE
return c54_sadd2(var1, var2);
#else
return _sadd2(var1, var2);
#endif
}
inline Word16 G7231sub(Word16 var1, Word16 var2) /* Short sub, 1 */
{
#ifdef C54X_MODE
return c54_sadd2(var1, -var2);
#else
return _sadd2(var1, -var2);
#endif
}
inline Word16 G7231abs_s(Word16 var1)
{
#ifdef C54X_MODE
return c54_abs2(var1);
#else
return _abs2(var1);
#endif
}
inline Word16 G7231shl(Word16 var1,Word16 var2)
{
Word32 L_result;
#ifdef C54X_MODE
L_result = c54_sshvl((Word32)var1, (Word32)var2);
return (Word16)c54_spack2(L_result,L_result);
#else
L_result = _sshvl((Word32)var1, (Word32)var2);
return (Word16)_spack2(L_result,L_result);
#endif
}
inline Word16 G7231shr(Word16 var1,Word16 var2)
{
Word32 L_result;
#ifdef C54X_MODE
L_result = c54_sshvr((Word32)var1, (Word32)var2);
return (Word16)c54_spack2(L_result,L_result);
#else
L_result = _sshvr((Word32)var1, (Word32)var2);
return (Word16)_spack2(L_result, L_result);
#endif
}
inline Word16 G7231mult(Word16 var1, Word16 var2)
{
Word32 c54_temp;
#ifdef C54X_MODE
c54_temp = c54_smpy(var1, var2);
return (Word16)(c54_temp >> 16);
#else
return (Word16)(_smpy(var1, var2)>>16);
#endif
}
inline Word32 G7231L_mult(Word16 var1,Word16 var2)
{
#ifdef C54X_MODE
return c54_smpy(var1, var2);
#else
return _smpy(var1, var2);
#endif
}
inline Word16 G7231negate(Word16 var1)
{
return (var1 == G7231MIN_16) ? G7231MAX_16 : -var1;
}
inline Word16 G7231extract_h(Word32 L_var1)
{
return (L_var1 >> 16);
}
inline Word16 G7231extract_l(Word32 L_var1)
{
return (Word16) L_var1;
}
inline Word16 G7231round(Word32 L_var1)
{
#ifdef C54X_MODE
return (Word16)(c54_sadd(L_var1, (Word32)0x00008000L)>>16);
#else
return (Word16)(_sadd(L_var1, (Word32)0x00008000L)>>16);
#endif
}
inline Word32 G7231L_mac(Word32 L_var3, Word16 var1, Word16 var2)
{
#ifdef C54X_MODE
return (c54_sadd(L_var3, c54_smpy(var1,var2)));
#else
return (_sadd(L_var3, _smpy(var1,var2)));
#endif
}
inline Word32 G7231L_msu(Word32 L_var3, Word16 var1, Word16 var2)
{
#ifdef C54X_MODE
return (c54_ssub(L_var3, c54_smpy(var1,var2)));
#else
return (_ssub(L_var3, _smpy(var1,var2)));
#endif
}
inline Word32 G7231L_add(Word32 L_var1, Word32 L_var2)
{
#ifdef C54X_MODE
return c54_sadd(L_var1, L_var2);
#else
return _sadd(L_var1, L_var2);
#endif
}
inline Word32 G7231L_sub(Word32 L_var1, Word32 L_var2)
{
#ifdef C54X_MODE
return c54_ssub(L_var1, L_var2);
#else
return _ssub(L_var1, L_var2);
#endif
}
inline Word32 G7231L_negate(Word32 L_var1)
{
return (L_var1 == G7231MIN_32) ? G7231MAX_32 : -L_var1;
}
inline Word32 G7231L_shl(Word32 L_var1, Word16 var2)
{
#ifdef C54X_MODE
return c54_sshvl(L_var1,var2);
#else
return _sshvl(L_var1,var2);
#endif
}
inline Word32 G7231L_shr(Word32 L_var1, Word16 var2)
{
#ifdef C54X_MODE
return c54_sshvr(L_var1,var2);
#else
return _sshvr(L_var1,var2);
#endif
}
inline Word32 G7231L_deposit_h(Word16 var1)
{
return (Word32) var1 << 16;
}
inline Word32 G7231L_deposit_l(Word16 var1)
{
return (Word32) var1;
}
inline Word32 G7231L_abs(Word32 L_var1)
{
#ifdef C54X_MODE
return c54_abs(L_var1);
#else
return _abs(L_var1);
#endif
}
inline Word16 G7231norm_s(Word16 var1)
{
#ifdef C54X_MODE
return (c54_norm(var1)-16)*(var1!=0);
#else
return (_norm(var1)-16)*(var1!=0);
#endif
}
inline Word16 G7231norm_l(Word32 L_var1)
{
#ifdef C54X_MODE
return c54_norm(L_var1)*(L_var1!=0);
#else
return _norm(L_var1)*(L_var1!=0);
#endif
}
inline Word16 G7231i_mult(Word16 a, Word16 b)
{
#ifdef C54X_MODE
return (Word16)c54_mpy(a, b);
#else
return (Word16)_mpy(a, b);
#endif
}
inline Word16 G7231mult_r(Word16 var1, Word16 var2)
{
#ifdef C54X_MODE
return ((c54_smpy(var1, var2)+0x00008000L)>>16);
#else
return ((_smpy(var1, var2)+0x00008000L)>>16);
#endif
}
#endif //_H_G7231BASOP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -