Audacity 3.2.0
Classes | Macros | Typedefs | Functions
pfsimd_macros.h File Reference
#include <assert.h>
#include <string.h>
#include <stdint.h>
Include dependency graph for pfsimd_macros.h:

Go to the source code of this file.

Classes

union  v4sf_union
 

Macros

#define PFFFT_SIMD_DISABLE
 
#define SIMD_SZ   1
 
#define VREQUIRES_ALIGN   0
 
#define VZERO()   0.f
 
#define VMUL(a, b)   ((a)*(b))
 
#define VADD(a, b)   ((a)+(b))
 
#define VMADD(a, b, c)   ((a)*(b)+(c))
 
#define VSUB(a, b)   ((a)-(b))
 
#define LD_PS1(p)   (p)
 
#define VLOAD_UNALIGNED(ptr)   (*(ptr))
 
#define VLOAD_ALIGNED(ptr)   (*(ptr))
 
#define VALIGNED(ptr)   ((((uintptr_t)(ptr)) & 0x3) == 0)
 
#define VCPLXMUL(ar, ai, br, bi)   { v4sf tmp; tmp=VMUL(ar,bi); ar=VMUL(ar,br); ar=VSUB(ar,VMUL(ai,bi)); ai=VMUL(ai,br); ai=VADD(ai,tmp); }
 
#define VCPLXMULCONJ(ar, ai, br, bi)   { v4sf tmp; tmp=VMUL(ar,bi); ar=VMUL(ar,br); ar=VADD(ar,VMUL(ai,bi)); ai=VMUL(ai,br); ai=VSUB(ai,tmp); }
 
#define SVMUL(f, v)   VMUL(LD_PS1(f),v)
 
#define MALLOC_V4SF_ALIGNMENT   64
 PFFFT_SIMD_DISABLE. More...
 

Typedefs

typedef float v4sf
 
typedef union v4sf_union v4sf_union
 

Functions

static void * Valigned_malloc (size_t nb_bytes)
 
static void Valigned_free (void *p)
 

Macro Definition Documentation

◆ LD_PS1

#define LD_PS1 (   p)    (p)

Definition at line 169 of file pfsimd_macros.h.

◆ MALLOC_V4SF_ALIGNMENT

#define MALLOC_V4SF_ALIGNMENT   64

PFFFT_SIMD_DISABLE.

Definition at line 232 of file pfsimd_macros.h.

◆ PFFFT_SIMD_DISABLE

#define PFFFT_SIMD_DISABLE

Definition at line 155 of file pfsimd_macros.h.

◆ SIMD_SZ

#define SIMD_SZ   1

Definition at line 162 of file pfsimd_macros.h.

◆ SVMUL

#define SVMUL (   f,
 
)    VMUL(LD_PS1(f),v)

Definition at line 180 of file pfsimd_macros.h.

◆ VADD

#define VADD (   a,
 
)    ((a)+(b))

Definition at line 166 of file pfsimd_macros.h.

◆ VALIGNED

#define VALIGNED (   ptr)    ((((uintptr_t)(ptr)) & 0x3) == 0)

Definition at line 172 of file pfsimd_macros.h.

◆ VCPLXMUL

#define VCPLXMUL (   ar,
  ai,
  br,
  bi 
)    { v4sf tmp; tmp=VMUL(ar,bi); ar=VMUL(ar,br); ar=VSUB(ar,VMUL(ai,bi)); ai=VMUL(ai,br); ai=VADD(ai,tmp); }

Definition at line 176 of file pfsimd_macros.h.

◆ VCPLXMULCONJ

#define VCPLXMULCONJ (   ar,
  ai,
  br,
  bi 
)    { v4sf tmp; tmp=VMUL(ar,bi); ar=VMUL(ar,br); ar=VADD(ar,VMUL(ai,bi)); ai=VMUL(ai,br); ai=VSUB(ai,tmp); }

Definition at line 177 of file pfsimd_macros.h.

◆ VLOAD_ALIGNED

#define VLOAD_ALIGNED (   ptr)    (*(ptr))

Definition at line 171 of file pfsimd_macros.h.

◆ VLOAD_UNALIGNED

#define VLOAD_UNALIGNED (   ptr)    (*(ptr))

Definition at line 170 of file pfsimd_macros.h.

◆ VMADD

#define VMADD (   a,
  b,
 
)    ((a)*(b)+(c))

Definition at line 167 of file pfsimd_macros.h.

◆ VMUL

#define VMUL (   a,
 
)    ((a)*(b))

Definition at line 165 of file pfsimd_macros.h.

◆ VREQUIRES_ALIGN

#define VREQUIRES_ALIGN   0

Definition at line 163 of file pfsimd_macros.h.

◆ VSUB

#define VSUB (   a,
 
)    ((a)-(b))

Definition at line 168 of file pfsimd_macros.h.

◆ VZERO

#define VZERO ( )    0.f

Definition at line 164 of file pfsimd_macros.h.

Typedef Documentation

◆ v4sf

typedef float v4sf

Definition at line 161 of file pfsimd_macros.h.

◆ v4sf_union

typedef union v4sf_union v4sf_union

Function Documentation

◆ Valigned_free()

static void Valigned_free ( void *  p)
static

Definition at line 244 of file pfsimd_macros.h.

244 {
245 if (p) free(*((void **) p - 1));
246}
void free(void *ptr)
Definition: VectorOps.h:34

References staffpad::vo::free().

Here is the call graph for this function:

◆ Valigned_malloc()

static void * Valigned_malloc ( size_t  nb_bytes)
static

Definition at line 235 of file pfsimd_macros.h.

235 {
236 void *p, *p0 = malloc(nb_bytes + MALLOC_V4SF_ALIGNMENT);
237 if (!p0) return (void *) 0;
238 p = (void *) (((size_t) p0 + MALLOC_V4SF_ALIGNMENT) & (~((size_t) (MALLOC_V4SF_ALIGNMENT-1))));
239 *((void **) p - 1) = p0;
240 return p;
241}
#define MALLOC_V4SF_ALIGNMENT
PFFFT_SIMD_DISABLE.

References MALLOC_V4SF_ALIGNMENT.