32 "lea (%3, %3), %%"REG_a
" \n\t" 35 "movq (%1), %%mm0 \n\t" 36 "movq 1(%1), %%mm1 \n\t" 37 "movq (%1, %3), %%mm2 \n\t" 38 "movq 1(%1, %3), %%mm3 \n\t" 39 PAVGBP(%%mm0, %%mm1, %%mm4, %%mm2, %%mm3, %%mm5)
40 "movq %%mm4, (%2) \n\t" 41 "movq %%mm5, (%2, %3) \n\t" 42 "add %%"REG_a
", %1 \n\t" 43 "add %%"REG_a
", %2 \n\t" 44 "movq (%1), %%mm0 \n\t" 45 "movq 1(%1), %%mm1 \n\t" 46 "movq (%1, %3), %%mm2 \n\t" 47 "movq 1(%1, %3), %%mm3 \n\t" 48 PAVGBP(%%mm0, %%mm1, %%mm4, %%mm2, %%mm3, %%mm5)
49 "movq %%mm4, (%2) \n\t" 50 "movq %%mm5, (%2, %3) \n\t" 51 "add %%"REG_a
", %1 \n\t" 52 "add %%"REG_a
", %2 \n\t" 55 :
"+g"(h),
"+S"(pixels),
"+D"(block)
64 "lea (%3, %3), %%"REG_a
" \n\t" 67 "movq (%1), %%mm0 \n\t" 68 "movq 1(%1), %%mm1 \n\t" 69 "movq (%1, %3), %%mm2 \n\t" 70 "movq 1(%1, %3), %%mm3 \n\t" 71 PAVGBP(%%mm0, %%mm1, %%mm4, %%mm2, %%mm3, %%mm5)
72 "movq %%mm4, (%2) \n\t" 73 "movq %%mm5, (%2, %3) \n\t" 74 "movq 8(%1), %%mm0 \n\t" 75 "movq 9(%1), %%mm1 \n\t" 76 "movq 8(%1, %3), %%mm2 \n\t" 77 "movq 9(%1, %3), %%mm3 \n\t" 78 PAVGBP(%%mm0, %%mm1, %%mm4, %%mm2, %%mm3, %%mm5)
79 "movq %%mm4, 8(%2) \n\t" 80 "movq %%mm5, 8(%2, %3) \n\t" 81 "add %%"REG_a
", %1 \n\t" 82 "add %%"REG_a
", %2 \n\t" 83 "movq (%1), %%mm0 \n\t" 84 "movq 1(%1), %%mm1 \n\t" 85 "movq (%1, %3), %%mm2 \n\t" 86 "movq 1(%1, %3), %%mm3 \n\t" 87 PAVGBP(%%mm0, %%mm1, %%mm4, %%mm2, %%mm3, %%mm5)
88 "movq %%mm4, (%2) \n\t" 89 "movq %%mm5, (%2, %3) \n\t" 90 "movq 8(%1), %%mm0 \n\t" 91 "movq 9(%1), %%mm1 \n\t" 92 "movq 8(%1, %3), %%mm2 \n\t" 93 "movq 9(%1, %3), %%mm3 \n\t" 94 PAVGBP(%%mm0, %%mm1, %%mm4, %%mm2, %%mm3, %%mm5)
95 "movq %%mm4, 8(%2) \n\t" 96 "movq %%mm5, 8(%2, %3) \n\t" 97 "add %%"REG_a
", %1 \n\t" 98 "add %%"REG_a
", %2 \n\t" 101 :
"+g"(h),
"+S"(pixels),
"+D"(block)
110 "lea (%3, %3), %%"REG_a
" \n\t" 111 "movq (%1), %%mm0 \n\t" 114 "movq (%1, %3), %%mm1 \n\t" 115 "movq (%1, %%"REG_a
"),%%mm2 \n\t" 116 PAVGBP(%%mm1, %%mm0, %%mm4, %%mm2, %%mm1, %%mm5)
117 "movq %%mm4, (%2) \n\t" 118 "movq %%mm5, (%2, %3) \n\t" 119 "add %%"REG_a
", %1 \n\t" 120 "add %%"REG_a
", %2 \n\t" 121 "movq (%1, %3), %%mm1 \n\t" 122 "movq (%1, %%"REG_a
"),%%mm0 \n\t" 123 PAVGBP(%%mm1, %%mm2, %%mm4, %%mm0, %%mm1, %%mm5)
124 "movq %%mm4, (%2) \n\t" 125 "movq %%mm5, (%2, %3) \n\t" 126 "add %%"REG_a
", %1 \n\t" 127 "add %%"REG_a
", %2 \n\t" 130 :
"+g"(h),
"+S"(pixels),
"+D"(block)
140 "movq (%1), %%mm0 \n\t" 141 "movq 1(%1), %%mm4 \n\t" 142 "movq %%mm0, %%mm1 \n\t" 143 "movq %%mm4, %%mm5 \n\t" 144 "punpcklbw %%mm7, %%mm0 \n\t" 145 "punpcklbw %%mm7, %%mm4 \n\t" 146 "punpckhbw %%mm7, %%mm1 \n\t" 147 "punpckhbw %%mm7, %%mm5 \n\t" 148 "paddusw %%mm0, %%mm4 \n\t" 149 "paddusw %%mm1, %%mm5 \n\t" 150 "xor %%"REG_a
", %%"REG_a
" \n\t" 154 "movq (%1, %%"REG_a
"), %%mm0 \n\t" 155 "movq 1(%1, %%"REG_a
"), %%mm2 \n\t" 156 "movq %%mm0, %%mm1 \n\t" 157 "movq %%mm2, %%mm3 \n\t" 158 "punpcklbw %%mm7, %%mm0 \n\t" 159 "punpcklbw %%mm7, %%mm2 \n\t" 160 "punpckhbw %%mm7, %%mm1 \n\t" 161 "punpckhbw %%mm7, %%mm3 \n\t" 162 "paddusw %%mm2, %%mm0 \n\t" 163 "paddusw %%mm3, %%mm1 \n\t" 164 "paddusw %%mm6, %%mm4 \n\t" 165 "paddusw %%mm6, %%mm5 \n\t" 166 "paddusw %%mm0, %%mm4 \n\t" 167 "paddusw %%mm1, %%mm5 \n\t" 168 "psrlw $2, %%mm4 \n\t" 169 "psrlw $2, %%mm5 \n\t" 170 "packuswb %%mm5, %%mm4 \n\t" 171 "movq %%mm4, (%2, %%"REG_a
") \n\t" 172 "add %3, %%"REG_a
" \n\t" 174 "movq (%1, %%"REG_a
"), %%mm2 \n\t" 175 "movq 1(%1, %%"REG_a
"), %%mm4 \n\t" 176 "movq %%mm2, %%mm3 \n\t" 177 "movq %%mm4, %%mm5 \n\t" 178 "punpcklbw %%mm7, %%mm2 \n\t" 179 "punpcklbw %%mm7, %%mm4 \n\t" 180 "punpckhbw %%mm7, %%mm3 \n\t" 181 "punpckhbw %%mm7, %%mm5 \n\t" 182 "paddusw %%mm2, %%mm4 \n\t" 183 "paddusw %%mm3, %%mm5 \n\t" 184 "paddusw %%mm6, %%mm0 \n\t" 185 "paddusw %%mm6, %%mm1 \n\t" 186 "paddusw %%mm4, %%mm0 \n\t" 187 "paddusw %%mm5, %%mm1 \n\t" 188 "psrlw $2, %%mm0 \n\t" 189 "psrlw $2, %%mm1 \n\t" 190 "packuswb %%mm1, %%mm0 \n\t" 191 "movq %%mm0, (%2, %%"REG_a
") \n\t" 192 "add %3, %%"REG_a
" \n\t" 196 :
"+g"(h),
"+S"(pixels)
197 :
"D"(block),
"r"((
x86_reg)line_size)
210 "movq %0, %%mm0 \n\t" 211 "movq %1, %%mm1 \n\t" 212 OP_AVG(%%mm0, %%mm1, %%mm2, %%mm6)
213 "movq %%mm2, %0 \n\t" 230 "movq %0, %%mm0 \n\t" 231 "movq %1, %%mm1 \n\t" 232 OP_AVG(%%mm0, %%mm1, %%mm2, %%mm6)
233 "movq %%mm2, %0 \n\t" 234 "movq 8%0, %%mm0 \n\t" 235 "movq 8%1, %%mm1 \n\t" 236 OP_AVG(%%mm0, %%mm1, %%mm2, %%mm6)
237 "movq %%mm2, 8%0 \n\t" 254 "movq %1, %%mm0 \n\t" 255 "movq 1%1, %%mm1 \n\t" 256 "movq %0, %%mm3 \n\t" 257 PAVGB(%%mm0, %%mm1, %%mm2, %%mm6)
258 OP_AVG(%%mm3, %%mm2, %%mm0, %%mm6)
259 "movq %%mm0, %0 \n\t" 275 "movq %1, %%mm0 \n\t" 276 "movq 1%1, %%mm1 \n\t" 277 "movq %0, %%mm3 \n\t" 278 PAVGB(%%mm0, %%mm1, %%mm2, %%mm6)
279 OP_AVG(%%mm3, %%mm2, %%mm0, %%mm6)
280 "movq %%mm0, %0 \n\t" 281 "movq 8%1, %%mm0 \n\t" 282 "movq 9%1, %%mm1 \n\t" 283 "movq 8%0, %%mm3 \n\t" 284 PAVGB(%%mm0, %%mm1, %%mm2, %%mm6)
285 OP_AVG(%%mm3, %%mm2, %%mm0, %%mm6)
286 "movq %%mm0, 8%0 \n\t" 299 "lea (%3, %3), %%"REG_a
" \n\t" 300 "movq (%1), %%mm0 \n\t" 303 "movq (%1, %3), %%mm1 \n\t" 304 "movq (%1, %%"REG_a
"), %%mm2 \n\t" 305 PAVGBP(%%mm1, %%mm0, %%mm4, %%mm2, %%mm1, %%mm5)
306 "movq (%2), %%mm3 \n\t" 307 OP_AVG(%%mm3, %%mm4, %%mm0, %%mm6)
308 "movq (%2, %3), %%mm3 \n\t" 309 OP_AVG(%%mm3, %%mm5, %%mm1, %%mm6)
310 "movq %%mm0, (%2) \n\t" 311 "movq %%mm1, (%2, %3) \n\t" 312 "add %%"REG_a
", %1 \n\t" 313 "add %%"REG_a
", %2 \n\t" 315 "movq (%1, %3), %%mm1 \n\t" 316 "movq (%1, %%"REG_a
"), %%mm0 \n\t" 317 PAVGBP(%%mm1, %%mm2, %%mm4, %%mm0, %%mm1, %%mm5)
318 "movq (%2), %%mm3 \n\t" 319 OP_AVG(%%mm3, %%mm4, %%mm2, %%mm6)
320 "movq (%2, %3), %%mm3 \n\t" 321 OP_AVG(%%mm3, %%mm5, %%mm1, %%mm6)
322 "movq %%mm2, (%2) \n\t" 323 "movq %%mm1, (%2, %3) \n\t" 324 "add %%"REG_a
", %1 \n\t" 325 "add %%"REG_a
", %2 \n\t" 329 :
"+g"(h),
"+S"(pixels),
"+D"(block)
340 "movq (%1), %%mm0 \n\t" 341 "movq 1(%1), %%mm4 \n\t" 342 "movq %%mm0, %%mm1 \n\t" 343 "movq %%mm4, %%mm5 \n\t" 344 "punpcklbw %%mm7, %%mm0 \n\t" 345 "punpcklbw %%mm7, %%mm4 \n\t" 346 "punpckhbw %%mm7, %%mm1 \n\t" 347 "punpckhbw %%mm7, %%mm5 \n\t" 348 "paddusw %%mm0, %%mm4 \n\t" 349 "paddusw %%mm1, %%mm5 \n\t" 350 "xor %%"REG_a
", %%"REG_a
" \n\t" 354 "movq (%1, %%"REG_a
"), %%mm0 \n\t" 355 "movq 1(%1, %%"REG_a
"), %%mm2 \n\t" 356 "movq %%mm0, %%mm1 \n\t" 357 "movq %%mm2, %%mm3 \n\t" 358 "punpcklbw %%mm7, %%mm0 \n\t" 359 "punpcklbw %%mm7, %%mm2 \n\t" 360 "punpckhbw %%mm7, %%mm1 \n\t" 361 "punpckhbw %%mm7, %%mm3 \n\t" 362 "paddusw %%mm2, %%mm0 \n\t" 363 "paddusw %%mm3, %%mm1 \n\t" 364 "paddusw %%mm6, %%mm4 \n\t" 365 "paddusw %%mm6, %%mm5 \n\t" 366 "paddusw %%mm0, %%mm4 \n\t" 367 "paddusw %%mm1, %%mm5 \n\t" 368 "psrlw $2, %%mm4 \n\t" 369 "psrlw $2, %%mm5 \n\t" 370 "movq (%2, %%"REG_a
"), %%mm3 \n\t" 371 "packuswb %%mm5, %%mm4 \n\t" 372 "pcmpeqd %%mm2, %%mm2 \n\t" 373 "paddb %%mm2, %%mm2 \n\t" 374 OP_AVG(%%mm3, %%mm4, %%mm5, %%mm2)
375 "movq %%mm5, (%2, %%"REG_a
") \n\t" 376 "add %3, %%"REG_a
" \n\t" 378 "movq (%1, %%"REG_a
"), %%mm2 \n\t" 379 "movq 1(%1, %%"REG_a
"), %%mm4 \n\t" 380 "movq %%mm2, %%mm3 \n\t" 381 "movq %%mm4, %%mm5 \n\t" 382 "punpcklbw %%mm7, %%mm2 \n\t" 383 "punpcklbw %%mm7, %%mm4 \n\t" 384 "punpckhbw %%mm7, %%mm3 \n\t" 385 "punpckhbw %%mm7, %%mm5 \n\t" 386 "paddusw %%mm2, %%mm4 \n\t" 387 "paddusw %%mm3, %%mm5 \n\t" 388 "paddusw %%mm6, %%mm0 \n\t" 389 "paddusw %%mm6, %%mm1 \n\t" 390 "paddusw %%mm4, %%mm0 \n\t" 391 "paddusw %%mm5, %%mm1 \n\t" 392 "psrlw $2, %%mm0 \n\t" 393 "psrlw $2, %%mm1 \n\t" 394 "movq (%2, %%"REG_a
"), %%mm3 \n\t" 395 "packuswb %%mm1, %%mm0 \n\t" 396 "pcmpeqd %%mm2, %%mm2 \n\t" 397 "paddb %%mm2, %%mm2 \n\t" 398 OP_AVG(%%mm3, %%mm0, %%mm1, %%mm2)
399 "movq %%mm1, (%2, %%"REG_a
") \n\t" 400 "add %3, %%"REG_a
" \n\t" 404 :
"+g"(h),
"+S"(pixels)
405 :
"D"(block),
"r"((
x86_reg)line_size)
411 DEF(
put, pixels8_y2)(block , pixels , line_size, h);
412 DEF(
put, pixels8_y2)(block+8, pixels+8, line_size, h);
416 DEF(
put, pixels8_xy2)(block , pixels , line_size, h);
417 DEF(
put, pixels8_xy2)(block+8, pixels+8, line_size, h);
421 DEF(
avg, pixels8_y2)(block , pixels , line_size, h);
422 DEF(
avg, pixels8_y2)(block+8, pixels+8, line_size, h);
426 DEF(
avg, pixels8_xy2)(block , pixels , line_size, h);
427 DEF(
avg, pixels8_xy2)(block+8, pixels+8, line_size, h);
static void DEF(put, pixels8_x2)