00001
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078 #ifndef __DSP_VECTORS_H__
00079 #define __DSP_VECTORS_H__
00080
00081 #ifdef __AVR32_ABI_COMPILER__
00082
00083 #include "string.h"
00084
00085
00086
00087
00108 void dsp16_vect_add(dsp16_t *vect1, dsp16_t *vect2, dsp16_t *vect3, int size);
00116 void dsp32_vect_add(dsp32_t *vect1, dsp32_t *vect2, dsp32_t *vect3, int size);
00117
00139 void dsp16_vect_add_and_sat(dsp16_t *vect1, dsp16_t *vect2, dsp16_t *vect3, int size);
00147 void dsp32_vect_add_and_sat(dsp32_t *vect1, dsp32_t *vect2, dsp32_t *vect3, int size);
00148
00169 void dsp16_vect_realadd(dsp16_t *vect1, dsp16_t *vect2, int size, dsp16_t real);
00177 void dsp32_vect_realadd(dsp32_t *vect1, dsp32_t *vect2, int size, dsp32_t real);
00178
00199 void dsp16_vect_sub(dsp16_t *vect1, dsp16_t *vect2, dsp16_t *vect3, int size);
00207 void dsp32_vect_sub(dsp32_t *vect1, dsp32_t *vect2, dsp32_t *vect3, int size);
00208
00229 void dsp16_vect_realsub(dsp16_t *vect1, dsp16_t *vect2, int size, dsp16_t real);
00237 void dsp32_vect_realsub(dsp32_t *vect1, dsp32_t *vect2, int size, dsp32_t real);
00238
00259 void dsp16_vect_realmul(dsp16_t *vect1, dsp16_t *vect2, int size, dsp16_t real);
00267 void dsp32_vect_realmul(dsp32_t *vect1, dsp32_t *vect2, int size, dsp32_t real);
00268
00289 void dsp16_vect_realdiv(dsp16_t *vect1, dsp16_t *vect2, int size, dsp16_t real);
00297 void dsp32_vect_realdiv(dsp32_t *vect1, dsp32_t *vect2, int size, dsp32_t real);
00298
00319 void dsp16_vect_intmul(dsp16_t *vect1, dsp16_t *vect2, int size, int integer);
00327 void dsp32_vect_intmul(dsp32_t *vect1, dsp32_t *vect2, int size, int integer);
00328
00349 void dsp16_vect_intdiv(dsp16_t *vect1, dsp16_t *vect2, int size, int integer);
00357 void dsp32_vect_intdiv(dsp32_t *vect1, dsp32_t *vect2, int size, int integer);
00358
00379 void dsp16_vect_dotmul(dsp16_t *vect1, dsp16_t *vect2, dsp16_t *vect3, int size);
00387 void dsp32_vect_dotmul(dsp32_t *vect1, dsp32_t *vect2, dsp32_t *vect3, int size);
00388
00409 void dsp16_vect_dotdiv(dsp16_t *vect1, dsp16_t *vect2, dsp16_t *vect3, int size);
00417 void dsp32_vect_dotdiv(dsp32_t *vect1, dsp32_t *vect2, dsp32_t *vect3, int size);
00418
00441 void dsp16_vect_pow(dsp16_t *vect1, dsp16_t *vect2, int size, dsp16_t real);
00450 void dsp32_vect_pow(dsp32_t *vect1, dsp32_t *vect2, int size, dsp32_t real);
00451
00471 dsp16_t dsp16_vect_min(dsp16_t *vect1, int size);
00478 dsp32_t dsp32_vect_min(dsp32_t *vect1, int size);
00479
00499 dsp16_t dsp16_vect_max(dsp16_t *vect1, int size);
00506 dsp32_t dsp32_vect_max(dsp32_t *vect1, int size);
00507
00527 void dsp16_vect_neg(dsp16_t *vect1, dsp16_t *vect2, int size);
00534 void dsp32_vect_neg(dsp32_t *vect1, dsp32_t *vect2, int size);
00535
00555 inline static void dsp16_vect_zeropad(dsp16_t *vect1, int size, int num_zero) { memset(vect1 + (size - num_zero)*sizeof(dsp16_t), 0, num_zero*sizeof(dsp16_t)); };
00562 inline static void dsp32_vect_zeropad(dsp32_t *vect1, int size, int num_zero) { memset(vect1 + (size - num_zero)*sizeof(dsp32_t), 0, num_zero*sizeof(dsp32_t)); };
00563
00583 inline static void dsp16_vect_copy(dsp16_t *vect1, dsp16_t *vect2, int size) { memcpy(vect1, vect2, size*sizeof(dsp16_t)); };
00590 inline static void dsp32_vect_copy(dsp32_t *vect1, dsp32_t *vect2, int size) { memcpy(vect1, vect2, size*sizeof(dsp32_t)); };
00591
00618 void dsp16_vect_convpart(dsp16_t *vect1, dsp16_t *vect2, int vect2_size, dsp16_t *vect3, int vect3_size);
00627 void dsp32_vect_convpart(dsp32_t *vect1, dsp32_t *vect2, int vect2_size, dsp32_t *vect3, int vect3_size);
00628
00661 void dsp16_vect_conv(dsp16_t *vect1, dsp16_t *vect2, int vect2_size, dsp16_t *vect3, int vect3_size);
00673 void dsp32_vect_conv(dsp32_t *vect1, dsp32_t *vect2, int vect2_size, dsp32_t *vect3, int vect3_size);
00674
00675
00676
00677
00678
00679
00680
00681
00682
00683
00684
00685
00706 void dsp16_vect_complex_add(dsp16_complex_t *vect1, dsp16_complex_t *vect2, dsp16_complex_t *vect3, int size);
00714 void dsp32_vect_complex_add(dsp32_complex_t *vect1, dsp32_complex_t *vect2, dsp32_complex_t *vect3, int size);
00715
00736 void dsp16_vect_complex_sub(dsp16_complex_t *vect1, dsp16_complex_t *vect2, dsp16_complex_t *vect3, int size);
00744 void dsp32_vect_complex_sub(dsp32_complex_t *vect1, dsp32_complex_t *vect2, dsp32_complex_t *vect3, int size);
00745
00765 void dsp16_vect_complex_abs(dsp16_t *vect1, dsp16_complex_t *vect2, int size);
00772 void dsp32_vect_complex_abs(dsp32_t *vect1, dsp32_complex_t *vect2, int size);
00773
00792 void dsp16_vect_complex_conj(dsp16_complex_t *vect1, dsp16_complex_t *vect2, int size);
00793
00794 #endif //__AVR32_ABI_COMPILER__
00795 #endif //__DSP_VECTORS_H__
00796