annotate x86/mlpdsp.c @ 12530:63edd10ad4bc libavcodec tip

Try to fix crashes introduced by r25218 r25218 made assumptions about the existence of past reference frames that weren't necessarily true.
author darkshikari
date Tue, 28 Sep 2010 09:06:22 +0000
parents de4a8f76b1b9
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
9688
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
1 /*
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
2 * MLP DSP functions x86-optimized
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
3 * Copyright (c) 2009 Ramiro Polla
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
4 *
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
5 * This file is part of FFmpeg.
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
6 *
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
7 * FFmpeg is free software; you can redistribute it and/or
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
8 * modify it under the terms of the GNU Lesser General Public
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
9 * License as published by the Free Software Foundation; either
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
10 * version 2.1 of the License, or (at your option) any later version.
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
11 *
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
12 * FFmpeg is distributed in the hope that it will be useful,
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
15 * Lesser General Public License for more details.
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
16 *
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
17 * You should have received a copy of the GNU Lesser General Public
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
18 * License along with FFmpeg; if not, write to the Free Software
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
20 */
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
21
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
22 #include "libavutil/x86_cpu.h"
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
23 #include "libavcodec/dsputil.h"
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
24 #include "libavcodec/mlp.h"
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
25
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
26 #if HAVE_7REGS && HAVE_TEN_OPERANDS
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
27
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
28 extern void ff_mlp_firorder_8;
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
29 extern void ff_mlp_firorder_7;
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
30 extern void ff_mlp_firorder_6;
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
31 extern void ff_mlp_firorder_5;
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
32 extern void ff_mlp_firorder_4;
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
33 extern void ff_mlp_firorder_3;
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
34 extern void ff_mlp_firorder_2;
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
35 extern void ff_mlp_firorder_1;
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
36 extern void ff_mlp_firorder_0;
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
37
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
38 extern void ff_mlp_iirorder_4;
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
39 extern void ff_mlp_iirorder_3;
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
40 extern void ff_mlp_iirorder_2;
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
41 extern void ff_mlp_iirorder_1;
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
42 extern void ff_mlp_iirorder_0;
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
43
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
44 static const void *firtable[9] = { &ff_mlp_firorder_0, &ff_mlp_firorder_1,
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
45 &ff_mlp_firorder_2, &ff_mlp_firorder_3,
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
46 &ff_mlp_firorder_4, &ff_mlp_firorder_5,
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
47 &ff_mlp_firorder_6, &ff_mlp_firorder_7,
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
48 &ff_mlp_firorder_8 };
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
49 static const void *iirtable[5] = { &ff_mlp_iirorder_0, &ff_mlp_iirorder_1,
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
50 &ff_mlp_iirorder_2, &ff_mlp_iirorder_3,
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
51 &ff_mlp_iirorder_4 };
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
52
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
53 #if ARCH_X86_64
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
54
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
55 #define MLPMUL(label, offset, offs, offc) \
9704
dc3c984a1c1a mlp: Use LABEL_MANGLE() to export label symbols from inside asm block.
ramiro
parents: 9688
diff changeset
56 LABEL_MANGLE(label)": \n\t" \
9688
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
57 "movslq "offset"+"offs"(%0), %%rax\n\t" \
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
58 "movslq "offset"+"offc"(%1), %%rdx\n\t" \
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
59 "imul %%rdx, %%rax\n\t" \
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
60 "add %%rax, %%rsi\n\t"
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
61
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
62 #define FIRMULREG(label, offset, firc)\
9704
dc3c984a1c1a mlp: Use LABEL_MANGLE() to export label symbols from inside asm block.
ramiro
parents: 9688
diff changeset
63 LABEL_MANGLE(label)": \n\t" \
9688
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
64 "movslq "#offset"(%0), %%rax\n\t" \
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
65 "imul %"#firc", %%rax\n\t" \
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
66 "add %%rax, %%rsi\n\t"
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
67
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
68 #define CLEAR_ACCUM \
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
69 "xor %%rsi, %%rsi\n\t"
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
70
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
71 #define SHIFT_ACCUM \
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
72 "shr %%cl, %%rsi\n\t"
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
73
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
74 #define ACCUM "%%rdx"
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
75 #define RESULT "%%rsi"
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
76 #define RESULT32 "%%esi"
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
77
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
78 #else /* if ARCH_X86_32 */
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
79
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
80 #define MLPMUL(label, offset, offs, offc) \
9704
dc3c984a1c1a mlp: Use LABEL_MANGLE() to export label symbols from inside asm block.
ramiro
parents: 9688
diff changeset
81 LABEL_MANGLE(label)": \n\t" \
9688
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
82 "mov "offset"+"offs"(%0), %%eax\n\t" \
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
83 "imull "offset"+"offc"(%1) \n\t" \
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
84 "add %%eax , %%esi\n\t" \
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
85 "adc %%edx , %%ecx\n\t"
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
86
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
87 #define FIRMULREG(label, offset, firc) \
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
88 MLPMUL(label, #offset, "0", "0")
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
89
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
90 #define CLEAR_ACCUM \
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
91 "xor %%esi, %%esi\n\t" \
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
92 "xor %%ecx, %%ecx\n\t"
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
93
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
94 #define SHIFT_ACCUM \
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
95 "mov %%ecx, %%edx\n\t" \
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
96 "mov %%esi, %%eax\n\t" \
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
97 "movzbl %7 , %%ecx\n\t" \
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
98 "shrd %%cl, %%edx, %%eax\n\t" \
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
99
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
100 #define ACCUM "%%edx"
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
101 #define RESULT "%%eax"
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
102 #define RESULT32 "%%eax"
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
103
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
104 #endif /* !ARCH_X86_64 */
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
105
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
106 #define BINC AV_STRINGIFY(4* MAX_CHANNELS)
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
107 #define IOFFS AV_STRINGIFY(4*(MAX_FIR_ORDER + MAX_BLOCKSIZE))
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
108 #define IOFFC AV_STRINGIFY(4* MAX_FIR_ORDER)
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
109
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
110 #define FIRMUL(label, offset) MLPMUL(label, #offset, "0", "0")
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
111 #define IIRMUL(label, offset) MLPMUL(label, #offset, IOFFS, IOFFC)
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
112
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
113 static void mlp_filter_channel_x86(int32_t *state, const int32_t *coeff,
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
114 int firorder, int iirorder,
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
115 unsigned int filter_shift, int32_t mask,
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
116 int blocksize, int32_t *sample_buffer)
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
117 {
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
118 const void *firjump = firtable[firorder];
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
119 const void *iirjump = iirtable[iirorder];
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
120
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
121 blocksize = -blocksize;
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
122
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
123 __asm__ volatile(
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
124 "1: \n\t"
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
125 CLEAR_ACCUM
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
126 "jmp *%5 \n\t"
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
127 FIRMUL (ff_mlp_firorder_8, 0x1c )
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
128 FIRMUL (ff_mlp_firorder_7, 0x18 )
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
129 FIRMUL (ff_mlp_firorder_6, 0x14 )
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
130 FIRMUL (ff_mlp_firorder_5, 0x10 )
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
131 FIRMUL (ff_mlp_firorder_4, 0x0c )
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
132 FIRMULREG(ff_mlp_firorder_3, 0x08,10)
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
133 FIRMULREG(ff_mlp_firorder_2, 0x04, 9)
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
134 FIRMULREG(ff_mlp_firorder_1, 0x00, 8)
9704
dc3c984a1c1a mlp: Use LABEL_MANGLE() to export label symbols from inside asm block.
ramiro
parents: 9688
diff changeset
135 LABEL_MANGLE(ff_mlp_firorder_0)":\n\t"
9688
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
136 "jmp *%6 \n\t"
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
137 IIRMUL (ff_mlp_iirorder_4, 0x0c )
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
138 IIRMUL (ff_mlp_iirorder_3, 0x08 )
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
139 IIRMUL (ff_mlp_iirorder_2, 0x04 )
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
140 IIRMUL (ff_mlp_iirorder_1, 0x00 )
9704
dc3c984a1c1a mlp: Use LABEL_MANGLE() to export label symbols from inside asm block.
ramiro
parents: 9688
diff changeset
141 LABEL_MANGLE(ff_mlp_iirorder_0)":\n\t"
9688
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
142 SHIFT_ACCUM
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
143 "mov "RESULT" ,"ACCUM" \n\t"
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
144 "add (%2) ,"RESULT" \n\t"
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
145 "and %4 ,"RESULT" \n\t"
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
146 "sub $4 , %0 \n\t"
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
147 "mov "RESULT32", (%0) \n\t"
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
148 "mov "RESULT32", (%2) \n\t"
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
149 "add $"BINC" , %2 \n\t"
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
150 "sub "ACCUM" ,"RESULT" \n\t"
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
151 "mov "RESULT32","IOFFS"(%0) \n\t"
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
152 "incl %3 \n\t"
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
153 "js 1b \n\t"
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
154 : /* 0*/"+r"(state),
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
155 /* 1*/"+r"(coeff),
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
156 /* 2*/"+r"(sample_buffer),
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
157 #if ARCH_X86_64
9791
de4a8f76b1b9 Use fewer macros in x86-optimized mlpdsp.
ramiro
parents: 9704
diff changeset
158 /* 3*/"+r"(blocksize)
de4a8f76b1b9 Use fewer macros in x86-optimized mlpdsp.
ramiro
parents: 9704
diff changeset
159 : /* 4*/"r"((x86_reg)mask), /* 5*/"r"(firjump),
de4a8f76b1b9 Use fewer macros in x86-optimized mlpdsp.
ramiro
parents: 9704
diff changeset
160 /* 6*/"r"(iirjump) , /* 7*/"c"(filter_shift)
9688
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
161 , /* 8*/"r"((int64_t)coeff[0])
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
162 , /* 9*/"r"((int64_t)coeff[1])
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
163 , /*10*/"r"((int64_t)coeff[2])
9791
de4a8f76b1b9 Use fewer macros in x86-optimized mlpdsp.
ramiro
parents: 9704
diff changeset
164 : "rax", "rdx", "rsi"
de4a8f76b1b9 Use fewer macros in x86-optimized mlpdsp.
ramiro
parents: 9704
diff changeset
165 #else /* ARCH_X86_32 */
de4a8f76b1b9 Use fewer macros in x86-optimized mlpdsp.
ramiro
parents: 9704
diff changeset
166 /* 3*/"+m"(blocksize)
de4a8f76b1b9 Use fewer macros in x86-optimized mlpdsp.
ramiro
parents: 9704
diff changeset
167 : /* 4*/"m"( mask), /* 5*/"m"(firjump),
de4a8f76b1b9 Use fewer macros in x86-optimized mlpdsp.
ramiro
parents: 9704
diff changeset
168 /* 6*/"m"(iirjump) , /* 7*/"m"(filter_shift)
de4a8f76b1b9 Use fewer macros in x86-optimized mlpdsp.
ramiro
parents: 9704
diff changeset
169 : "eax", "edx", "esi", "ecx"
de4a8f76b1b9 Use fewer macros in x86-optimized mlpdsp.
ramiro
parents: 9704
diff changeset
170 #endif /* !ARCH_X86_64 */
9688
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
171 );
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
172 }
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
173
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
174 #endif /* HAVE_7REGS && HAVE_TEN_OPERANDS */
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
175
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
176 void ff_mlp_init_x86(DSPContext* c, AVCodecContext *avctx)
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
177 {
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
178 #if HAVE_7REGS && HAVE_TEN_OPERANDS
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
179 c->mlp_filter_channel = mlp_filter_channel_x86;
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
180 #endif
128531f67aa1 MLP DSP functions x86-optimized.
ramiro
parents:
diff changeset
181 }