37 MMI_LDC1(%[ftmp0], %[block], 0x00)
38 MMI_LDC1(%[ftmp1], %[block], 0x08)
39 MMI_LDC1(%[ftmp2], %[block], 0x10)
40 MMI_LDC1(%[ftmp3], %[block], 0x18)
41 MMI_LDC1(%[ftmp4], %[block], 0x20)
42 MMI_LDC1(%[ftmp5], %[block], 0x28)
43 MMI_LDC1(%[ftmp6], %[block], 0x30)
44 MMI_LDC1(%[ftmp7], %[block], 0x38)
45 PTR_ADDU "%[addr0], %[pixels], %[line_size] \n\t"
46 "packushb %[ftmp0], %[ftmp0], %[ftmp1] \n\t"
47 "packushb %[ftmp2], %[ftmp2], %[ftmp3] \n\t"
48 "packushb %[ftmp4], %[ftmp4], %[ftmp5] \n\t"
49 "packushb %[ftmp6], %[ftmp6], %[ftmp7] \n\t"
50 MMI_SDC1(%[ftmp0], %[pixels], 0x00)
51 MMI_SDC1(%[ftmp2], %[addr0], 0x00)
52 MMI_SDXC1(%[ftmp4], %[addr0], %[line_size], 0x00)
53 MMI_SDXC1(%[ftmp6], %[pixels], %[line_sizex3], 0x00)
54 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
55 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
56 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
57 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
60 [addr0]
"=&r"(addr[0]),
62 : [line_size]
"r"((
mips_reg)line_size),
63 [line_sizex3]
"r"((
mips_reg)(line_size*3)),
68 pixels += line_size*4;
72 MMI_LDC1(%[ftmp0], %[block], 0x00)
73 MMI_LDC1(%[ftmp1], %[block], 0x08)
74 MMI_LDC1(%[ftmp2], %[block], 0x10)
75 MMI_LDC1(%[ftmp3], %[block], 0x18)
76 MMI_LDC1(%[ftmp4], %[block], 0x20)
77 MMI_LDC1(%[ftmp5], %[block], 0x28)
78 MMI_LDC1(%[ftmp6], %[block], 0x30)
79 MMI_LDC1(%[ftmp7], %[block], 0x38)
80 PTR_ADDU "%[addr0], %[pixels], %[line_size] \n\t"
81 "packushb %[ftmp0], %[ftmp0], %[ftmp1] \n\t"
82 "packushb %[ftmp2], %[ftmp2], %[ftmp3] \n\t"
83 "packushb %[ftmp4], %[ftmp4], %[ftmp5] \n\t"
84 "packushb %[ftmp6], %[ftmp6], %[ftmp7] \n\t"
85 MMI_SDC1(%[ftmp0], %[pixels], 0x00)
86 MMI_SDC1(%[ftmp2], %[addr0], 0x00)
87 MMI_SDXC1(%[ftmp4], %[addr0], %[line_size], 0x00)
88 MMI_SDXC1(%[ftmp6], %[pixels], %[line_sizex3], 0x00)
89 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
90 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
91 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
92 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
95 [addr0]
"=&r"(addr[0]),
97 : [line_size]
"r"((
mips_reg)line_size),
98 [line_sizex3]
"r"((
mips_reg)(line_size*3)),
107 int64_t line_skip = line_size;
108 int64_t line_skip3 = 0;
115 PTR_ADDU "%[line_skip3], %[line_skip], %[line_skip] \n\t"
116 MMI_LDC1(%[ftmp1], %[block], 0x00)
117 MMI_LDC1(%[ftmp0], %[block], 0x08)
118 "packsshb %[ftmp1], %[ftmp1], %[ftmp0] \n\t"
119 MMI_LDC1(%[ftmp2], %[block], 0x10)
120 MMI_LDC1(%[ftmp0], %[block], 0x18)
121 "packsshb %[ftmp2], %[ftmp2], %[ftmp0] \n\t"
122 MMI_LDC1(%[ftmp3], %[block], 0x20)
123 MMI_LDC1(%[ftmp0], %[block], 0x28)
124 "packsshb %[ftmp3], %[ftmp3], %[ftmp0] \n\t"
125 MMI_LDC1(%[ftmp4], %[block], 0x30)
126 MMI_LDC1(%[ftmp0], %[block], 0x38)
127 "packsshb %[ftmp4], %[ftmp4], %[ftmp0] \n\t"
128 "paddb %[ftmp1], %[ftmp1], %[ff_pb_80] \n\t"
129 "paddb %[ftmp2], %[ftmp2], %[ff_pb_80] \n\t"
130 "paddb %[ftmp3], %[ftmp3], %[ff_pb_80] \n\t"
131 "paddb %[ftmp4], %[ftmp4], %[ff_pb_80] \n\t"
132 MMI_SDC1(%[ftmp1], %[pixels], 0x00)
133 MMI_SDXC1(%[ftmp2], %[pixels], %[line_skip], 0x00)
134 MMI_SDXC1(%[ftmp3], %[pixels], %[line_skip3], 0x00)
135 PTR_ADDU "%[line_skip3], %[line_skip3], %[line_skip] \n\t"
136 MMI_SDXC1(%[ftmp4], %[pixels], %[line_skip3], 0x00)
137 PTR_ADDU "%[addr0], %[line_skip3], %[line_skip] \n\t"
138 PTR_ADDU "%[pixels], %[pixels], %[addr0] \n\t"
139 MMI_LDC1(%[ftmp1], %[block], 0x40)
140 MMI_LDC1(%[ftmp0], %[block], 0x48)
141 "packsshb %[ftmp1], %[ftmp1], %[ftmp0] \n\t"
142 MMI_LDC1(%[ftmp2], %[block], 0x50)
143 MMI_LDC1(%[ftmp0], %[block], 0x58)
144 "packsshb %[ftmp2], %[ftmp2], %[ftmp0] \n\t"
145 MMI_LDC1(%[ftmp3], %[block], 0x60)
146 MMI_LDC1(%[ftmp0], %[block], 0x68)
147 "packsshb %[ftmp3], %[ftmp3], %[ftmp0] \n\t"
148 MMI_LDC1(%[ftmp4], %[block], 0x70)
149 MMI_LDC1(%[ftmp0], %[block], 0x78)
150 "packsshb %[ftmp4], %[ftmp4], %[ftmp0] \n\t"
151 "paddb %[ftmp1], %[ftmp1], %[ff_pb_80] \n\t"
152 "paddb %[ftmp2], %[ftmp2], %[ff_pb_80] \n\t"
153 "paddb %[ftmp3], %[ftmp3], %[ff_pb_80] \n\t"
154 "paddb %[ftmp4], %[ftmp4], %[ff_pb_80] \n\t"
155 MMI_SDC1(%[ftmp1], %[pixels], 0x00)
156 MMI_SDXC1(%[ftmp2], %[pixels], %[line_skip], 0x00)
157 PTR_ADDU "%[addr0], %[line_skip], %[line_skip] \n\t"
158 MMI_SDXC1(%[ftmp3], %[pixels], %[addr0], 0x00)
159 MMI_SDXC1(%[ftmp4], %[pixels], %[line_skip3], 0x00)
160 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
161 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
162 [ftmp4]
"=&f"(ftmp[4]),
165 [addr0]
"=&r"(addr[0]),
168 [line_skip]
"r"((
mips_reg)line_skip),
184 "li %[tmp0], 0x04 \n\t"
185 "xor %[ftmp0], %[ftmp0], %[ftmp0] \n\t"
187 MMI_LDC1(%[ftmp1], %[block], 0x00)
188 MMI_LDC1(%[ftmp2], %[block], 0x08)
189 MMI_LDC1(%[ftmp3], %[block], 0x10)
190 MMI_LDC1(%[ftmp4], %[block], 0x18)
191 MMI_LDC1(%[ftmp5], %[pixels], 0x00)
192 MMI_LDXC1(%[ftmp6], %[pixels], %[line_size], 0x00)
193 "mov.d %[ftmp7], %[ftmp5] \n\t"
194 "punpcklbh %[ftmp5], %[ftmp5], %[ftmp0] \n\t"
195 "punpckhbh %[ftmp7], %[ftmp7], %[ftmp0] \n\t"
196 "paddh %[ftmp1], %[ftmp1], %[ftmp5] \n\t"
197 "paddh %[ftmp2], %[ftmp2], %[ftmp7] \n\t"
198 "mov.d %[ftmp7], %[ftmp6] \n\t"
199 "punpcklbh %[ftmp6], %[ftmp6], %[ftmp0] \n\t"
200 "punpckhbh %[ftmp7], %[ftmp7], %[ftmp0] \n\t"
201 "paddh %[ftmp3], %[ftmp3], %[ftmp6] \n\t"
202 "paddh %[ftmp4], %[ftmp4], %[ftmp7] \n\t"
203 "packushb %[ftmp1], %[ftmp1], %[ftmp2] \n\t"
204 "packushb %[ftmp3], %[ftmp3], %[ftmp4] \n\t"
205 MMI_SDC1(%[ftmp1], %[pixels], 0x00)
206 MMI_SDXC1(%[ftmp3], %[pixels], %[line_size], 0x00)
207 "addi %[tmp0], %[tmp0], -0x01 \n\t"
208 PTR_ADDIU "%[block], %[block], 0x20 \n\t"
209 PTR_ADDU "%[pixels], %[pixels], %[line_size] \n\t"
210 PTR_ADDU "%[pixels], %[pixels], %[line_size] \n\t"
212 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
213 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
214 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
215 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
219 [addr0]
"=&r"(addr[0]),
221 : [line_size]
"r"((
mips_reg)line_size)
void ff_put_signed_pixels_clamped_mmi(const int16_t *block, uint8_t *av_restrict pixels, ptrdiff_t line_size)
void ff_put_pixels_clamped_mmi(const int16_t *block, uint8_t *av_restrict pixels, ptrdiff_t line_size)
void ff_add_pixels_clamped_mmi(const int16_t *block, uint8_t *av_restrict pixels, ptrdiff_t line_size)