xine-lib 1.2.11
Macros
tomsmocompmacros.h File Reference
#include <string.h>
#include <math.h>
#include <stdlib.h>
#include "mangle.h"

Go to the source code of this file.

Macros

#define USE_FOR_DSCALER
 
#define MyMemCopy   xine_fast_memcpy
 
#define V_PAVGB_MMX(mmr1, mmr2, mmrw, smask)
 
#define V_PAVGB_SSE(mmr1, mmr2, mmrw, smask)   "pavgb "mmr2", "mmr1"\n\t"
 
#define V_PAVGB_3DNOW(mmr1, mmr2, mmrw, smask)   "pavgusb "mmr2", "mmr1"\n\t"
 
#define V_PAVGB(mmr1, mmr2, mmrw, smask)   V_PAVGB2(mmr1, mmr2, mmrw, smask, SSE_TYPE)
 
#define V_PAVGB2(mmr1, mmr2, mmrw, smask, ssetyp)   V_PAVGB3(mmr1, mmr2, mmrw, smask, ssetyp)
 
#define V_PAVGB3(mmr1, mmr2, mmrw, smask, ssetyp)   V_PAVGB_##ssetyp(mmr1, mmr2, mmrw, smask)
 
#define V_PMAXUB_MMX(mmr1, mmr2)
 
#define V_PMAXUB_SSE(mmr1, mmr2)   "pmaxub "mmr2", "mmr1"\n\t"
 
#define V_PMAXUB_3DNOW(mmr1, mmr2)   V_PMAXUB_MMX(mmr1, mmr2)
 
#define V_PMAXUB(mmr1, mmr2)   V_PMAXUB2(mmr1, mmr2, SSE_TYPE)
 
#define V_PMAXUB2(mmr1, mmr2, ssetyp)   V_PMAXUB3(mmr1, mmr2, ssetyp)
 
#define V_PMAXUB3(mmr1, mmr2, ssetyp)   V_PMAXUB_##ssetyp(mmr1, mmr2)
 
#define V_PMINUB_MMX(mmr1, mmr2, mmrw)
 
#define V_PMINUB_SSE(mmr1, mmr2, mmrw)   "pminub "mmr2", "mmr1"\n\t"
 
#define V_PMINUB_3DNOW(mmr1, mmr2, mmrw)   V_PMINUB_MMX(mmr1, mmr2, mmrw)
 
#define V_PMINUB(mmr1, mmr2, mmrw)   V_PMINUB2(mmr1, mmr2, mmrw, SSE_TYPE)
 
#define V_PMINUB2(mmr1, mmr2, mmrw, ssetyp)   V_PMINUB3(mmr1, mmr2, mmrw, ssetyp)
 
#define V_PMINUB3(mmr1, mmr2, mmrw, ssetyp)   V_PMINUB_##ssetyp(mmr1, mmr2, mmrw)
 
#define V_MOVNTQ_MMX(mmr1, mmr2)   "movq "mmr2", "mmr1"\n\t"
 
#define V_MOVNTQ_3DNOW(mmr1, mmr2)   "movq "mmr2", "mmr1"\n\t"
 
#define V_MOVNTQ_SSE(mmr1, mmr2)   "movntq "mmr2", "mmr1"\n\t"
 
#define V_MOVNTQ(mmr1, mmr2)   V_MOVNTQ2(mmr1, mmr2, SSE_TYPE)
 
#define V_MOVNTQ2(mmr1, mmr2, ssetyp)   V_MOVNTQ3(mmr1, mmr2, ssetyp)
 
#define V_MOVNTQ3(mmr1, mmr2, ssetyp)   V_MOVNTQ_##ssetyp(mmr1, mmr2)
 
#define MERGE4PIXavg(PADDR1, PADDR2)
 
#define MERGE4PIXavgH(PADDR1A, PADDR1B, PADDR2A, PADDR2B)
 
#define RESET_CHROMA   "por "_UVMask", %%mm7\n\t"
 

Macro Definition Documentation

◆ MERGE4PIXavg

