00001 /* k6opt.h vector functions optimized for MMX extensions to x86 00002 * 00003 * Copyright (C) 1999 by Stanley J. Brooks <stabro@megsinet.net> 00004 * 00005 * Any use of this software is permitted provided that this notice is not 00006 * removed and that neither the authors nor the Technische Universitaet Berlin 00007 * are deemed to have made any representations as to the suitability of this 00008 * software for any purpose nor are held responsible for any defects of 00009 * this software. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE; 00010 * not even the implied warranty of MERCHANTABILITY or FITNESS FOR 00011 * A PARTICULAR PURPOSE. 00012 * 00013 * Chicago, 03.12.1999 00014 * Stanley J. Brooks 00015 */ 00016 00017 extern void Weighting_filter P2((e, x), 00018 const word * e, /* signal [-5..0.39.44] IN */ 00019 word * x /* signal [0..39] OUT */ 00020 ) 00021 ; 00022 00023 extern longword k6maxcc P3((wt,dp,Nc_out), 00024 const word *wt, 00025 const word *dp, 00026 word * Nc_out /* OUT */ 00027 ) 00028 ; 00029 /* 00030 * k6maxmin(p,n,out[]) 00031 * input p[n] is array of shorts (require n>0) 00032 * returns (long) maximum absolute value.. 00033 * if out!=NULL, also returns out[0] the maximum and out[1] the minimum 00034 */ 00035 extern longword k6maxmin P3((p,n,out), 00036 const word *p, 00037 int n, 00038 word *out /* out[0] is max, out[1] is min */ 00039 ) 00040 ; 00041 00042 extern longword k6iprod P3((p,q,n), 00043 const word *p, 00044 const word *q, 00045 int n 00046 ) 00047 ; 00048 00049 /* 00050 * k6vsraw(p,n,bits) 00051 * input p[n] is array of shorts (require n>0) 00052 * shift/round each to the right by bits>=0 bits. 00053 */ 00054 extern void k6vsraw P3((p,n,bits), 00055 const word *p, 00056 int n, 00057 int bits 00058 ) 00059 ; 00060 00061 /* 00062 * k6vsllw(p,n,bits) 00063 * input p[n] is array of shorts (require n>0) 00064 * shift each to the left by bits>=0 bits. 00065 */ 00066 extern void k6vsllw P3((p,n,bits), 00067 const word *p, 00068 int n, 00069 int bits 00070 ) 00071 ; 00072 00073 #if 1 /* there isn't any significant speed gain from mmx here: */ 00074 extern void Short_term_analysis_filteringx P4((u0,rp0,k_n,s), 00075 register word * u0, 00076 register word * rp0, /* [0..7] IN */ 00077 register int k_n, /* k_end - k_start */ 00078 register word * s /* [0..n-1] IN/OUT */ 00079 ) 00080 ; 00081 /* 00082 #define Short_term_analysis_filtering Short_term_analysis_filteringx 00083 */ 00084 #endif
1.5.5