Glide Plugin GLES2 port from mupen64plus-ae, but with special FrameSkip code
[mupen64plus-pandora.git] / source / gles2glide64 / src / GlideHQ / TextureFilters_lq2x.h
1 /*
2 Copyright (C) 2003 Rice1964
3
4 This program is free software; you can redistribute it and/or
5 modify it under the terms of the GNU General Public License
6 as published by the Free Software Foundation; either version 2
7 of the License, or (at your option) any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU General Public License
15 along with this program; if not, write to the Free Software
16 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
17
18 */
19
20 /* Copyright (C) 2007 Hiroshi Morii <koolsmoky(at)users.sourceforge.net>
21  * Modified for the Texture Filtering library
22  */
23
24 case 0 : 
25 case 2 : 
26 case 4 : 
27 case 6 : 
28 case 8 : 
29 case 12 : 
30 case 16 : 
31 case 20 : 
32 case 24 : 
33 case 28 : 
34 case 32 : 
35 case 34 : 
36 case 36 : 
37 case 38 : 
38 case 40 : 
39 case 44 : 
40 case 48 : 
41 case 52 : 
42 case 56 : 
43 case 60 : 
44 case 64 : 
45 case 66 : 
46 case 68 : 
47 case 70 : 
48 case 96 : 
49 case 98 : 
50 case 100 : 
51 case 102 : 
52 case 128 : 
53 case 130 : 
54 case 132 : 
55 case 134 : 
56 case 136 : 
57 case 140 : 
58 case 144 : 
59 case 148 : 
60 case 152 : 
61 case 156 : 
62 case 160 : 
63 case 162 : 
64 case 164 : 
65 case 166 : 
66 case 168 : 
67 case 172 : 
68 case 176 : 
69 case 180 : 
70 case 184 : 
71 case 188 : 
72 case 192 : 
73 case 194 : 
74 case 196 : 
75 case 198 : 
76 case 224 : 
77 case 226 : 
78 case 228 : 
79 case 230 : 
80 {
81   P0 = IC(0);
82   P1 = IC(0);
83   P2 = IC(0);
84   P3 = IC(0);
85 } break;
86 case 1 : 
87 case 5 : 
88 case 9 : 
89 case 13 : 
90 case 17 : 
91 case 21 : 
92 case 25 : 
93 case 29 : 
94 case 33 : 
95 case 37 : 
96 case 41 : 
97 case 45 : 
98 case 49 : 
99 case 53 : 
100 case 57 : 
101 case 61 : 
102 case 65 : 
103 case 69 : 
104 case 97 : 
105 case 101 : 
106 case 129 : 
107 case 133 : 
108 case 137 : 
109 case 141 : 
110 case 145 : 
111 case 149 : 
112 case 153 : 
113 case 157 : 
114 case 161 : 
115 case 165 : 
116 case 169 : 
117 case 173 : 
118 case 177 : 
119 case 181 : 
120 case 185 : 
121 case 189 : 
122 case 193 : 
123 case 197 : 
124 case 225 : 
125 case 229 : 
126 {
127   P0 = IC(1);
128   P1 = IC(1);
129   P2 = IC(1);
130   P3 = IC(1);
131 } break;
132 case 3 : 
133 case 35 : 
134 case 67 : 
135 case 99 : 
136 case 131 : 
137 case 163 : 
138 case 195 : 
139 case 227 : 
140 {
141   P0 = IC(2);
142   P1 = IC(2);
143   P2 = IC(2);
144   P3 = IC(2);
145 } break;
146 case 7 : 
147 case 39 : 
148 case 71 : 
149 case 103 : 
150 case 135 : 
151 case 167 : 
152 case 199 : 
153 case 231 : 
154 {
155   P0 = IC(3);
156   P1 = IC(3);
157   P2 = IC(3);
158   P3 = IC(3);
159 } break;
160 case 10 : 
161 case 138 : 
162 {
163   P1 = IC(0);
164   P2 = IC(0);
165   P3 = IC(0);
166   if (HQ2X_MUL) {
167     P0 = IC(0);
168   } else {
169     P0 = I211(0, 1, 3);
170   }
171 } break;
172 case 11 : 
173 case 27 : 
174 case 75 : 
175 case 139 : 
176 case 155 : 
177 case 203 : 
178 {
179   P1 = IC(2);
180   P2 = IC(2);
181   P3 = IC(2);
182   if (HQ2X_MUL) {
183     P0 = IC(2);
184   } else {
185     P0 = I211(2, 1, 3);
186   }
187 } break;
188 case 14 : 
189 case 142 : 
190 {
191   P2 = IC(0);
192   P3 = IC(0);
193   if (HQ2X_MUL) {
194     P0 = IC(0);
195     P1 = IC(0);
196   } else {
197     P0 = I332(1, 3, 0);
198     P1 = I31(0, 1);
199   }
200 } break;
201 case 15 : 
202 case 143 : 
203 case 207 : 
204 {
205   P2 = IC(4);
206   P3 = IC(4);
207   if (HQ2X_MUL) {
208     P0 = IC(4);
209     P1 = IC(4);
210   } else {
211     P0 = I332(1, 3, 4);
212     P1 = I31(4, 1);
213   }
214 } break;
215 case 18 : 
216 case 22 : 
217 case 30 : 
218 case 50 : 
219 case 54 : 
220 case 62 : 
221 case 86 : 
222 case 118 : 
223 {
224   P0 = IC(0);
225   P2 = IC(0);
226   P3 = IC(0);
227   if (HQ2X_MUR) {
228     P1 = IC(0);
229   } else {
230     P1 = I211(0, 1, 5);
231   }
232 } break;
233 case 19 : 
234 case 51 : 
235 {
236   P2 = IC(2);
237   P3 = IC(2);
238   if (HQ2X_MUR) {
239     P0 = IC(2);
240     P1 = IC(2);
241   } else {
242     P0 = I31(2, 1);
243     P1 = I332(1, 5, 2);
244   }
245 } break;
246 case 23 : 
247 case 55 : 
248 case 119 : 
249 {
250   P2 = IC(3);
251   P3 = IC(3);
252   if (HQ2X_MUR) {
253     P0 = IC(3);
254     P1 = IC(3);
255   } else {
256     P0 = I31(3, 1);
257     P1 = I332(1, 5, 3);
258   }
259 } break;
260 case 26 : 
261 {
262   P2 = IC(0);
263   P3 = IC(0);
264   if (HQ2X_MUL) {
265     P0 = IC(0);
266   } else {
267     P0 = I211(0, 1, 3);
268   }
269   if (HQ2X_MUR) {
270     P1 = IC(0);
271   } else {
272     P1 = I211(0, 1, 5);
273   }
274 } break;
275 case 31 : 
276 case 95 : 
277 {
278   P2 = IC(4);
279   P3 = IC(4);
280   if (HQ2X_MUL) {
281     P0 = IC(4);
282   } else {
283     P0 = I211(4, 1, 3);
284   }
285   if (HQ2X_MUR) {
286     P1 = IC(4);
287   } else {
288     P1 = I211(4, 1, 5);
289   }
290 } break;
291 case 42 : 
292 case 170 : 
293 {
294   P1 = IC(0);
295   P3 = IC(0);
296   if (HQ2X_MUL) {
297     P0 = IC(0);
298     P2 = IC(0);
299   } else {
300     P0 = I332(1, 3, 0);
301     P2 = I31(0, 3);
302   }
303 } break;
304 case 43 : 
305 case 171 : 
306 case 187 : 
307 {
308   P1 = IC(2);
309   P3 = IC(2);
310   if (HQ2X_MUL) {
311     P0 = IC(2);
312     P2 = IC(2);
313   } else {
314     P0 = I332(1, 3, 2);
315     P2 = I31(2, 3);
316   }
317 } break;
318 case 46 : 
319 case 174 : 
320 {
321   P1 = IC(0);
322   P2 = IC(0);
323   P3 = IC(0);
324   if (HQ2X_MUL) {
325     P0 = IC(0);
326   } else {
327     P0 = I611(0, 1, 3);
328   }
329 } break;
330 case 47 : 
331 case 175 : 
332 {
333   P1 = IC(4);
334   P2 = IC(4);
335   P3 = IC(4);
336   if (HQ2X_MUL) {
337     P0 = IC(4);
338   } else {
339     P0 = I1411(4, 1, 3);
340   }
341 } break;
342 case 58 : 
343 case 154 : 
344 case 186 : 
345 {
346   P2 = IC(0);
347   P3 = IC(0);
348   if (HQ2X_MUL) {
349     P0 = IC(0);
350   } else {
351     P0 = I611(0, 1, 3);
352   }
353   if (HQ2X_MUR) {
354     P1 = IC(0);
355   } else {
356     P1 = I611(0, 1, 5);
357   }
358 } break;
359 case 59 : 
360 {
361   P2 = IC(2);
362   P3 = IC(2);
363   if (HQ2X_MUL) {
364     P0 = IC(2);
365   } else {
366     P0 = I211(2, 1, 3);
367   }
368   if (HQ2X_MUR) {
369     P1 = IC(2);
370   } else {
371     P1 = I611(2, 1, 5);
372   }
373 } break;
374 case 63 : 
375 {
376   P2 = IC(4);
377   P3 = IC(4);
378   if (HQ2X_MUL) {
379     P0 = IC(4);
380   } else {
381     P0 = I1411(4, 1, 3);
382   }
383   if (HQ2X_MUR) {
384     P1 = IC(4);
385   } else {
386     P1 = I211(4, 1, 5);
387   }
388 } break;
389 case 72 : 
390 case 76 : 
391 case 104 : 
392 case 106 : 
393 case 108 : 
394 case 110 : 
395 case 120 : 
396 case 124 : 
397 {
398   P0 = IC(0);
399   P1 = IC(0);
400   P3 = IC(0);
401   if (HQ2X_MDL) {
402     P2 = IC(0);
403   } else {
404     P2 = I211(0, 3, 7);
405   }
406 } break;
407 case 73 : 
408 case 77 : 
409 case 105 : 
410 case 109 : 
411 case 125 : 
412 {
413   P1 = IC(1);
414   P3 = IC(1);
415   if (HQ2X_MDL) {
416     P0 = IC(1);
417     P2 = IC(1);
418   } else {
419     P0 = I31(1, 3);
420     P2 = I332(3, 7, 1);
421   }
422 } break;
423 case 74 : 
424 {
425   P1 = IC(0);
426   P3 = IC(0);
427   if (HQ2X_MDL) {
428     P2 = IC(0);
429   } else {
430     P2 = I211(0, 3, 7);
431   }
432   if (HQ2X_MUL) {
433     P0 = IC(0);
434   } else {
435     P0 = I211(0, 1, 3);
436   }
437 } break;
438 case 78 : 
439 case 202 : 
440 case 206 : 
441 {
442   P1 = IC(0);
443   P3 = IC(0);
444   if (HQ2X_MDL) {
445     P2 = IC(0);
446   } else {
447     P2 = I611(0, 3, 7);
448   }
449   if (HQ2X_MUL) {
450     P0 = IC(0);
451   } else {
452     P0 = I611(0, 1, 3);
453   }
454 } break;
455 case 79 : 
456 {
457   P1 = IC(4);
458   P3 = IC(4);
459   if (HQ2X_MDL) {
460     P2 = IC(4);
461   } else {
462     P2 = I611(4, 3, 7);
463   }
464   if (HQ2X_MUL) {
465     P0 = IC(4);
466   } else {
467     P0 = I211(4, 1, 3);
468   }
469 } break;
470 case 80 : 
471 case 208 : 
472 case 210 : 
473 case 216 : 
474 {
475   P0 = IC(0);
476   P1 = IC(0);
477   P2 = IC(0);
478   if (HQ2X_MDR) {
479     P3 = IC(0);
480   } else {
481     P3 = I211(0, 5, 7);
482   }
483 } break;
484 case 81 : 
485 case 209 : 
486 case 217 : 
487 {
488   P0 = IC(1);
489   P1 = IC(1);
490   P2 = IC(1);
491   if (HQ2X_MDR) {
492     P3 = IC(1);
493   } else {
494     P3 = I211(1, 5, 7);
495   }
496 } break;
497 case 82 : 
498 case 214 : 
499 case 222 : 
500 {
501   P0 = IC(0);
502   P2 = IC(0);
503   if (HQ2X_MDR) {
504     P3 = IC(0);
505   } else {
506     P3 = I211(0, 5, 7);
507   }
508   if (HQ2X_MUR) {
509     P1 = IC(0);
510   } else {
511     P1 = I211(0, 1, 5);
512   }
513 } break;
514 case 83 : 
515 case 115 : 
516 {
517   P0 = IC(2);
518   P2 = IC(2);
519   if (HQ2X_MDR) {
520     P3 = IC(2);
521   } else {
522     P3 = I611(2, 5, 7);
523   }
524   if (HQ2X_MUR) {
525     P1 = IC(2);
526   } else {
527     P1 = I611(2, 1, 5);
528   }
529 } break;
530 case 84 : 
531 case 212 : 
532 {
533   P0 = IC(0);
534   P2 = IC(0);
535   if (HQ2X_MDR) {
536     P1 = IC(0);
537     P3 = IC(0);
538   } else {
539     P1 = I31(0, 5);
540     P3 = I332(5, 7, 0);
541   }
542 } break;
543 case 85 : 
544 case 213 : 
545 case 221 : 
546 {
547   P0 = IC(1);
548   P2 = IC(1);
549   if (HQ2X_MDR) {
550     P1 = IC(1);
551     P3 = IC(1);
552   } else {
553     P1 = I31(1, 5);
554     P3 = I332(5, 7, 1);
555   }
556 } break;
557 case 87 : 
558 {
559   P0 = IC(3);
560   P2 = IC(3);
561   if (HQ2X_MDR) {
562     P3 = IC(3);
563   } else {
564     P3 = I611(3, 5, 7);
565   }
566   if (HQ2X_MUR) {
567     P1 = IC(3);
568   } else {
569     P1 = I211(3, 1, 5);
570   }
571 } break;
572 case 88 : 
573 case 248 : 
574 case 250 : 
575 {
576   P0 = IC(0);
577   P1 = IC(0);
578   if (HQ2X_MDL) {
579     P2 = IC(0);
580   } else {
581     P2 = I211(0, 3, 7);
582   }
583   if (HQ2X_MDR) {
584     P3 = IC(0);
585   } else {
586     P3 = I211(0, 5, 7);
587   }
588 } break;
589 case 89 : 
590 case 93 : 
591 {
592   P0 = IC(1);
593   P1 = IC(1);
594   if (HQ2X_MDL) {
595     P2 = IC(1);
596   } else {
597     P2 = I611(1, 3, 7);
598   }
599   if (HQ2X_MDR) {
600     P3 = IC(1);
601   } else {
602     P3 = I611(1, 5, 7);
603   }
604 } break;
605 case 90 : 
606 {
607   if (HQ2X_MDL) {
608     P2 = IC(0);
609   } else {
610     P2 = I611(0, 3, 7);
611   }
612   if (HQ2X_MDR) {
613     P3 = IC(0);
614   } else {
615     P3 = I611(0, 5, 7);
616   }
617   if (HQ2X_MUL) {
618     P0 = IC(0);
619   } else {
620     P0 = I611(0, 1, 3);
621   }
622   if (HQ2X_MUR) {
623     P1 = IC(0);
624   } else {
625     P1 = I611(0, 1, 5);
626   }
627 } break;
628 case 91 : 
629 {
630   if (HQ2X_MDL) {
631     P2 = IC(2);
632   } else {
633     P2 = I611(2, 3, 7);
634   }
635   if (HQ2X_MDR) {
636     P3 = IC(2);
637   } else {
638     P3 = I611(2, 5, 7);
639   }
640   if (HQ2X_MUL) {
641     P0 = IC(2);
642   } else {
643     P0 = I211(2, 1, 3);
644   }
645   if (HQ2X_MUR) {
646     P1 = IC(2);
647   } else {
648     P1 = I611(2, 1, 5);
649   }
650 } break;
651 case 92 : 
652 {
653   P0 = IC(0);
654   P1 = IC(0);
655   if (HQ2X_MDL) {
656     P2 = IC(0);
657   } else {
658     P2 = I611(0, 3, 7);
659   }
660   if (HQ2X_MDR) {
661     P3 = IC(0);
662   } else {
663     P3 = I611(0, 5, 7);
664   }
665 } break;
666 case 94 : 
667 {
668   if (HQ2X_MDL) {
669     P2 = IC(0);
670   } else {
671     P2 = I611(0, 3, 7);
672   }
673   if (HQ2X_MDR) {
674     P3 = IC(0);
675   } else {
676     P3 = I611(0, 5, 7);
677   }
678   if (HQ2X_MUL) {
679     P0 = IC(0);
680   } else {
681     P0 = I611(0, 1, 3);
682   }
683   if (HQ2X_MUR) {
684     P1 = IC(0);
685   } else {
686     P1 = I211(0, 1, 5);
687   }
688 } break;
689 case 107 : 
690 case 123 : 
691 {
692   P1 = IC(2);
693   P3 = IC(2);
694   if (HQ2X_MDL) {
695     P2 = IC(2);
696   } else {
697     P2 = I211(2, 3, 7);
698   }
699   if (HQ2X_MUL) {
700     P0 = IC(2);
701   } else {
702     P0 = I211(2, 1, 3);
703   }
704 } break;
705 case 111 : 
706 {
707   P1 = IC(4);
708   P3 = IC(4);
709   if (HQ2X_MDL) {
710     P2 = IC(4);
711   } else {
712     P2 = I211(4, 3, 7);
713   }
714   if (HQ2X_MUL) {
715     P0 = IC(4);
716   } else {
717     P0 = I1411(4, 1, 3);
718   }
719 } break;
720 case 112 : 
721 case 240 : 
722 {
723   P0 = IC(0);
724   P1 = IC(0);
725   if (HQ2X_MDR) {
726     P2 = IC(0);
727     P3 = IC(0);
728   } else {
729     P2 = I31(0, 7);
730     P3 = I332(5, 7, 0);
731   }
732 } break;
733 case 113 : 
734 case 241 : 
735 {
736   P0 = IC(1);
737   P1 = IC(1);
738   if (HQ2X_MDR) {
739     P2 = IC(1);
740     P3 = IC(1);
741   } else {
742     P2 = I31(1, 7);
743     P3 = I332(5, 7, 1);
744   }
745 } break;
746 case 114 : 
747 {
748   P0 = IC(0);
749   P2 = IC(0);
750   if (HQ2X_MDR) {
751     P3 = IC(0);
752   } else {
753     P3 = I611(0, 5, 7);
754   }
755   if (HQ2X_MUR) {
756     P1 = IC(0);
757   } else {
758     P1 = I611(0, 1, 5);
759   }
760 } break;
761 case 116 : 
762 {
763   P0 = IC(0);
764   P1 = IC(0);
765   P2 = IC(0);
766   if (HQ2X_MDR) {
767     P3 = IC(0);
768   } else {
769     P3 = I611(0, 5, 7);
770   }
771 } break;
772 case 117 : 
773 {
774   P0 = IC(1);
775   P1 = IC(1);
776   P2 = IC(1);
777   if (HQ2X_MDR) {
778     P3 = IC(1);
779   } else {
780     P3 = I611(1, 5, 7);
781   }
782 } break;
783 case 121 : 
784 {
785   P0 = IC(1);
786   P1 = IC(1);
787   if (HQ2X_MDL) {
788     P2 = IC(1);
789   } else {
790     P2 = I211(1, 3, 7);
791   }
792   if (HQ2X_MDR) {
793     P3 = IC(1);
794   } else {
795     P3 = I611(1, 5, 7);
796   }
797 } break;
798 case 122 : 
799 {
800   if (HQ2X_MDL) {
801     P2 = IC(0);
802   } else {
803     P2 = I211(0, 3, 7);
804   }
805   if (HQ2X_MDR) {
806     P3 = IC(0);
807   } else {
808     P3 = I611(0, 5, 7);
809   }
810   if (HQ2X_MUL) {
811     P0 = IC(0);
812   } else {
813     P0 = I611(0, 1, 3);
814   }
815   if (HQ2X_MUR) {
816     P1 = IC(0);
817   } else {
818     P1 = I611(0, 1, 5);
819   }
820 } break;
821 case 126 : 
822 {
823   P0 = IC(0);
824   P3 = IC(0);
825   if (HQ2X_MDL) {
826     P2 = IC(0);
827   } else {
828     P2 = I211(0, 3, 7);
829   }
830   if (HQ2X_MUR) {
831     P1 = IC(0);
832   } else {
833     P1 = I211(0, 1, 5);
834   }
835 } break;
836 case 127 : 
837 {
838   P3 = IC(4);
839   if (HQ2X_MDL) {
840     P2 = IC(4);
841   } else {
842     P2 = I211(4, 3, 7);
843   }
844   if (HQ2X_MUL) {
845     P0 = IC(4);
846   } else {
847     P0 = I1411(4, 1, 3);
848   }
849   if (HQ2X_MUR) {
850     P1 = IC(4);
851   } else {
852     P1 = I211(4, 1, 5);
853   }
854 } break;
855 case 146 : 
856 case 150 : 
857 case 178 : 
858 case 182 : 
859 case 190 : 
860 {
861   P0 = IC(0);
862   P2 = IC(0);
863   if (HQ2X_MUR) {
864     P1 = IC(0);
865     P3 = IC(0);
866   } else {
867     P1 = I332(1, 5, 0);
868     P3 = I31(0, 5);
869   }
870 } break;
871 case 147 : 
872 case 179 : 
873 {
874   P0 = IC(2);
875   P2 = IC(2);
876   P3 = IC(2);
877   if (HQ2X_MUR) {
878     P1 = IC(2);
879   } else {
880     P1 = I611(2, 1, 5);
881   }
882 } break;
883 case 151 : 
884 case 183 : 
885 {
886   P0 = IC(3);
887   P2 = IC(3);
888   P3 = IC(3);
889   if (HQ2X_MUR) {
890     P1 = IC(3);
891   } else {
892     P1 = I1411(3, 1, 5);
893   }
894 } break;
895 case 158 : 
896 {
897   P2 = IC(0);
898   P3 = IC(0);
899   if (HQ2X_MUL) {
900     P0 = IC(0);
901   } else {
902     P0 = I611(0, 1, 3);
903   }
904   if (HQ2X_MUR) {
905     P1 = IC(0);
906   } else {
907     P1 = I211(0, 1, 5);
908   }
909 } break;
910 case 159 : 
911 {
912   P2 = IC(4);
913   P3 = IC(4);
914   if (HQ2X_MUL) {
915     P0 = IC(4);
916   } else {
917     P0 = I211(4, 1, 3);
918   }
919   if (HQ2X_MUR) {
920     P1 = IC(4);
921   } else {
922     P1 = I1411(4, 1, 5);
923   }
924 } break;
925 case 191 : 
926 {
927   P2 = IC(4);
928   P3 = IC(4);
929   if (HQ2X_MUL) {
930     P0 = IC(4);
931   } else {
932     P0 = I1411(4, 1, 3);
933   }
934   if (HQ2X_MUR) {
935     P1 = IC(4);
936   } else {
937     P1 = I1411(4, 1, 5);
938   }
939 } break;
940 case 200 : 
941 case 204 : 
942 case 232 : 
943 case 236 : 
944 case 238 : 
945 {
946   P0 = IC(0);
947   P1 = IC(0);
948   if (HQ2X_MDL) {
949     P2 = IC(0);
950     P3 = IC(0);
951   } else {
952     P2 = I332(3, 7, 0);
953     P3 = I31(0, 7);
954   }
955 } break;
956 case 201 : 
957 case 205 : 
958 {
959   P0 = IC(1);
960   P1 = IC(1);
961   P3 = IC(1);
962   if (HQ2X_MDL) {
963     P2 = IC(1);
964   } else {
965     P2 = I611(1, 3, 7);
966   }
967 } break;
968 case 211 : 
969 {
970   P0 = IC(2);
971   P1 = IC(2);
972   P2 = IC(2);
973   if (HQ2X_MDR) {
974     P3 = IC(2);
975   } else {
976     P3 = I211(2, 5, 7);
977   }
978 } break;
979 case 215 : 
980 {
981   P0 = IC(3);
982   P2 = IC(3);
983   if (HQ2X_MDR) {
984     P3 = IC(3);
985   } else {
986     P3 = I211(3, 5, 7);
987   }
988   if (HQ2X_MUR) {
989     P1 = IC(3);
990   } else {
991     P1 = I1411(3, 1, 5);
992   }
993 } break;
994 case 218 : 
995 {
996   if (HQ2X_MDL) {
997     P2 = IC(0);
998   } else {
999     P2 = I611(0, 3, 7);
1000   }
1001   if (HQ2X_MDR) {
1002     P3 = IC(0);
1003   } else {
1004     P3 = I211(0, 5, 7);
1005   }
1006   if (HQ2X_MUL) {
1007     P0 = IC(0);
1008   } else {
1009     P0 = I611(0, 1, 3);
1010   }
1011   if (HQ2X_MUR) {
1012     P1 = IC(0);
1013   } else {
1014     P1 = I611(0, 1, 5);
1015   }
1016 } break;
1017 case 219 : 
1018 {
1019   P1 = IC(2);
1020   P2 = IC(2);
1021   if (HQ2X_MDR) {
1022     P3 = IC(2);
1023   } else {
1024     P3 = I211(2, 5, 7);
1025   }
1026   if (HQ2X_MUL) {
1027     P0 = IC(2);
1028   } else {
1029     P0 = I211(2, 1, 3);
1030   }
1031 } break;
1032 case 220 : 
1033 {
1034   P0 = IC(0);
1035   P1 = IC(0);
1036   if (HQ2X_MDL) {
1037     P2 = IC(0);
1038   } else {
1039     P2 = I611(0, 3, 7);
1040   }
1041   if (HQ2X_MDR) {
1042     P3 = IC(0);
1043   } else {
1044     P3 = I211(0, 5, 7);
1045   }
1046 } break;
1047 case 223 : 
1048 {
1049   P2 = IC(4);
1050   if (HQ2X_MDR) {
1051     P3 = IC(4);
1052   } else {
1053     P3 = I211(4, 5, 7);
1054   }
1055   if (HQ2X_MUL) {
1056     P0 = IC(4);
1057   } else {
1058     P0 = I211(4, 1, 3);
1059   }
1060   if (HQ2X_MUR) {
1061     P1 = IC(4);
1062   } else {
1063     P1 = I1411(4, 1, 5);
1064   }
1065 } break;
1066 case 233 : 
1067 case 237 : 
1068 {
1069   P0 = IC(1);
1070   P1 = IC(1);
1071   P3 = IC(1);
1072   if (HQ2X_MDL) {
1073     P2 = IC(1);
1074   } else {
1075     P2 = I1411(1, 3, 7);
1076   }
1077 } break;
1078 case 234 : 
1079 {
1080   P1 = IC(0);
1081   P3 = IC(0);
1082   if (HQ2X_MDL) {
1083     P2 = IC(0);
1084   } else {
1085     P2 = I211(0, 3, 7);
1086   }
1087   if (HQ2X_MUL) {
1088     P0 = IC(0);
1089   } else {
1090     P0 = I611(0, 1, 3);
1091   }
1092 } break;
1093 case 235 : 
1094 {
1095   P1 = IC(2);
1096   P3 = IC(2);
1097   if (HQ2X_MDL) {
1098     P2 = IC(2);
1099   } else {
1100     P2 = I1411(2, 3, 7);
1101   }
1102   if (HQ2X_MUL) {
1103     P0 = IC(2);
1104   } else {
1105     P0 = I211(2, 1, 3);
1106   }
1107 } break;
1108 case 239 : 
1109 {
1110   P1 = IC(4);
1111   P3 = IC(4);
1112   if (HQ2X_MDL) {
1113     P2 = IC(4);
1114   } else {
1115     P2 = I1411(4, 3, 7);
1116   }
1117   if (HQ2X_MUL) {
1118     P0 = IC(4);
1119   } else {
1120     P0 = I1411(4, 1, 3);
1121   }
1122 } break;
1123 case 242 : 
1124 {
1125   P0 = IC(0);
1126   P2 = IC(0);
1127   if (HQ2X_MDR) {
1128     P3 = IC(0);
1129   } else {
1130     P3 = I211(0, 5, 7);
1131   }
1132   if (HQ2X_MUR) {
1133     P1 = IC(0);
1134   } else {
1135     P1 = I611(0, 1, 5);
1136   }
1137 } break;
1138 case 243 : 
1139 {
1140   P0 = IC(2);
1141   P1 = IC(2);
1142   if (HQ2X_MDR) {
1143     P2 = IC(2);
1144     P3 = IC(2);
1145   } else {
1146     P2 = I31(2, 7);
1147     P3 = I332(5, 7, 2);
1148   }
1149 } break;
1150 case 244 : 
1151 {
1152   P0 = IC(0);
1153   P1 = IC(0);
1154   P2 = IC(0);
1155   if (HQ2X_MDR) {
1156     P3 = IC(0);
1157   } else {
1158     P3 = I1411(0, 5, 7);
1159   }
1160 } break;
1161 case 245 : 
1162 {
1163   P0 = IC(1);
1164   P1 = IC(1);
1165   P2 = IC(1);
1166   if (HQ2X_MDR) {
1167     P3 = IC(1);
1168   } else {
1169     P3 = I1411(1, 5, 7);
1170   }
1171 } break;
1172 case 246 : 
1173 {
1174   P0 = IC(0);
1175   P2 = IC(0);
1176   if (HQ2X_MDR) {
1177     P3 = IC(0);
1178   } else {
1179     P3 = I1411(0, 5, 7);
1180   }
1181   if (HQ2X_MUR) {
1182     P1 = IC(0);
1183   } else {
1184     P1 = I211(0, 1, 5);
1185   }
1186 } break;
1187 case 247 : 
1188 {
1189   P0 = IC(3);
1190   P2 = IC(3);
1191   if (HQ2X_MDR) {
1192     P3 = IC(3);
1193   } else {
1194     P3 = I1411(3, 5, 7);
1195   }
1196   if (HQ2X_MUR) {
1197     P1 = IC(3);
1198   } else {
1199     P1 = I1411(3, 1, 5);
1200   }
1201 } break;
1202 case 249 : 
1203 {
1204   P0 = IC(1);
1205   P1 = IC(1);
1206   if (HQ2X_MDL) {
1207     P2 = IC(1);
1208   } else {
1209     P2 = I1411(1, 3, 7);
1210   }
1211   if (HQ2X_MDR) {
1212     P3 = IC(1);
1213   } else {
1214     P3 = I211(1, 5, 7);
1215   }
1216 } break;
1217 case 251 : 
1218 {
1219   P1 = IC(2);
1220   if (HQ2X_MDL) {
1221     P2 = IC(2);
1222   } else {
1223     P2 = I1411(2, 3, 7);
1224   }
1225   if (HQ2X_MDR) {
1226     P3 = IC(2);
1227   } else {
1228     P3 = I211(2, 5, 7);
1229   }
1230   if (HQ2X_MUL) {
1231     P0 = IC(2);
1232   } else {
1233     P0 = I211(2, 1, 3);
1234   }
1235 } break;
1236 case 252 : 
1237 {
1238   P0 = IC(0);
1239   P1 = IC(0);
1240   if (HQ2X_MDL) {
1241     P2 = IC(0);
1242   } else {
1243     P2 = I211(0, 3, 7);
1244   }
1245   if (HQ2X_MDR) {
1246     P3 = IC(0);
1247   } else {
1248     P3 = I1411(0, 5, 7);
1249   }
1250 } break;
1251 case 253 : 
1252 {
1253   P0 = IC(1);
1254   P1 = IC(1);
1255   if (HQ2X_MDL) {
1256     P2 = IC(1);
1257   } else {
1258     P2 = I1411(1, 3, 7);
1259   }
1260   if (HQ2X_MDR) {
1261     P3 = IC(1);
1262   } else {
1263     P3 = I1411(1, 5, 7);
1264   }
1265 } break;
1266 case 254 : 
1267 {
1268   P0 = IC(0);
1269   if (HQ2X_MDL) {
1270     P2 = IC(0);
1271   } else {
1272     P2 = I211(0, 3, 7);
1273   }
1274   if (HQ2X_MDR) {
1275     P3 = IC(0);
1276   } else {
1277     P3 = I1411(0, 5, 7);
1278   }
1279   if (HQ2X_MUR) {
1280     P1 = IC(0);
1281   } else {
1282     P1 = I211(0, 1, 5);
1283   }
1284 } break;
1285 case 255 : 
1286 {
1287   if (HQ2X_MDL) {
1288     P2 = IC(4);
1289   } else {
1290     P2 = I1411(4, 3, 7);
1291   }
1292   if (HQ2X_MDR) {
1293     P3 = IC(4);
1294   } else {
1295     P3 = I1411(4, 5, 7);
1296   }
1297   if (HQ2X_MUL) {
1298     P0 = IC(4);
1299   } else {
1300     P0 = I1411(4, 1, 3);
1301   }
1302   if (HQ2X_MUR) {
1303     P1 = IC(4);
1304   } else {
1305     P1 = I1411(4, 1, 5);
1306   }
1307 } break;