29 uint8_t *restrict pixels, ptrdiff_t line_size)
34 MMI_LDC1(%[ftmp0], %[
block], 0x00)
35 MMI_LDC1(%[ftmp1], %[
block], 0x08)
36 MMI_LDC1(%[ftmp2], %[
block], 0x10)
37 MMI_LDC1(%[ftmp3], %[
block], 0x18)
38 MMI_LDC1(%[ftmp4], %[
block], 0x20)
39 MMI_LDC1(%[ftmp5], %[
block], 0x28)
40 MMI_LDC1(%[ftmp6], %[
block], 0x30)
41 MMI_LDC1(%[ftmp7], %[
block], 0x38)
42 "packushb %[ftmp0], %[ftmp0], %[ftmp1] \n\t"
43 "packushb %[ftmp2], %[ftmp2], %[ftmp3] \n\t"
44 "packushb %[ftmp4], %[ftmp4], %[ftmp5] \n\t"
45 "packushb %[ftmp6], %[ftmp6], %[ftmp7] \n\t"
46 MMI_SDC1(%[ftmp0], %[pixels], 0x00)
47 PTR_ADDU "%[pixels], %[pixels], %[line_size] \n\t"
48 MMI_SDC1(%[ftmp2], %[pixels], 0x00)
49 PTR_ADDU "%[pixels], %[pixels], %[line_size] \n\t"
50 MMI_SDC1(%[ftmp4], %[pixels], 0x00)
51 PTR_ADDU "%[pixels], %[pixels], %[line_size] \n\t"
52 MMI_SDC1(%[ftmp6], %[pixels], 0x00)
53 PTR_ADDU "%[pixels], %[pixels], %[line_size] \n\t"
55 MMI_LDC1(%[ftmp0], %[
block], 0x40)
56 MMI_LDC1(%[ftmp1], %[
block], 0x48)
57 MMI_LDC1(%[ftmp2], %[
block], 0x50)
58 MMI_LDC1(%[ftmp3], %[
block], 0x58)
59 MMI_LDC1(%[ftmp4], %[
block], 0x60)
60 MMI_LDC1(%[ftmp5], %[
block], 0x68)
61 MMI_LDC1(%[ftmp6], %[
block], 0x70)
62 MMI_LDC1(%[ftmp7], %[
block], 0x78)
63 "packushb %[ftmp0], %[ftmp0], %[ftmp1] \n\t"
64 "packushb %[ftmp2], %[ftmp2], %[ftmp3] \n\t"
65 "packushb %[ftmp4], %[ftmp4], %[ftmp5] \n\t"
66 "packushb %[ftmp6], %[ftmp6], %[ftmp7] \n\t"
67 MMI_SDC1(%[ftmp0], %[pixels], 0x00)
68 PTR_ADDU "%[pixels], %[pixels], %[line_size] \n\t"
69 MMI_SDC1(%[ftmp2], %[pixels], 0x00)
70 PTR_ADDU "%[pixels], %[pixels], %[line_size] \n\t"
71 MMI_SDC1(%[ftmp4], %[pixels], 0x00)
72 PTR_ADDU "%[pixels], %[pixels], %[line_size] \n\t"
73 MMI_SDC1(%[ftmp6], %[pixels], 0x00)
74 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
75 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
76 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
77 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
79 : [line_size]
"r"((
mips_reg)line_size),
86 uint8_t *restrict pixels, ptrdiff_t line_size)
91 MMI_LDC1(%[ftmp1], %[
block], 0x00)
92 MMI_LDC1(%[ftmp0], %[
block], 0x08)
93 "packsshb %[ftmp1], %[ftmp1], %[ftmp0] \n\t"
94 MMI_LDC1(%[ftmp2], %[
block], 0x10)
95 MMI_LDC1(%[ftmp0], %[
block], 0x18)
96 "packsshb %[ftmp2], %[ftmp2], %[ftmp0] \n\t"
97 MMI_LDC1(%[ftmp3], %[
block], 0x20)
98 MMI_LDC1(%[ftmp0], %[
block], 0x28)
99 "packsshb %[ftmp3], %[ftmp3], %[ftmp0] \n\t"
100 MMI_LDC1(%[ftmp4], %[
block], 0x30)
101 MMI_LDC1(%[ftmp0], %[
block], 0x38)
102 "packsshb %[ftmp4], %[ftmp4], %[ftmp0] \n\t"
103 "paddb %[ftmp1], %[ftmp1], %[ff_pb_80] \n\t"
104 "paddb %[ftmp2], %[ftmp2], %[ff_pb_80] \n\t"
105 "paddb %[ftmp3], %[ftmp3], %[ff_pb_80] \n\t"
106 "paddb %[ftmp4], %[ftmp4], %[ff_pb_80] \n\t"
107 MMI_SDC1(%[ftmp1], %[pixels], 0x00)
108 PTR_ADDU "%[pixels], %[pixels], %[line_size] \n\t"
109 MMI_SDC1(%[ftmp2], %[pixels], 0x00)
110 PTR_ADDU "%[pixels], %[pixels], %[line_size] \n\t"
111 MMI_SDC1(%[ftmp3], %[pixels], 0x00)
112 PTR_ADDU "%[pixels], %[pixels], %[line_size] \n\t"
113 MMI_SDC1(%[ftmp4], %[pixels], 0x00)
114 PTR_ADDU "%[pixels], %[pixels], %[line_size] \n\t"
116 MMI_LDC1(%[ftmp1], %[
block], 0x40)
117 MMI_LDC1(%[ftmp0], %[
block], 0x48)
118 "packsshb %[ftmp1], %[ftmp1], %[ftmp0] \n\t"
119 MMI_LDC1(%[ftmp2], %[
block], 0x50)
120 MMI_LDC1(%[ftmp0], %[
block], 0x58)
121 "packsshb %[ftmp2], %[ftmp2], %[ftmp0] \n\t"
122 MMI_LDC1(%[ftmp3], %[
block], 0x60)
123 MMI_LDC1(%[ftmp0], %[
block], 0x68)
124 "packsshb %[ftmp3], %[ftmp3], %[ftmp0] \n\t"
125 MMI_LDC1(%[ftmp4], %[
block], 0x70)
126 MMI_LDC1(%[ftmp0], %[
block], 0x78)
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 PTR_ADDU "%[pixels], %[pixels], %[line_size] \n\t"
134 MMI_SDC1(%[ftmp2], %[pixels], 0x00)
135 PTR_ADDU "%[pixels], %[pixels], %[line_size] \n\t"
136 MMI_SDC1(%[ftmp3], %[pixels], 0x00)
137 PTR_ADDU "%[pixels], %[pixels], %[line_size] \n\t"
138 MMI_SDC1(%[ftmp4], %[pixels], 0x00)
139 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
140 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
141 [ftmp4]
"=&f"(ftmp[4]),
142 [pixels]
"+&r"(pixels)
144 [line_size]
"r"((
mips_reg)line_size),
151 uint8_t *restrict pixels, ptrdiff_t line_size)
156 "li %[tmp0], 0x04 \n\t"
157 "pxor %[ftmp0], %[ftmp0], %[ftmp0] \n\t"
159 MMI_LDC1(%[ftmp5], %[pixels], 0x00)
160 PTR_ADDU "%[pixels], %[pixels], %[line_size] \n\t"
161 MMI_LDC1(%[ftmp6], %[pixels], 0x00)
162 PTR_SUBU "%[pixels], %[pixels], %[line_size] \n\t"
163 MMI_LDC1(%[ftmp1], %[
block], 0x00)
164 MMI_LDC1(%[ftmp2], %[
block], 0x08)
165 MMI_LDC1(%[ftmp3], %[
block], 0x10)
166 MMI_LDC1(%[ftmp4], %[
block], 0x18)
167 PTR_ADDIU "%[block], %[block], 0x20 \n\t"
168 "punpckhbh %[ftmp7], %[ftmp5], %[ftmp0] \n\t"
169 "punpcklbh %[ftmp5], %[ftmp5], %[ftmp0] \n\t"
170 "punpckhbh %[ftmp8], %[ftmp6], %[ftmp0] \n\t"
171 "punpcklbh %[ftmp6], %[ftmp6], %[ftmp0] \n\t"
172 "paddh %[ftmp1], %[ftmp1], %[ftmp5] \n\t"
173 "paddh %[ftmp2], %[ftmp2], %[ftmp7] \n\t"
174 "paddh %[ftmp3], %[ftmp3], %[ftmp6] \n\t"
175 "paddh %[ftmp4], %[ftmp4], %[ftmp8] \n\t"
176 "packushb %[ftmp1], %[ftmp1], %[ftmp2] \n\t"
177 "packushb %[ftmp3], %[ftmp3], %[ftmp4] \n\t"
178 MMI_SDC1(%[ftmp1], %[pixels], 0x00)
179 PTR_ADDU "%[pixels], %[pixels], %[line_size] \n\t"
180 MMI_SDC1(%[ftmp3], %[pixels], 0x00)
181 "addi %[tmp0], %[tmp0], -0x01 \n\t"
182 PTR_ADDU "%[pixels], %[pixels], %[line_size] \n\t"
183 "bnez %[tmp0], 1b \n\t"
184 : [ftmp0]
"=&f"(ftmp[0]), [ftmp1]
"=&f"(ftmp[1]),
185 [ftmp2]
"=&f"(ftmp[2]), [ftmp3]
"=&f"(ftmp[3]),
186 [ftmp4]
"=&f"(ftmp[4]), [ftmp5]
"=&f"(ftmp[5]),
187 [ftmp6]
"=&f"(ftmp[6]), [ftmp7]
"=&f"(ftmp[7]),
188 [ftmp8]
"=&f"(ftmp[8]), [tmp0]
"=&r"(
tmp[0]),
190 : [line_size]
"r"((
mips_reg)line_size)