Vdsp(bf561)中的浮点运算(16):fract2x16范例[VC/C++编程]
本文“Vdsp(bf561)中的浮点运算(16):fract2x16范例[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
由于BF561内部带有两个16位的MAC,因此它将可以在一个周期内举行两个fract16范例的运算.
为适应这种特点,vdsp引入了一个称之为fract2x16的范例.它其实是定义为一个int范例的整数,但是其实际意义倒是要用高低16位辨别来表示两个fract16范例.
typedef int _raw32;
typedef _raw32 raw2x16;
typedef raw2x16 fract2x16;
要查看fract2x16范例的值还是只能通过data register窗口,手动将范例改成fract16,这样在存放器的高16位和低16位就可以辨别瞥见这两个值了.
利用compose_fr2x16函数可以构造一个fr2x16数据:
The notation used to represent two fract16 values packed into a fract2x16 is {a,b}, where “a” is the fract16 packed into the high half, and “b” is the fract16 packed into the low half.
fract2x16 compose_fr2x16(fract16 f1, fract16 f2)
Takes two fract16 values, and returns a fract2x16 value.
直接看看它在头文件的定义:
/* Takes two fract16 values, and returns a fract2x16 value.
* Input: two fract16 values
* Returns: {_x,_y} */
#pragma inline
#pragma always_inline
static fract2x16 compose_fr2x16(fract16 _x, fract16 _y) {
return compose_2x16(_x,_y);
}
/* Composes a packed integer from two short inputs.
*/
#pragma inline
#pragma always_inline
static int compose_2x16(short __a, short __b) {
int __rval = __builtin_compose_2x16(__a, __b);
return __rval;
}
以上是“Vdsp(bf561)中的浮点运算(16):fract2x16范例[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |