33 "movq (%1), %%mm0 \n\t" 34 "movq 1(%1), %%mm4 \n\t" 35 "movq %%mm0, %%mm1 \n\t" 36 "movq %%mm4, %%mm5 \n\t" 37 "punpcklbw %%mm7, %%mm0 \n\t" 38 "punpcklbw %%mm7, %%mm4 \n\t" 39 "punpckhbw %%mm7, %%mm1 \n\t" 40 "punpckhbw %%mm7, %%mm5 \n\t" 41 "paddusw %%mm0, %%mm4 \n\t" 42 "paddusw %%mm1, %%mm5 \n\t" 43 "xor %%"REG_a
", %%"REG_a
" \n\t" 47 "movq (%1, %%"REG_a
"), %%mm0 \n\t" 48 "movq 1(%1, %%"REG_a
"), %%mm2 \n\t" 49 "movq %%mm0, %%mm1 \n\t" 50 "movq %%mm2, %%mm3 \n\t" 51 "punpcklbw %%mm7, %%mm0 \n\t" 52 "punpcklbw %%mm7, %%mm2 \n\t" 53 "punpckhbw %%mm7, %%mm1 \n\t" 54 "punpckhbw %%mm7, %%mm3 \n\t" 55 "paddusw %%mm2, %%mm0 \n\t" 56 "paddusw %%mm3, %%mm1 \n\t" 57 "paddusw %%mm6, %%mm4 \n\t" 58 "paddusw %%mm6, %%mm5 \n\t" 59 "paddusw %%mm0, %%mm4 \n\t" 60 "paddusw %%mm1, %%mm5 \n\t" 61 "psrlw $2, %%mm4 \n\t" 62 "psrlw $2, %%mm5 \n\t" 63 "packuswb %%mm5, %%mm4 \n\t" 64 "movq %%mm4, (%2, %%"REG_a
") \n\t" 65 "add %3, %%"REG_a
" \n\t" 67 "movq (%1, %%"REG_a
"), %%mm2 \n\t" 68 "movq 1(%1, %%"REG_a
"), %%mm4 \n\t" 69 "movq %%mm2, %%mm3 \n\t" 70 "movq %%mm4, %%mm5 \n\t" 71 "punpcklbw %%mm7, %%mm2 \n\t" 72 "punpcklbw %%mm7, %%mm4 \n\t" 73 "punpckhbw %%mm7, %%mm3 \n\t" 74 "punpckhbw %%mm7, %%mm5 \n\t" 75 "paddusw %%mm2, %%mm4 \n\t" 76 "paddusw %%mm3, %%mm5 \n\t" 77 "paddusw %%mm6, %%mm0 \n\t" 78 "paddusw %%mm6, %%mm1 \n\t" 79 "paddusw %%mm4, %%mm0 \n\t" 80 "paddusw %%mm5, %%mm1 \n\t" 81 "psrlw $2, %%mm0 \n\t" 82 "psrlw $2, %%mm1 \n\t" 83 "packuswb %%mm1, %%mm0 \n\t" 84 "movq %%mm0, (%2, %%"REG_a
") \n\t" 85 "add %3, %%"REG_a
" \n\t" 89 :
"+g"(h),
"+S"(pixels)
90 :
"D"(block),
"r"((
x86_reg)line_size)
101 "movq %0, %%mm0 \n\t" 102 "movq %1, %%mm1 \n\t" 103 OP_AVG(%%mm0, %%mm1, %%mm2, %%mm6)
104 "movq %%mm2, %0 \n\t" 120 "movq %0, %%mm0 \n\t" 121 "movq %1, %%mm1 \n\t" 122 OP_AVG(%%mm0, %%mm1, %%mm2, %%mm6)
123 "movq %%mm2, %0 \n\t" 124 "movq 8%0, %%mm0 \n\t" 125 "movq 8%1, %%mm1 \n\t" 126 OP_AVG(%%mm0, %%mm1, %%mm2, %%mm6)
127 "movq %%mm2, 8%0 \n\t" 143 "movq (%1), %%mm0 \n\t" 144 "movq 1(%1), %%mm4 \n\t" 145 "movq %%mm0, %%mm1 \n\t" 146 "movq %%mm4, %%mm5 \n\t" 147 "punpcklbw %%mm7, %%mm0 \n\t" 148 "punpcklbw %%mm7, %%mm4 \n\t" 149 "punpckhbw %%mm7, %%mm1 \n\t" 150 "punpckhbw %%mm7, %%mm5 \n\t" 151 "paddusw %%mm0, %%mm4 \n\t" 152 "paddusw %%mm1, %%mm5 \n\t" 153 "xor %%"REG_a
", %%"REG_a
" \n\t" 157 "movq (%1, %%"REG_a
"), %%mm0 \n\t" 158 "movq 1(%1, %%"REG_a
"), %%mm2 \n\t" 159 "movq %%mm0, %%mm1 \n\t" 160 "movq %%mm2, %%mm3 \n\t" 161 "punpcklbw %%mm7, %%mm0 \n\t" 162 "punpcklbw %%mm7, %%mm2 \n\t" 163 "punpckhbw %%mm7, %%mm1 \n\t" 164 "punpckhbw %%mm7, %%mm3 \n\t" 165 "paddusw %%mm2, %%mm0 \n\t" 166 "paddusw %%mm3, %%mm1 \n\t" 167 "paddusw %%mm6, %%mm4 \n\t" 168 "paddusw %%mm6, %%mm5 \n\t" 169 "paddusw %%mm0, %%mm4 \n\t" 170 "paddusw %%mm1, %%mm5 \n\t" 171 "psrlw $2, %%mm4 \n\t" 172 "psrlw $2, %%mm5 \n\t" 173 "movq (%2, %%"REG_a
"), %%mm3 \n\t" 174 "packuswb %%mm5, %%mm4 \n\t" 175 "pcmpeqd %%mm2, %%mm2 \n\t" 176 "paddb %%mm2, %%mm2 \n\t" 177 OP_AVG(%%mm3, %%mm4, %%mm5, %%mm2)
178 "movq %%mm5, (%2, %%"REG_a
") \n\t" 179 "add %3, %%"REG_a
" \n\t" 181 "movq (%1, %%"REG_a
"), %%mm2 \n\t" 182 "movq 1(%1, %%"REG_a
"), %%mm4 \n\t" 183 "movq %%mm2, %%mm3 \n\t" 184 "movq %%mm4, %%mm5 \n\t" 185 "punpcklbw %%mm7, %%mm2 \n\t" 186 "punpcklbw %%mm7, %%mm4 \n\t" 187 "punpckhbw %%mm7, %%mm3 \n\t" 188 "punpckhbw %%mm7, %%mm5 \n\t" 189 "paddusw %%mm2, %%mm4 \n\t" 190 "paddusw %%mm3, %%mm5 \n\t" 191 "paddusw %%mm6, %%mm0 \n\t" 192 "paddusw %%mm6, %%mm1 \n\t" 193 "paddusw %%mm4, %%mm0 \n\t" 194 "paddusw %%mm5, %%mm1 \n\t" 195 "psrlw $2, %%mm0 \n\t" 196 "psrlw $2, %%mm1 \n\t" 197 "movq (%2, %%"REG_a
"), %%mm3 \n\t" 198 "packuswb %%mm1, %%mm0 \n\t" 199 "pcmpeqd %%mm2, %%mm2 \n\t" 200 "paddb %%mm2, %%mm2 \n\t" 201 OP_AVG(%%mm3, %%mm0, %%mm1, %%mm2)
202 "movq %%mm1, (%2, %%"REG_a
") \n\t" 203 "add %3, %%"REG_a
" \n\t" 207 :
"+g"(h),
"+S"(pixels)
208 :
"D"(block),
"r"((
x86_reg)line_size)
214 DEF(
put, pixels8_xy2)(block , pixels , line_size, h);
215 DEF(
put, pixels8_xy2)(block+8, pixels+8, line_size, h);
219 DEF(
avg, pixels8_xy2)(block , pixels , line_size, h);
220 DEF(
avg, pixels8_xy2)(block+8, pixels+8, line_size, h);
static void DEF(put, pixels8_xy2)