00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #if !defined(_SPANDSP__X86_H) && (defined(__i386__) || defined(__x86_64__))
00022
00023 #define _SPANDSP__X86_H
00024
00025 #pragma pack(1)
00026
00027 typedef struct _stm64
00028 {
00029 float f[2];
00030 } stm64, *stpm64;
00031
00032 typedef struct _stm128
00033 {
00034 union
00035 {
00036 float f[4];
00037 double d[2];
00038 };
00039 } stm128, *stpm128;
00040
00041 #pragma pack()
00042
00043 #if defined(__cplusplus)
00044 extern "C"
00045 {
00046 #endif
00047
00048 #if !defined(_SPANDSP__x86_64__)
00049 const char *dsp_x86_cpuid(void);
00050 unsigned int dsp_x86_features(void);
00051 unsigned int dsp_x86_amd_features(void);
00052 #endif
00053 int dsp_x86_have_e3dnow(void);
00054 int dsp_x86_have_sse2(void);
00055 void dsp_x86_3dnow_copyf(float *, const float *, int);
00056 void dsp_x86_3dnow_copyd(double *, const double *, int);
00057 void dsp_x86_3dnow_addf(float *, float, int);
00058 void dsp_x86_sse_addf(float *, float, int);
00059 void dsp_x86_sse_add(double *, double, int);
00060 void dsp_x86_3dnow_mulf(float *, float, int);
00061 void dsp_x86_sse_mulf(float *, float, int);
00062 void dsp_x86_sse_mul(double *, double, int);
00063 void dsp_x86_3dnow_mulf_nip(float *, const float *, float, int);
00064 void dsp_x86_sse_mulf_nip(float *, const float *, float, int);
00065 void dsp_x86_sse_mul_nip(double *, const double *, double, int);
00066 void dsp_x86_3dnow_add2f(float *, const float *, int);
00067 void dsp_x86_sse_add2f(float *, const float *, int);
00068 void dsp_x86_sse_add2(double *, const double *, int);
00069 void dsp_x86_3dnow_mul2f(float *, const float *, int);
00070 void dsp_x86_sse_mul2f(float *, const float *, int);
00071 void dsp_x86_sse_mul2(double *, const double *, int);
00072 void dsp_x86_3dnow_add3f(float *, const float *, const float *, int);
00073 void dsp_x86_sse_add3f(float *, const float *, const float *, int);
00074 void dsp_x86_sse_add3(double *, const double *, const double *, int);
00075 void dsp_x86_3dnow_mul3f(float *, const float *, const float *, int);
00076 void dsp_x86_sse_mul3f(float *, const float *, const float *, int);
00077 void dsp_x86_sse_mul3(double *, const double *, const double *, int);
00078 void dsp_x86_3dnow_cmulf(float *, const float *, int);
00079 void dsp_x86_sse_cmulf(float *, const float *, int);
00080 void dsp_x86_sse_cmul(double *, const double *, int);
00081 void dsp_x86_3dnow_cmul2f(float *, const float *, int);
00082 void dsp_x86_sse_cmul2f(float *, const float *, int);
00083 void dsp_x86_sse_cmul2(double *, const double *, int);
00084 void dsp_x86_3dnow_cmul3f(float *, const float *, const float *, int);
00085 void dsp_x86_sse_cmul3f(float *, const float *, const float *, int);
00086 void dsp_x86_sse_cmul3(double *, const double *, const double *, int);
00087 void dsp_x86_3dnow_maf(float *, float, float, int);
00088 void dsp_x86_sse_maf(float *, float, float, int);
00089 void dsp_x86_sse_ma(double *, double, double, int);
00090 void dsp_x86_3dnow_ma2f(float *, const float *, float, float, int);
00091 void dsp_x86_sse_ma2f(float *, const float *, float, float, int);
00092 void dsp_x86_sse_ma2(double *, const double *, double, double, int);
00093 void dsp_x86_3dnow_cmaf(float *, const float *, const float *, int);
00094 void dsp_x86_sse_cmaf(float *, const float *, const float *, int);
00095 void dsp_x86_sse_cma(double *, const double *, const double *, int);
00096 void dsp_x86_3dnow_amf(float *, float, float, int);
00097 void dsp_x86_sse_amf(float *, float, float, int);
00098 void dsp_x86_sse_am(double *, double, double, int);
00099 float dsp_x86_3dnow_macf(const float *, const float *, int);
00100 float dsp_x86_sse_macf(const float *, const float *, int);
00101 double dsp_x86_sse_mac(const double *, const double *, int);
00102 void dsp_x86_3dnow_minmaxf(float *, float *, const float *, int);
00103 void dsp_x86_sse_minmaxf(float *, float *, const float *, int);
00104 void dsp_x86_sse_minmax(double *, double *, const double *, int);
00105 float dsp_x86_3dnow_crosscorrf(const float *, const float *, int);
00106 float dsp_x86_sse_crosscorrf(const float *, const float *, int);
00107 double dsp_x86_sse_crosscorr(const double *, const double *, int);
00108 void dsp_x86_3dnow_i16tof(float *, const short *, int, int);
00109 void dsp_x86_3dnow_i32tof(float *, const int *, int, int);
00110 void dsp_x86_3dnow_ftoi16(short *, const float *, int);
00111
00112 void dsp_x86_3dnow_firf(float *, const float *, int, const float *, int);
00113 void dsp_x86_sse_firf(float *, const float *, int, const float *, int);
00114 void dsp_x86_sse_fir(double *, const double *, int, const double *, int);
00115 void dsp_x86_3dnow_iirf(float *, int, const float *, float *, float *);
00116 void dsp_x86_sse_iirf(float *, int, const float *, float *, float *);
00117 void dsp_x86_sse_iir(double *, int, const double *, double *, double *);
00118 void dsp_x86_3dnow_iirf_nip(float *, const float *, int, const float *, float *, float *);
00119 void dsp_x86_sse_iirf_nip(float *, const float *, int, const float *, float *, float *);
00120 void dsp_x86_sse_iir_nip(double *, const double *, int, const double *, double *, double *);
00121
00122 #if defined(__cplusplus)
00123 }
00124 #endif
00125
00126 #endif