Lines 38-49
Link Here
|
38 |
"imul %%rdx, %%rax\n\t" \ |
38 |
"imul %%rdx, %%rax\n\t" \ |
39 |
"add %%rax, %%rsi\n\t" |
39 |
"add %%rax, %%rsi\n\t" |
40 |
|
40 |
|
41 |
#define FIRMULREG(label, offset, firc)\ |
|
|
42 |
LABEL_MANGLE(label)": \n\t" \ |
43 |
"movslq "#offset"(%0), %%rax\n\t" \ |
44 |
"imul %"#firc", %%rax\n\t" \ |
45 |
"add %%rax, %%rsi\n\t" |
46 |
|
47 |
#define CLEAR_ACCUM \ |
41 |
#define CLEAR_ACCUM \ |
48 |
"xor %%rsi, %%rsi\n\t" |
42 |
"xor %%rsi, %%rsi\n\t" |
49 |
|
43 |
|
Lines 63-71
Link Here
|
63 |
"add %%eax , %%esi\n\t" \ |
57 |
"add %%eax , %%esi\n\t" \ |
64 |
"adc %%edx , %%ecx\n\t" |
58 |
"adc %%edx , %%ecx\n\t" |
65 |
|
59 |
|
66 |
#define FIRMULREG(label, offset, firc) \ |
|
|
67 |
MLPMUL(label, #offset, "0", "0") |
68 |
|
69 |
#define CLEAR_ACCUM \ |
60 |
#define CLEAR_ACCUM \ |
70 |
"xor %%esi, %%esi\n\t" \ |
61 |
"xor %%esi, %%esi\n\t" \ |
71 |
"xor %%ecx, %%ecx\n\t" |
62 |
"xor %%ecx, %%ecx\n\t" |
Lines 108-116
Link Here
|
108 |
FIRMUL (ff_mlp_firorder_6, 0x14 ) |
99 |
FIRMUL (ff_mlp_firorder_6, 0x14 ) |
109 |
FIRMUL (ff_mlp_firorder_5, 0x10 ) |
100 |
FIRMUL (ff_mlp_firorder_5, 0x10 ) |
110 |
FIRMUL (ff_mlp_firorder_4, 0x0c ) |
101 |
FIRMUL (ff_mlp_firorder_4, 0x0c ) |
111 |
FIRMULREG(ff_mlp_firorder_3, 0x08,10) |
102 |
FIRMUL (ff_mlp_firorder_3, 0x08 ) |
112 |
FIRMULREG(ff_mlp_firorder_2, 0x04, 9) |
103 |
FIRMUL (ff_mlp_firorder_2, 0x04 ) |
113 |
FIRMULREG(ff_mlp_firorder_1, 0x00, 8) |
104 |
FIRMUL (ff_mlp_firorder_1, 0x00 ) |
114 |
LABEL_MANGLE(ff_mlp_firorder_0)":\n\t" |
105 |
LABEL_MANGLE(ff_mlp_firorder_0)":\n\t" |
115 |
"jmp *%6 \n\t" |
106 |
"jmp *%6 \n\t" |
116 |
IIRMUL (ff_mlp_iirorder_4, 0x0c ) |
107 |
IIRMUL (ff_mlp_iirorder_4, 0x0c ) |
Lines 137-145
Link Here
|
137 |
/* 3*/"+r"(blocksize) |
128 |
/* 3*/"+r"(blocksize) |
138 |
: /* 4*/"r"((x86_reg)mask), /* 5*/"r"(firjump), |
129 |
: /* 4*/"r"((x86_reg)mask), /* 5*/"r"(firjump), |
139 |
/* 6*/"r"(iirjump) , /* 7*/"c"(filter_shift) |
130 |
/* 6*/"r"(iirjump) , /* 7*/"c"(filter_shift) |
140 |
, /* 8*/"r"((int64_t)coeff[0]) |
|
|
141 |
, /* 9*/"r"((int64_t)coeff[1]) |
142 |
, /*10*/"r"((int64_t)coeff[2]) |
143 |
: "rax", "rdx", "rsi" |
131 |
: "rax", "rdx", "rsi" |
144 |
#else /* ARCH_X86_32 */ |
132 |
#else /* ARCH_X86_32 */ |
145 |
/* 3*/"+m"(blocksize) |
133 |
/* 3*/"+m"(blocksize) |