disable denormals in eq plugins
This commit is contained in:
parent
6d6c64c1b0
commit
bbabae237b
5 changed files with 25 additions and 16 deletions
|
@ -32,6 +32,7 @@ process(personal *data,
|
|||
float *out_L, float *out_R,
|
||||
unsigned long count)
|
||||
{
|
||||
disable_denormals();
|
||||
for (unsigned long pos = 0; pos < count; pos++) {
|
||||
out_L[pos] = process_one(data->filters[0], in_L[pos]);
|
||||
out_R[pos] = process_one(data->filters[1], in_R[pos]);
|
||||
|
@ -44,6 +45,7 @@ process_double(personal *data,
|
|||
double *out_L, double *out_R,
|
||||
unsigned long count)
|
||||
{
|
||||
disable_denormals();
|
||||
for (unsigned long pos = 0; pos < count; pos++) {
|
||||
out_L[pos] = process_one(data->filters[0], in_L[pos]);
|
||||
out_R[pos] = process_one(data->filters[1], in_R[pos]);
|
||||
|
|
|
@ -28,6 +28,7 @@ process(personal *data,
|
|||
float *out_L, float *out_R,
|
||||
unsigned long count)
|
||||
{
|
||||
disable_denormals();
|
||||
for (unsigned long pos = 0; pos < count; pos++) {
|
||||
out_L[pos] = process_one(data->filters[0], in_L[pos]);
|
||||
out_R[pos] = process_one(data->filters[1], in_R[pos]);
|
||||
|
@ -40,6 +41,7 @@ process_double(personal *data,
|
|||
double *out_L, double *out_R,
|
||||
unsigned long count)
|
||||
{
|
||||
disable_denormals();
|
||||
for (unsigned long pos = 0; pos < count; pos++) {
|
||||
out_L[pos] = process_one(data->filters[0], in_L[pos]);
|
||||
out_R[pos] = process_one(data->filters[1], in_R[pos]);
|
||||
|
|
17
crap_tube.h
17
crap_tube.h
|
@ -1,13 +1,6 @@
|
|||
#include <string.h>
|
||||
|
||||
#ifdef __SSE2__
|
||||
#include <xmmintrin.h>
|
||||
#ifndef __SSE2_MATH__
|
||||
#warning SSE2 enabled but not forced, beware denormals
|
||||
#endif
|
||||
#else
|
||||
#warning built without SSE2, denormals will be painful
|
||||
#endif
|
||||
#include "crap_util.h"
|
||||
|
||||
#define ID 0x50F7BA11
|
||||
#define LABEL "crap_tube"
|
||||
|
@ -24,14 +17,6 @@ typedef struct {
|
|||
double history_R[HIST_SIZE];
|
||||
} personal;
|
||||
|
||||
static void
|
||||
disable_denormals()
|
||||
{
|
||||
#if __SSE2__
|
||||
_mm_setcsr(_mm_getcsr() | 0x8040);
|
||||
#endif
|
||||
}
|
||||
|
||||
static double
|
||||
distort(double x)
|
||||
{
|
||||
|
|
12
crap_util.h
12
crap_util.h
|
@ -1,5 +1,17 @@
|
|||
#include "math.h"
|
||||
|
||||
#ifdef __SSE2__
|
||||
#include <xmmintrin.h>
|
||||
#ifndef __SSE2_MATH__
|
||||
#warning SSE2 enabled but not forced, beware denormals
|
||||
#endif
|
||||
#else
|
||||
#warning built without SSE2, denormals will be painful
|
||||
#endif
|
||||
|
||||
static void
|
||||
disable_denormals();
|
||||
|
||||
#define LIMIT(v,l,u) ((v)<(l)?(l):((v)>(u)?(u):(v)))
|
||||
#define DB2LIN(x) ((x) > -90 ? pow(10, (x) * 0.05) : 0)
|
||||
|
||||
|
|
|
@ -2,6 +2,14 @@
|
|||
#include <math.h>
|
||||
#include <stdint.h>
|
||||
|
||||
static void
|
||||
disable_denormals()
|
||||
{
|
||||
#if __SSE2__
|
||||
_mm_setcsr(_mm_getcsr() | 0x8040);
|
||||
#endif
|
||||
}
|
||||
|
||||
/* via http://www.rgba.org/articles/sfrand/sfrand.htm */
|
||||
static unsigned int mirand = 1;
|
||||
|
||||
|
|
Loading…
Reference in a new issue