#define MERGE4PIXavg (   PADDR1,
  PADDR2 
)
Value:
"movq "PADDR1", %%mm0\n\t" /* our 4 pixels */ \
"movq "PADDR2", %%mm1\n\t" /* our pixel2 value */ \
"movq %%mm0, %%mm2\n\t" /* another copy of our pixel1 value */ \
"movq %%mm1, %%mm3\n\t" /* another copy of our pixel1 value */ \
"psubusb %%mm1, %%mm2\n\t" \
"psubusb %%mm0, %%mm3\n\t" \
"por %%mm3, %%mm2\n\t" \
V_PAVGB ("%%mm0", "%%mm1", "%%mm3", _ShiftMask) /* avg of 2 pixels */ \
"movq %%mm2, %%mm3\n\t" /* another copy of our our weights */ \
"pxor %%mm1, %%mm1\n\t" \
"psubusb %%mm7, %%mm3\n\t" /* nonzero where old weights lower, else 0 */ \
"pcmpeqb %%mm1, %%mm3\n\t" /* now ff where new better, else 00 */ \
"pcmpeqb %%mm3, %%mm1\n\t" /* here ff where old better, else 00 */ \
"pand %%mm3, %%mm0\n\t" /* keep only better new pixels */ \
"pand %%mm3, %%mm2\n\t" /* and weights */ \
"pand %%mm1, %%mm5\n\t" /* keep only better old pixels */ \
"pand %%mm1, %%mm7\n\t" \
"por %%mm0, %%mm5\n\t" /* and merge new & old vals */ \
"por %%mm2, %%mm7\n\t"

◆ MERGE4PIXavgH

#define MERGE4PIXavgH (   PADDR1A,
  PADDR1B,
  PADDR2A,
  PADDR2B 
)
Value:
"movq "PADDR1A", %%mm0\n\t" /* our 4 pixels */ \
"movq "PADDR2A", %%mm1\n\t" /* our pixel2 value */ \
"movq "PADDR1B", %%mm2\n\t" /* our 4 pixels */ \
"movq "PADDR2B", %%mm3\n\t" /* our pixel2 value */ \
V_PAVGB("%%mm0", "%%mm2", "%%mm2", _ShiftMask) \
V_PAVGB("%%mm1", "%%mm3", "%%mm3", _ShiftMask) \
"movq %%mm0, %%mm2\n\t" /* another copy of our pixel1 value */ \
"movq %%mm1, %%mm3\n\t" /* another copy of our pixel1 value */ \
"psubusb %%mm1, %%mm2\n\t" \
"psubusb %%mm0, %%mm3\n\t" \
"por %%mm3, %%mm2\n\t" \
V_PAVGB("%%mm0", "%%mm1", "%%mm3", _ShiftMask) /* avg of 2 pixels */ \
"movq %%mm2, %%mm3\n\t" /* another copy of our our weights */ \
"pxor %%mm1, %%mm1\n\t" \
"psubusb %%mm7, %%mm3\n\t" /* nonzero where old weights lower, else 0 */ \
"pcmpeqb %%mm1, %%mm3\n\t" /* now ff where new better, else 00 */ \
"pcmpeqb %%mm3, %%mm1\n\t" /* here ff where old better, else 00 */ \
"pand %%mm3, %%mm0\n\t" /* keep only better new pixels */ \
"pand %%mm3, %%mm2\n\t" /* and weights */ \
"pand %%mm1, %%mm5\n\t" /* keep only better old pixels */ \
"pand %%mm1, %%mm7\n\t" \
"por %%mm0, %%mm5\n\t" /* and merge new & old vals */ \
"por %%mm2, %%mm7\n\t"

◆ MyMemCopy

#define MyMemCopy   xine_fast_memcpy

◆ RESET_CHROMA

#define RESET_CHROMA   "por "_UVMask", %%mm7\n\t"

◆ USE_FOR_DSCALER

#define USE_FOR_DSCALER

◆ V_MOVNTQ

#define V_MOVNTQ (   mmr1,
  mmr2 
)    V_MOVNTQ2(mmr1, mmr2, SSE_TYPE)

◆ V_MOVNTQ2

#define V_MOVNTQ2 (   mmr1,
  mmr2,
  ssetyp 
)    V_MOVNTQ3(mmr1, mmr2, ssetyp)

◆ V_MOVNTQ3

#define V_MOVNTQ3 (   mmr1,
  mmr2,
  ssetyp 
)    V_MOVNTQ_##ssetyp(mmr1, mmr2)

◆ V_MOVNTQ_3DNOW

#define V_MOVNTQ_3DNOW (   mmr1,
  mmr2 
)    "movq "mmr2", "mmr1"\n\t"

◆ V_MOVNTQ_MMX

