Microchip® Advanced Software Framework

vect_dsp16_dotdiv_at32uc.c File Reference
#include "dsp.h"
#include "preprocessor.h"

Macros

#define ASM_INSTRUCT_COMPACKED(str)   str
 
#define ASM_INSTRUCT_EXTENDED(str)   str
 
#define DSP16_DOTDIV_END_KERNEL_X_FCT(x_num, data)   __attribute__((__naked__)) DSP16_DOTDIV_END_KERNEL_X_FCT__(x_num, data)
 
#define DSP16_DOTDIV_END_KERNEL_X_FCT__(x_num, data)
 
#define DSP16_DOTDIVISION_0(r_vect1, r_vect2, r_vect3)
 
#define DSP16_DOTDIVISION_1(r_vect1, r_vect2, r_vect3)
 
#define DSP16_DOTDIVISION_2(r_vect1, r_vect2, r_vect3)
 
#define DSP16_DOTDIVISION_3(r_vect1, r_vect2, r_vect3)
 

Functions

void dsp16_vect_dotdiv (dsp16_t *vect1, dsp16_t *vect2, dsp16_t *vect3, int size)
 16-bit fixed point version of the vector dot division function. More...
 
static int dsp16_vect_dotdiv_kernel_ext (dsp16_t *vect1, dsp16_t *vect2, dsp16_t *vect3, int size)
 avr32-uc3 16-bit version More...
 

#define ASM_INSTRUCT_COMPACKED (   str)    str
#define ASM_INSTRUCT_EXTENDED (   str)    str
#define DSP16_DOTDIV_END_KERNEL_X_FCT (   x_num,
  data 
)    __attribute__((__naked__)) DSP16_DOTDIV_END_KERNEL_X_FCT__(x_num, data)
#define DSP16_DOTDIV_END_KERNEL_X_FCT__ (   x_num,
  data 
)
Value:
static void TPASTE2(dsp16_vect_dotdiv_end_kernel_x, x_num)(dsp16_t *vect1, dsp16_t *vect2, dsp16_t *vect3) \
{ \
__asm__ __volatile__ ( \
"pushm r0-r7, lr\n\t" \
TPASTE2(DSP16_DOTDIVISION_, x_num)(r12, r11, r10) \
"popm r0-r7, pc\n\t" \
); \
}
dsp16_complex_t vect1[1<< NLOG]
Definition: benchmark.c:52
dsp16_t__ dsp16_t
16-bit signed fixed point type optimized for 32-bit or lower microcontrollers
Definition: dsp_types.h:192
dsp16_t vect2[1<< NLOG]
Definition: benchmark.c:53
#define TPASTE2(a, b)
Definition: tpaste.h:61
#define DSP16_DOTDIVISION_0 (   r_vect1,
  r_vect2,
  r_vect3 
)
#define DSP16_DOTDIVISION_1 (   r_vect1,
  r_vect2,
  r_vect3 
)
Value:
"ld.sh r2, "ASTRINGZ(r_vect2)"[0x0]\n\t" \
"ld.sh r3, "ASTRINGZ(r_vect3)"[0x0]\n\t" \
"lsl r2, "ASTRINGZ(DSP16_QB)"\n\t" \
\
"divs r0, r2, r3\n\t" \
"st.h "ASTRINGZ(r_vect1)"[0x0], r0\n\t"
#define DSP16_QB
number of fractional bits
Definition: dsp_types.h:137
#define ASTRINGZ(x)
Absolute stringize.
Definition: stringz.h:71
#define DSP16_DOTDIVISION_2 (   r_vect1,
  r_vect2,
  r_vect3 
)
Value:
"ld.sh r0, "ASTRINGZ(r_vect2)"[0x0]\n\t" \
"ld.sh r1, "ASTRINGZ(r_vect3)"[0x0]\n\t" \
"lsl r0, "ASTRINGZ(DSP16_QB)"\n\t" \
"divs r2, r0, r1\n\t" \
\
"ld.sh r0, "ASTRINGZ(r_vect2)"[0x2]\n\t" \
"ld.sh r1, "ASTRINGZ(r_vect3)"[0x2]\n\t" \
"lsl r0, "ASTRINGZ(DSP16_QB)"\n\t" \
"divs r4, r0, r1\n\t" \
\
"sthh.w r12[0x0], r2:b, r4:b\n\t"
#define DSP16_QB
number of fractional bits
Definition: dsp_types.h:137
#define ASTRINGZ(x)
Absolute stringize.
Definition: stringz.h:71
#define DSP16_DOTDIVISION_3 (   r_vect1,
  r_vect2,
  r_vect3 
)
Value:
"ld.sh r0, "ASTRINGZ(r_vect2)"[0x0]\n\t" \
"ld.sh r1, "ASTRINGZ(r_vect3)"[0x0]\n\t" \
"lsl r0, "ASTRINGZ(DSP16_QB)"\n\t" \
"divs r2, r0, r1\n\t" \
\
"ld.sh r0, "ASTRINGZ(r_vect2)"[0x2]\n\t" \
"ld.sh r1, "ASTRINGZ(r_vect3)"[0x2]\n\t" \
"lsl r0, "ASTRINGZ(DSP16_QB)"\n\t" \
"divs r4, r0, r1\n\t" \
\
"sthh.w r12[0x0], r2:b, r4:b\n\t" \
\
"ld.sh r2, "ASTRINGZ(r_vect2)"[0x4]\n\t" \
"ld.sh r3, "ASTRINGZ(r_vect3)"[0x4]\n\t" \
"lsl r2, "ASTRINGZ(DSP16_QB)"\n\t" \
\
"divs r0, r2, r3\n\t" \
"st.h "ASTRINGZ(r_vect1)"[0x4], r0\n\t"
#define DSP16_QB
number of fractional bits
Definition: dsp_types.h:137
#define ASTRINGZ(x)
Absolute stringize.
Definition: stringz.h:71

static int dsp16_vect_dotdiv_kernel_ext ( dsp16_t vect1,
dsp16_t vect2,
dsp16_t vect3,
int  size 
)
static

avr32-uc3 16-bit version

References ASM_INSTRUCT_COMPACKED, ASTRINGZ, and DSP16_QB.

Referenced by dsp16_vect_dotdiv().