simple_idct_mmx.c File Reference

Go to the source code of this file.

Macros

#define C0   23170
#define C1   22725
#define C2   21407
#define C3   19266
#define C4   16383
#define C5   12873
#define C6   8867
#define C7   4520
#define ROW_SHIFT   11
#define COL_SHIFT   20
#define DC_COND_IDCT(src0, src4, src1, src5, dst, rounder, shift)
#define Z_COND_IDCT(src0, src4, src1, src5, dst, rounder, shift, bt)
#define ROW_IDCT(src0, src4, src1, src5, dst, rounder, shift)
#define IDCT(src0, src4, src1, src5, dst, shift)
#define IDCT(src0, src4, src1, src5, dst, shift)
#define IDCT(src0, src4, src1, src5, dst, shift)
#define IDCT(src0, src4, src1, src5, dst, shift)
#define IDCT(src0, src4, src1, src5, dst, shift)
#define IDCT(src0, src4, src1, src5, dst, shift)
#define IDCT(src0, src4, src1, src5, dst, shift)
#define IDCT(src0, src4, src1, src5, dst, shift)

Functions

 DECLARE_ASM_CONST (DECLARE_ASM_CONST(8, DECLARE_ASM_CONST(uint64_t, wm1010)
static void idct (int16_t *block)
void ff_simple_idct_mmx (int16_t *block)
void ff_simple_idct_put_mmx (uint8_t *dest, int line_size, DCTELEM *block)
void ff_simple_idct_add_mmx (uint8_t *dest, int line_size, DCTELEM *block)

Macro Definition Documentation

#define C0   23170

Definition at line 36 of file simple_idct_mmx.c.

#define C1   22725

Definition at line 37 of file simple_idct_mmx.c.

Referenced by DECLARE_ASM_CONST().

#define C2   21407

Definition at line 38 of file simple_idct_mmx.c.

Referenced by DECLARE_ASM_CONST().

#define C3   19266

Definition at line 39 of file simple_idct_mmx.c.

Referenced by DECLARE_ASM_CONST().

#define C4   16383

Definition at line 40 of file simple_idct_mmx.c.

Referenced by DECLARE_ASM_CONST().

#define C5   12873

Definition at line 41 of file simple_idct_mmx.c.

Referenced by DECLARE_ASM_CONST().

#define C6   8867

Definition at line 42 of file simple_idct_mmx.c.

Referenced by DECLARE_ASM_CONST().

#define C7   4520

Definition at line 43 of file simple_idct_mmx.c.

Referenced by DECLARE_ASM_CONST().

#define COL_SHIFT   20

Definition at line 46 of file simple_idct_mmx.c.

#define DC_COND_IDCT (   src0,
  src4,
  src1,
  src5,
  dst,
  rounder,
  shift 
)

Referenced by idct().

#define IDCT (   src0,
  src4,
  src1,
  src5,
  dst,
  shift 
)
#define IDCT (   src0,
  src4,
  src1,
  src5,
  dst,
  shift 
)
#define IDCT (   src0,
  src4,
  src1,
  src5,
  dst,
  shift 
)
#define IDCT (   src0,
  src4,
  src1,
  src5,
  dst,
  shift 
)
#define IDCT (   src0,
  src4,
  src1,
  src5,
  dst,
  shift 
)
#define IDCT (   src0,
  src4,
  src1,
  src5,
  dst,
  shift 
)
#define IDCT (   src0,
  src4,
  src1,
  src5,
  dst,
  shift 
)
#define IDCT (   src0,
  src4,
  src1,
  src5,
  dst,
  shift 
)
Value:
"movq " #src0 ", %%mm0 \n\t" /* R4 R0 r4 r0 */\
"movq 16(%2), %%mm4 \n\t" /* C4 C4 C4 C4 */\
"pmaddwd %%mm0, %%mm4 \n\t" /* C4R4+C4R0 C4r4+C4r0 */\
"movq 24(%2), %%mm5 \n\t" /* -C4 C4 -C4 C4 */\
"pmaddwd %%mm5, %%mm0 \n\t" /* -C4R4+C4R0 -C4r4+C4r0 */\
"psrad $" #shift ", %%mm4 \n\t"\
"psrad $" #shift ", %%mm0 \n\t"\
"movq 8+" #src0 ", %%mm2 \n\t" /* R4 R0 r4 r0 */\
"movq 16(%2), %%mm1 \n\t" /* C4 C4 C4 C4 */\
"pmaddwd %%mm2, %%mm1 \n\t" /* C4R4+C4R0 C4r4+C4r0 */\
"movq 24(%2), %%mm7 \n\t" /* -C4 C4 -C4 C4 */\
"pmaddwd %%mm7, %%mm2 \n\t" /* -C4R4+C4R0 -C4r4+C4r0 */\
"movq 32(%2), %%mm7 \n\t" /* C6 C2 C6 C2 */\
"psrad $" #shift ", %%mm1 \n\t"\
"packssdw %%mm1, %%mm4 \n\t" /* A0 a0 */\
"movq %%mm4, " #dst " \n\t"\
"psrad $" #shift ", %%mm2 \n\t"\
"packssdw %%mm2, %%mm0 \n\t" /* A1 a1 */\
"movq %%mm0, 16+" #dst " \n\t"\
"movq %%mm0, 96+" #dst " \n\t"\
"movq %%mm4, 112+" #dst " \n\t"\
"movq %%mm0, 32+" #dst " \n\t"\
"movq %%mm4, 48+" #dst " \n\t"\
"movq %%mm4, 64+" #dst " \n\t"\
"movq %%mm0, 80+" #dst " \n\t"
#define ROW_IDCT (   src0,
  src4,
  src1,
  src5,
  dst,
  rounder,
  shift 
)

Referenced by idct().

#define ROW_SHIFT   11

Definition at line 45 of file simple_idct_mmx.c.

Referenced by DECLARE_ASM_CONST().

#define Z_COND_IDCT (   src0,
  src4,
  src1,
  src5,
  dst,
  rounder,
  shift,
  bt 
)

Referenced by idct().

Function Documentation

DECLARE_ASM_CONST ( DECLARE_ASM_CONST(  8,
DECLARE_ASM_CONST(  uint64_t,
wm1010   
)
pure virtual

Definition at line 48 of file simple_idct_mmx.c.

void ff_simple_idct_add_mmx ( uint8_t *  dest,
int  line_size,
DCTELEM block 
)

Definition at line 1159 of file simple_idct_mmx.c.

void ff_simple_idct_mmx ( int16_t *  block)

Definition at line 1147 of file simple_idct_mmx.c.

Referenced by dsputil_init_mmx().

void ff_simple_idct_put_mmx ( uint8_t *  dest,
int  line_size,
DCTELEM block 
)

Definition at line 1154 of file simple_idct_mmx.c.

static void idct ( int16_t *  block)
inlinestatic