#define V_MOVNTQ_MMX (   mmr1,
  mmr2 
)    "movq "mmr2", "mmr1"\n\t"

◆ V_MOVNTQ_SSE

#define V_MOVNTQ_SSE (   mmr1,
  mmr2 
)    "movntq "mmr2", "mmr1"\n\t"

◆ V_PAVGB

#define V_PAVGB (   mmr1,
  mmr2,
  mmrw,
  smask 
)    V_PAVGB2(mmr1, mmr2, mmrw, smask, SSE_TYPE)

◆ V_PAVGB2

#define V_PAVGB2 (   mmr1,
  mmr2,
  mmrw,
  smask,
  ssetyp 
)    V_PAVGB3(mmr1, mmr2, mmrw, smask, ssetyp)

◆ V_PAVGB3

#define V_PAVGB3 (   mmr1,
  mmr2,
  mmrw,
  smask,
  ssetyp 
)    V_PAVGB_##ssetyp(mmr1, mmr2, mmrw, smask)

◆ V_PAVGB_3DNOW

#define V_PAVGB_3DNOW (   mmr1,
  mmr2,
  mmrw,
  smask 
)    "pavgusb "mmr2", "mmr1"\n\t"

◆ V_PAVGB_MMX

#define V_PAVGB_MMX (   mmr1,
  mmr2,
  mmrw,
  smask 
)
Value:
"movq "mmr2", "mmrw"\n\t" \
"pand "smask", "mmrw"\n\t" \
"psrlw $1, "mmrw"\n\t" \
"pand "smask", "mmr1"\n\t" \
"psrlw $1, "mmr1"\n\t" \
"paddusb "mmrw", "mmr1"\n\t"

◆ V_PAVGB_SSE

#define V_PAVGB_SSE (   mmr1,
  mmr2,
  mmrw,
  smask 
)    "pavgb "mmr2", "mmr1"\n\t"

◆ V_PMAXUB

#define V_PMAXUB (   mmr1,
  mmr2 
)    V_PMAXUB2(mmr1, mmr2, SSE_TYPE)

◆ V_PMAXUB2

#define V_PMAXUB2 (   mmr1,
  mmr2,
  ssetyp 
)    V_PMAXUB3(mmr1, mmr2, ssetyp)

◆ V_PMAXUB3

#define V_PMAXUB3 (   mmr1,
  mmr2,
  ssetyp 
)    V_PMAXUB_##ssetyp(mmr1, mmr2)

◆ V_PMAXUB_3DNOW

#define V_PMAXUB_3DNOW (   mmr1,
  mmr2 
)    V_PMAXUB_MMX(mmr1, mmr2)

◆ V_PMAXUB_MMX

#define V_PMAXUB_MMX (   mmr1,
  mmr2 
)
Value:
"psubusb "mmr2", "mmr1"\n\t" \
"paddusb "mmr2", "mmr1"\n\t"

◆ V_PMAXUB_SSE

#define V_PMAXUB_SSE (   mmr1,
  mmr2 
)    "pmaxub "mmr2", "mmr1"\n\t"

◆ V_PMINUB

#define V_PMINUB (   mmr1,
  mmr2,
  mmrw 
)    V_PMINUB2(mmr1, mmr2, mmrw, SSE_TYPE)

◆ V_PMINUB2

#define V_PMINUB2 (   mmr1,
  mmr2,
  mmrw,
  ssetyp 
)    V_PMINUB3(mmr1, mmr2, mmrw, ssetyp)

◆ V_PMINUB3

#define V_PMINUB3 (   mmr1,
  mmr2,
  mmrw,
  ssetyp 
)    V_PMINUB_##ssetyp(mmr1, mmr2, mmrw)

◆ V_PMINUB_3DNOW

#define V_PMINUB_3DNOW (   mmr1,
  mmr2,
  mmrw 
)    V_PMINUB_MMX(mmr1, mmr2, mmrw)

◆ V_PMINUB_MMX

#define V_PMINUB_MMX (   mmr1,
  mmr2,
  mmrw 
)
Value:
"pcmpeqb "mmrw", "mmrw"\n\t" \
"psubusb "mmr2", "mmrw"\n\t" \
"paddusb "mmrw", "mmr1"\n\t" \
"psubusb "mmrw", "mmr1"\n\t"

◆ V_PMINUB_SSE

#define V_PMINUB_SSE (   mmr1,
  mmr2,
  mmrw 
)    "pminub "mmr2", "mmr1"\n\t"