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)