source: trunk/src/opengl/mesa/x86a.asm@ 3721

Last change on this file since 3721 was 2962, checked in by jeroen, 25 years ago

* empty log message *

File size: 165.4 KB
Line 
1; $Id: x86a.asm,v 1.1 2000-03-01 18:49:41 jeroen Exp $
2;
3; Assembly versions of the transforms
4;
5
6 .586p
7
8CODE32 SEGMENT PARA USE32 PUBLIC 'CODE'
9CODE32 ENDS
10DATA32 SEGMENT PARA USE32 PUBLIC 'DATA'
11ASSUME DS:FLAT, SS:FLAT, ES:FLAT
12DATA32 ENDS
13
14CODE32 SEGMENT
15 PUBLIC _gl_x86_transform_points2_general_masked
16 ALIGN 16
17_gl_x86_transform_points2_general_masked:
18
19 push ESI
20 push EDI
21
22 push EBX
23 push EBP
24
25 mov ESI, dword ptr [ ESP + 16+12]
26 mov EDI, dword ptr [ ESP + 16+4]
27
28 mov EDX, dword ptr [ ESP + 16+8]
29 mov EBP, dword ptr [ ESP + 16+16]
30
31 mov ECX, dword ptr [ ESI + 8]
32 mov BL, byte ptr [ ESP + 16+20]
33
34 test ECX, ECX
35 jz p2mgm_finish
36
37 mov EAX, dword ptr [ ESI + 12]
38 or dword ptr [ EDI + 20], 15
39
40 mov dword ptr [ EDI + 8], ECX
41 mov dword ptr [ EDI + 16], 4
42
43 shl ECX, 4
44 mov ESI, dword ptr [ ESI + 4]
45
46 mov EDI, dword ptr [ EDI + 4]
47 add ECX, EDI
48
49
50
51 ALIGN 4
52p2mgm_top:
53
54 test byte ptr [EBP], BL
55 jnz p2mgm_skip
56
57
58 fld dword ptr [ ESI + 0 * 4]
59 fmul dword ptr [ EDX + 0 * 4]
60 fld dword ptr [ ESI + 0 * 4]
61 fmul dword ptr [ EDX + 1 * 4]
62 fld dword ptr [ ESI + 0 * 4]
63 fmul dword ptr [ EDX + 2 * 4]
64 fld dword ptr [ ESI + 0 * 4]
65 fmul dword ptr [ EDX + 3 * 4]
66
67 fld dword ptr [ ESI + 1 * 4]
68 fmul dword ptr [ EDX + 4 * 4]
69 fld dword ptr [ ESI + 1 * 4]
70 fmul dword ptr [ EDX + 5 * 4]
71 fld dword ptr [ ESI + 1 * 4]
72 fmul dword ptr [ EDX + 6 * 4]
73 fld dword ptr [ ESI + 1 * 4]
74 fmul dword ptr [ EDX + 7 * 4]
75
76 fxch ST(3)
77 faddp ST(7), ST(0)
78 fxch ST(1)
79 faddp ST(5), ST(0)
80 faddp ST(3), ST(0)
81 faddp ST(1), ST(0)
82
83 fxch ST(3)
84 fadd dword ptr [ EDX + 12 * 4]
85 fxch ST(2)
86 fadd dword ptr [ EDX + 13 * 4]
87 fxch ST(1)
88 fadd dword ptr [ EDX + 14 * 4]
89 fxch ST(3)
90 fadd dword ptr [ EDX + 15 * 4]
91
92 fxch ST(2)
93 fstp dword ptr [ EDI + 0 * 4]
94 fstp dword ptr [ EDI + 1 * 4]
95 fxch ST(1)
96 fstp dword ptr [ EDI + 2 * 4]
97 fstp dword ptr [ EDI + 3 * 4]
98
99p2mgm_skip:
100 inc EBP
101 add EDI, 16
102 add ESI, EAX
103 cmp EDI, ECX
104 jne p2mgm_top
105
106
107p2mgm_finish:
108 pop EBP
109 pop EBX
110 pop EDI
111 pop ESI
112 ret
113
114
115 PUBLIC _gl_x86_transform_points2_identity_masked
116 ALIGN 4
117_gl_x86_transform_points2_identity_masked:
118
119 push ESI
120 push EDI
121
122 push EBX
123 push EBP
124
125 mov ESI, dword ptr [ ESP + 16+12]
126 mov EDI, dword ptr [ ESP + 16+4]
127
128 mov EDX, dword ptr [ ESP + 16+8]
129 mov EBP, dword ptr [ ESP + 16+16]
130
131 mov ECX, dword ptr [ ESI + 8]
132 mov BL, byte ptr [ ESP + 16+20]
133
134 test ECX, ECX
135 jz p2mim_finish
136
137 mov EAX, dword ptr [ ESI + 12]
138 or dword ptr [ EDI + 20], 3
139
140 mov dword ptr [ EDI + 8], ECX
141 mov dword ptr [ EDI + 16], 2
142
143 shl ECX, 4
144 mov ESI, dword ptr [ ESI + 4]
145
146 mov EDI, dword ptr [ EDI + 4]
147 add ECX, EDI
148
149 mov dword ptr [ ESP + 16+12], EAX
150
151
152 cmp EDI, ESI
153 je p2mim_finish
154
155 ALIGN 4
156p2mim_top:
157
158 test byte ptr [EBP], BL
159 jnz p2mim_skip
160
161 mov EAX, dword ptr [ ESI + 0 * 4]
162 mov EDX, dword ptr [ ESI + 1 * 4]
163
164 mov dword ptr [ EDI + 0 * 4], EAX
165 mov dword ptr [ EDI + 1 * 4], EDX
166p2mim_skip:
167 inc EBP
168 add EDI, 16
169 add ESI, dword ptr [ ESP + 16+12]
170 cmp EDI, ECX
171 jne p2mim_top
172
173
174p2mim_finish:
175 pop EBP
176 pop EBX
177 pop EDI
178 pop ESI
179 ret
180
181
182 PUBLIC _gl_x86_transform_points2_2d_masked
183 ALIGN 4
184_gl_x86_transform_points2_2d_masked:
185
186 push ESI
187 push EDI
188
189 push EBX
190 push EBP
191
192 mov ESI, dword ptr [ ESP + 16+12]
193 mov EDI, dword ptr [ ESP + 16+4]
194
195 mov EDX, dword ptr [ ESP + 16+8]
196 mov EBP, dword ptr [ ESP + 16+16]
197
198 mov ECX, dword ptr [ ESI + 8]
199 mov BL, byte ptr [ ESP + 16+20]
200
201 test ECX, ECX
202 jz p2m2dm_finish
203
204 mov EAX, dword ptr [ ESI + 12]
205 or dword ptr [ EDI + 20], 3
206
207 mov dword ptr [ EDI + 8], ECX
208 mov dword ptr [ EDI + 16], 2
209
210 shl ECX, 4
211 mov ESI, dword ptr [ ESI + 4]
212
213 mov EDI, dword ptr [ EDI + 4]
214 add ECX, EDI
215
216
217
218 ALIGN 4
219p2m2dm_top:
220
221 test byte ptr [EBP], BL
222 jnz p2m2dm_skip
223
224
225 fld dword ptr [ ESI + 0 * 4]
226 fmul dword ptr [ EDX + 0 * 4]
227 fld dword ptr [ ESI + 0 * 4]
228 fmul dword ptr [ EDX + 1 * 4]
229
230 fld dword ptr [ ESI + 1 * 4]
231 fmul dword ptr [ EDX + 4 * 4]
232 fld dword ptr [ ESI + 1 * 4]
233 fmul dword ptr [ EDX + 5 * 4]
234
235 fxch ST(1)
236 faddp ST(3), ST(0)
237 faddp ST(1), ST(0)
238
239 fxch ST(1)
240 fadd dword ptr [ EDX + 12 * 4]
241 fxch ST(1)
242 fadd dword ptr [ EDX + 13 * 4]
243
244 fxch ST(1)
245 fstp dword ptr [ EDI + 0 * 4]
246 fstp dword ptr [ EDI + 1 * 4]
247
248p2m2dm_skip:
249 inc EBP
250 add EDI, 16
251 add ESI, EAX
252 cmp EDI, ECX
253 jne p2m2dm_top
254
255
256p2m2dm_finish:
257 pop EBP
258 pop EBX
259 pop EDI
260 pop ESI
261 ret
262
263
264 PUBLIC _gl_x86_transform_points2_2d_no_rot_masked
265 ALIGN 4
266_gl_x86_transform_points2_2d_no_rot_masked:
267
268 push ESI
269 push EDI
270
271 push EBX
272 push EBP
273
274 mov ESI, dword ptr [ ESP + 16+12]
275 mov EDI, dword ptr [ ESP + 16+4]
276
277 mov EDX, dword ptr [ ESP + 16+8]
278 mov EBP, dword ptr [ ESP + 16+16]
279
280 mov ECX, dword ptr [ ESI + 8]
281 mov BL, byte ptr [ ESP + 16+20]
282
283 test ECX, ECX
284 jz p2m2dnrm_finish
285
286 mov EAX, dword ptr [ ESI + 12]
287 or dword ptr [ EDI + 20], 3
288
289 mov dword ptr [ EDI + 8], ECX
290 mov dword ptr [ EDI + 16], 2
291
292 shl ECX, 4
293 mov ESI, dword ptr [ ESI + 4]
294
295 mov EDI, dword ptr [ EDI + 4]
296 add ECX, EDI
297
298
299
300 ALIGN 4
301p2m2dnrm_top:
302
303 test byte ptr [EBP], BL
304 jnz p2m2dnrm_skip
305
306
307 fld dword ptr [ ESI + 0 * 4]
308 fmul dword ptr [ EDX + 0 * 4]
309
310 fld dword ptr [ ESI + 1 * 4]
311 fmul dword ptr [ EDX + 5 * 4]
312
313 fxch ST(1)
314 fadd dword ptr [ EDX + 12 * 4]
315 fld dword ptr [ EDX + 13 * 4]
316 fxch ST(2)
317 faddp ST(2), ST(0)
318
319 fstp dword ptr [ EDI + 0 * 4]
320 fstp dword ptr [ EDI + 1 * 4]
321
322p2m2dnrm_skip:
323 inc EBP
324 add EDI, 16
325 add ESI, EAX
326 cmp EDI, ECX
327 jne p2m2dnrm_top
328
329
330p2m2dnrm_finish:
331 pop EBP
332 pop EBX
333 pop EDI
334 pop ESI
335 ret
336
337
338 PUBLIC _gl_x86_transform_points2_3d_masked
339 ALIGN 4
340_gl_x86_transform_points2_3d_masked:
341
342 push ESI
343 push EDI
344
345 push EBX
346 push EBP
347
348 mov ESI, dword ptr [ ESP + 16+12]
349 mov EDI, dword ptr [ ESP + 16+4]
350
351 mov EDX, dword ptr [ ESP + 16+8]
352 mov EBP, dword ptr [ ESP + 16+16]
353
354 mov ECX, dword ptr [ ESI + 8]
355 mov BL, byte ptr [ ESP + 16+20]
356
357 test ECX, ECX
358 jz p2m3dm_finish
359
360 mov EAX, dword ptr [ ESI + 12]
361 or dword ptr [ EDI + 20], 7
362
363 mov dword ptr [ EDI + 8], ECX
364 mov dword ptr [ EDI + 16], 3
365
366 shl ECX, 4
367 mov ESI, dword ptr [ ESI + 4]
368
369 mov EDI, dword ptr [ EDI + 4]
370 add ECX, EDI
371
372
373
374 ALIGN 4
375p2m3dm_top:
376
377 test byte ptr [EBP], BL
378 jnz p2m3dm_skip
379
380
381 fld dword ptr [ ESI + 0 * 4]
382 fmul dword ptr [ EDX + 0 * 4]
383 fld dword ptr [ ESI + 0 * 4]
384 fmul dword ptr [ EDX + 1 * 4]
385 fld dword ptr [ ESI + 0 * 4]
386 fmul dword ptr [ EDX + 2 * 4]
387
388 fld dword ptr [ ESI + 1 * 4]
389 fmul dword ptr [ EDX + 4 * 4]
390 fld dword ptr [ ESI + 1 * 4]
391 fmul dword ptr [ EDX + 5 * 4]
392 fld dword ptr [ ESI + 1 * 4]
393 fmul dword ptr [ EDX + 6 * 4]
394
395 fxch ST(2)
396 faddp ST(5), ST(0)
397 faddp ST(3), ST(0)
398 faddp ST(1), ST(0)
399
400 fxch ST(2)
401 fadd dword ptr [ EDX + 12 * 4]
402 fxch ST(1)
403 fadd dword ptr [ EDX + 13 * 4]
404 fxch ST(2)
405 fadd dword ptr [ EDX + 14 * 4]
406
407 fxch ST(1)
408 fstp dword ptr [ EDI + 0 * 4]
409 fxch ST(1)
410 fstp dword ptr [ EDI + 1 * 4]
411 fstp dword ptr [ EDI + 2 * 4]
412
413p2m3dm_skip:
414 inc EBP
415 add EDI, 16
416 add ESI, EAX
417 cmp EDI, ECX
418 jne p2m3dm_top
419
420
421p2m3dm_finish:
422 pop EBP
423 pop EBX
424 pop EDI
425 pop ESI
426 ret
427
428
429 PUBLIC _gl_x86_transform_points2_3d_no_rot_masked
430 ALIGN 4
431_gl_x86_transform_points2_3d_no_rot_masked:
432
433 push ESI
434 push EDI
435
436 push EBX
437 push EBP
438
439 mov ESI, dword ptr [ ESP + 16+12]
440 mov EDI, dword ptr [ ESP + 16+4]
441
442 mov EDX, dword ptr [ ESP + 16+8]
443 mov EBP, dword ptr [ ESP + 16+16]
444
445 mov ECX, dword ptr [ ESI + 8]
446 mov BL, byte ptr [ ESP + 16+20]
447
448 test ECX, ECX
449 jz p2m3dnrm_finish
450
451 mov EAX, dword ptr [ ESI + 12]
452 or dword ptr [ EDI + 20], 7
453
454 mov dword ptr [ EDI + 8], ECX
455 mov dword ptr [ EDI + 16], 3
456
457 shl ECX, 4
458 mov ESI, dword ptr [ ESI + 4]
459
460 mov EDI, dword ptr [ EDI + 4]
461 add ECX, EDI
462
463 mov dword ptr [ ESP + 16+12], EAX
464
465
466 mov EAX, dword ptr [ EDX + 14 * 4]
467 ALIGN 4
468p2m3dnrm_top:
469
470 test byte ptr [EBP], BL
471 jnz p2m3dnrm_skip
472
473
474 fld dword ptr [ ESI + 0 * 4]
475 fmul dword ptr [ EDX + 0 * 4]
476
477 fld dword ptr [ ESI + 1 * 4]
478 fmul dword ptr [ EDX + 5 * 4]
479
480 fxch ST(1)
481 fadd dword ptr [ EDX + 12 * 4]
482 fld dword ptr [ EDX + 13 * 4]
483 fxch ST(2)
484 faddp ST(2), ST(0)
485
486 fstp dword ptr [ EDI + 0 * 4]
487 fstp dword ptr [ EDI + 1 * 4]
488 mov dword ptr [ EDI + 2 * 4], EAX
489
490p2m3dnrm_skip:
491 inc EBP
492 add EDI, 16
493 add ESI, dword ptr [ ESP + 16+12]
494 cmp EDI, ECX
495 jne p2m3dnrm_top
496
497
498p2m3dnrm_finish:
499 pop EBP
500 pop EBX
501 pop EDI
502 pop ESI
503 ret
504
505
506 PUBLIC _gl_x86_transform_points2_perspective_masked
507 ALIGN 4
508_gl_x86_transform_points2_perspective_masked:
509
510 push ESI
511 push EDI
512
513 push EBX
514 push EBP
515
516 mov ESI, dword ptr [ ESP + 16+12]
517 mov EDI, dword ptr [ ESP + 16+4]
518
519 mov EDX, dword ptr [ ESP + 16+8]
520 mov EBP, dword ptr [ ESP + 16+16]
521
522 mov ECX, dword ptr [ ESI + 8]
523 mov BL, byte ptr [ ESP + 16+20]
524
525 test ECX, ECX
526 jz p2mpm_finish
527
528 mov EAX, dword ptr [ ESI + 12]
529 or dword ptr [ EDI + 20], 15
530
531 mov dword ptr [ EDI + 8], ECX
532 mov dword ptr [ EDI + 16], 4
533
534 shl ECX, 4
535 mov ESI, dword ptr [ ESI + 4]
536
537 mov EDI, dword ptr [ EDI + 4]
538 add ECX, EDI
539
540 mov dword ptr [ ESP + 16+12], EAX
541
542
543 mov EAX, dword ptr [ EDX + 14 * 4]
544 ALIGN 4
545p2mpm_top:
546
547 test byte ptr [EBP], BL
548 jnz p2mpm_skip
549
550
551 fld dword ptr [ ESI + 0 * 4]
552 fmul dword ptr [ EDX + 0 * 4]
553
554 fld dword ptr [ ESI + 1 * 4]
555 fmul dword ptr [ EDX + 5 * 4]
556
557 fxch ST(1)
558 fstp dword ptr [ EDI + 0 * 4]
559 fstp dword ptr [ EDI + 1 * 4]
560 mov dword ptr [ EDI + 2 * 4], EAX
561 mov dword ptr [ EDI + 3 * 4], 0
562
563p2mpm_skip:
564 inc EBP
565 add EDI, 16
566 add ESI, dword ptr [ ESP + 16+12]
567 cmp EDI, ECX
568 jne p2mpm_top
569
570
571p2mpm_finish:
572 pop EBP
573 pop EBX
574 pop EDI
575 pop ESI
576 ret
577
578
579 PUBLIC _gl_x86_transform_points3_general_masked
580 ALIGN 4
581_gl_x86_transform_points3_general_masked:
582
583 push ESI
584 push EDI
585
586 push EBX
587 push EBP
588
589 mov ESI, dword ptr [ ESP + 16+12]
590 mov EDI, dword ptr [ ESP + 16+4]
591
592 mov EDX, dword ptr [ ESP + 16+8]
593 mov EBP, dword ptr [ ESP + 16+16]
594
595 mov ECX, dword ptr [ ESI + 8]
596 mov BL, byte ptr [ ESP + 16+20]
597
598 test ECX, ECX
599 jz p3mgm_finish
600
601 mov EAX, dword ptr [ ESI + 12]
602 or dword ptr [ EDI + 20], 15
603
604 mov dword ptr [ EDI + 8], ECX
605 mov dword ptr [ EDI + 16], 4
606
607 shl ECX, 4
608 mov ESI, dword ptr [ ESI + 4]
609
610 mov EDI, dword ptr [ EDI + 4]
611 add ECX, EDI
612
613
614
615 ALIGN 4
616p3mgm_top:
617
618 test byte ptr [EBP], BL
619 jnz p3mgm_skip
620
621
622 fld dword ptr [ ESI + 0 * 4]
623 fmul dword ptr [ EDX + 0 * 4]
624 fld dword ptr [ ESI + 0 * 4]
625 fmul dword ptr [ EDX + 1 * 4]
626 fld dword ptr [ ESI + 0 * 4]
627 fmul dword ptr [ EDX + 2 * 4]
628 fld dword ptr [ ESI + 0 * 4]
629 fmul dword ptr [ EDX + 3 * 4]
630
631 fld dword ptr [ ESI + 1 * 4]
632 fmul dword ptr [ EDX + 4 * 4]
633 fld dword ptr [ ESI + 1 * 4]
634 fmul dword ptr [ EDX + 5 * 4]
635 fld dword ptr [ ESI + 1 * 4]
636 fmul dword ptr [ EDX + 6 * 4]
637 fld dword ptr [ ESI + 1 * 4]
638 fmul dword ptr [ EDX + 7 * 4]
639
640 fxch ST(3)
641 faddp ST(7), ST(0)
642 fxch ST(1)
643 faddp ST(5), ST(0)
644 faddp ST(3), ST(0)
645 faddp ST(1), ST(0)
646
647 fld dword ptr [ ESI + 2 * 4]
648 fmul dword ptr [ EDX + 8 * 4]
649 fld dword ptr [ ESI + 2 * 4]
650 fmul dword ptr [ EDX + 9 * 4]
651 fld dword ptr [ ESI + 2 * 4]
652 fmul dword ptr [ EDX + 10 * 4]
653 fld dword ptr [ ESI + 2 * 4]
654 fmul dword ptr [ EDX + 11 * 4]
655
656 fxch ST(3)
657 faddp ST(7), ST(0)
658 fxch ST(1)
659 faddp ST(5), ST(0)
660 faddp ST(3), ST(0)
661 faddp ST(1), ST(0)
662
663 fxch ST(3)
664 fadd dword ptr [ EDX + 12 * 4]
665 fxch ST(2)
666 fadd dword ptr [ EDX + 13 * 4]
667 fxch ST(1)
668 fadd dword ptr [ EDX + 14 * 4]
669 fxch ST(3)
670 fadd dword ptr [ EDX + 15 * 4]
671
672 fxch ST(2)
673 fstp dword ptr [ EDI + 0 * 4]
674 fstp dword ptr [ EDI + 1 * 4]
675 fxch ST(1)
676 fstp dword ptr [ EDI + 2 * 4]
677 fstp dword ptr [ EDI + 3 * 4]
678
679p3mgm_skip:
680 inc EBP
681 add EDI, 16
682 add ESI, EAX
683 cmp EDI, ECX
684 jne p3mgm_top
685
686
687p3mgm_finish:
688 pop EBP
689 pop EBX
690 pop EDI
691 pop ESI
692 ret
693
694
695 PUBLIC _gl_x86_transform_points3_identity_masked
696 ALIGN 4
697_gl_x86_transform_points3_identity_masked:
698
699 push ESI
700 push EDI
701
702 push EBX
703 push EBP
704
705 mov ESI, dword ptr [ ESP + 16+12]
706 mov EDI, dword ptr [ ESP + 16+4]
707
708 mov EDX, dword ptr [ ESP + 16+8]
709 mov EBP, dword ptr [ ESP + 16+16]
710
711 mov ECX, dword ptr [ ESI + 8]
712 mov BL, byte ptr [ ESP + 16+20]
713
714 test ECX, ECX
715 jz p3mim_finish
716
717 mov EAX, dword ptr [ ESI + 12]
718 or dword ptr [ EDI + 20], 7
719
720 mov dword ptr [ EDI + 8], ECX
721 mov dword ptr [ EDI + 16], 3
722
723 shl ECX, 4
724 mov ESI, dword ptr [ ESI + 4]
725
726 mov EDI, dword ptr [ EDI + 4]
727 add ECX, EDI
728
729 mov dword ptr [ ESP + 16+12], EAX
730 mov dword ptr [ ESP + 16+4], ECX
731
732
733 cmp EDI, ESI
734 je p3mim_finish
735
736 ALIGN 4
737p3mim_top:
738
739 test byte ptr [EBP], BL
740 jnz p3mim_skip
741
742 mov EAX, dword ptr [ ESI + 0 * 4]
743 mov ECX, dword ptr [ ESI + 1 * 4]
744 mov EDX, dword ptr [ ESI + 2 * 4]
745
746 mov dword ptr [ EDI + 0 * 4], EAX
747 mov dword ptr [ EDI + 1 * 4], ECX
748 mov dword ptr [ EDI + 2 * 4], EDX
749p3mim_skip:
750 inc EBP
751 add EDI, 16
752 add ESI, dword ptr [ ESP + 16+12]
753 cmp EDI, dword ptr [ ESP + 16+4]
754 jne p3mim_top
755
756
757p3mim_finish:
758 pop EBP
759 pop EBX
760 pop EDI
761 pop ESI
762 ret
763
764
765 PUBLIC _gl_x86_transform_points3_2d_masked
766 ALIGN 4
767_gl_x86_transform_points3_2d_masked:
768
769 push ESI
770 push EDI
771
772 push EBX
773 push EBP
774
775 mov ESI, dword ptr [ ESP + 16+12]
776 mov EDI, dword ptr [ ESP + 16+4]
777
778 mov EDX, dword ptr [ ESP + 16+8]
779 mov EBP, dword ptr [ ESP + 16+16]
780
781 mov ECX, dword ptr [ ESI + 8]
782 mov BL, byte ptr [ ESP + 16+20]
783
784 test ECX, ECX
785 jz p3m2dm_finish
786
787 mov EAX, dword ptr [ ESI + 12]
788 or dword ptr [ EDI + 20], 7
789
790 mov dword ptr [ EDI + 8], ECX
791 mov dword ptr [ EDI + 16], 3
792
793 shl ECX, 4
794 mov ESI, dword ptr [ ESI + 4]
795
796 mov EDI, dword ptr [ EDI + 4]
797 add ECX, EDI
798
799 mov dword ptr [ ESP + 16+12], EAX
800
801
802 ALIGN 4
803p3m2dm_top:
804
805 test byte ptr [EBP], BL
806 jnz p3m2dm_skip
807
808
809 fld dword ptr [ ESI + 0 * 4]
810 fmul dword ptr [ EDX + 0 * 4]
811 fld dword ptr [ ESI + 0 * 4]
812 fmul dword ptr [ EDX + 1 * 4]
813
814 fld dword ptr [ ESI + 1 * 4]
815 fmul dword ptr [ EDX + 4 * 4]
816 fld dword ptr [ ESI + 1 * 4]
817 fmul dword ptr [ EDX + 5 * 4]
818
819 fxch ST(1)
820 faddp ST(3), ST(0)
821 faddp ST(1), ST(0)
822
823 fxch ST(1)
824 fadd dword ptr [ EDX + 12 * 4]
825 fxch ST(1)
826 fadd dword ptr [ EDX + 13 * 4]
827
828 mov EAX, dword ptr [ ESI + 2 * 4]
829
830 fxch ST(1)
831 fstp dword ptr [ EDI + 0 * 4]
832 fstp dword ptr [ EDI + 1 * 4]
833 mov dword ptr [ EDI + 2 * 4], EAX
834
835p3m2dm_skip:
836 inc EBP
837 add EDI, 16
838 add ESI, dword ptr [ ESP + 16+12]
839 cmp EDI, ECX
840 jne p3m2dm_top
841
842
843p3m2dm_finish:
844 pop EBP
845 pop EBX
846 pop EDI
847 pop ESI
848 ret
849
850
851 PUBLIC _gl_x86_transform_points3_2d_no_rot_masked
852 ALIGN 4
853_gl_x86_transform_points3_2d_no_rot_masked:
854
855 push ESI
856 push EDI
857
858 push EBX
859 push EBP
860
861 mov ESI, dword ptr [ ESP + 16+12]
862 mov EDI, dword ptr [ ESP + 16+4]
863
864 mov EDX, dword ptr [ ESP + 16+8]
865 mov EBP, dword ptr [ ESP + 16+16]
866
867 mov ECX, dword ptr [ ESI + 8]
868 mov BL, byte ptr [ ESP + 16+20]
869
870 test ECX, ECX
871 jz p3m2dnrm_finish
872
873 mov EAX, dword ptr [ ESI + 12]
874 or dword ptr [ EDI + 20], 7
875
876 mov dword ptr [ EDI + 8], ECX
877 mov dword ptr [ EDI + 16], 3
878
879 shl ECX, 4
880 mov ESI, dword ptr [ ESI + 4]
881
882 mov EDI, dword ptr [ EDI + 4]
883 add ECX, EDI
884
885 mov dword ptr [ ESP + 16+12], EAX
886
887
888 ALIGN 4
889p3m2dnrm_top:
890
891 test byte ptr [EBP], BL
892 jnz p3m2dnrm_skip
893
894
895 fld dword ptr [ ESI + 0 * 4]
896 fmul dword ptr [ EDX + 0 * 4]
897
898 fld dword ptr [ ESI + 1 * 4]
899 fmul dword ptr [ EDX + 5 * 4]
900
901 fxch ST(1)
902 fadd dword ptr [ EDX + 12 * 4]
903 fld dword ptr [ EDX + 13 * 4]
904
905 fxch ST(2)
906 faddp ST(2), ST(0)
907
908 mov EAX, dword ptr [ ESI + 2 * 4]
909
910 fstp dword ptr [ EDI + 0 * 4]
911 fstp dword ptr [ EDI + 1 * 4]
912 mov dword ptr [ EDI + 2 * 4], EAX
913
914p3m2dnrm_skip:
915 inc EBP
916 add EDI, 16
917 add ESI, dword ptr [ ESP + 16+12]
918 cmp EDI, ECX
919 jne p3m2dnrm_top
920
921
922p3m2dnrm_finish:
923 pop EBP
924 pop EBX
925 pop EDI
926 pop ESI
927 ret
928
929
930 PUBLIC _gl_x86_transform_points3_3d_masked
931 ALIGN 4
932_gl_x86_transform_points3_3d_masked:
933
934 push ESI
935 push EDI
936
937 push EBX
938 push EBP
939
940 mov ESI, dword ptr [ ESP + 16+12]
941 mov EDI, dword ptr [ ESP + 16+4]
942
943 mov EDX, dword ptr [ ESP + 16+8]
944 mov EBP, dword ptr [ ESP + 16+16]
945
946 mov ECX, dword ptr [ ESI + 8]
947 mov BL, byte ptr [ ESP + 16+20]
948
949 test ECX, ECX
950 jz p3m3dm_finish
951
952 mov EAX, dword ptr [ ESI + 12]
953 or dword ptr [ EDI + 20], 7
954
955 mov dword ptr [ EDI + 8], ECX
956 mov dword ptr [ EDI + 16], 3
957
958 shl ECX, 4
959 mov ESI, dword ptr [ ESI + 4]
960
961 mov EDI, dword ptr [ EDI + 4]
962 add ECX, EDI
963
964
965
966 ALIGN 4
967p3m3dm_top:
968
969 test byte ptr [EBP], BL
970 jnz p3m3dm_skip
971
972
973 fld dword ptr [ ESI + 0 * 4]
974 fmul dword ptr [ EDX + 0 * 4]
975 fld dword ptr [ ESI + 0 * 4]
976 fmul dword ptr [ EDX + 1 * 4]
977 fld dword ptr [ ESI + 0 * 4]
978 fmul dword ptr [ EDX + 2 * 4]
979
980 fld dword ptr [ ESI + 1 * 4]
981 fmul dword ptr [ EDX + 4 * 4]
982 fld dword ptr [ ESI + 1 * 4]
983 fmul dword ptr [ EDX + 5 * 4]
984 fld dword ptr [ ESI + 1 * 4]
985 fmul dword ptr [ EDX + 6 * 4]
986
987 fxch ST(2)
988 faddp ST(5), ST(0)
989 faddp ST(3), ST(0)
990 faddp ST(1), ST(0)
991
992 fld dword ptr [ ESI + 2 * 4]
993 fmul dword ptr [ EDX + 8 * 4]
994 fld dword ptr [ ESI + 2 * 4]
995 fmul dword ptr [ EDX + 9 * 4]
996 fld dword ptr [ ESI + 2 * 4]
997 fmul dword ptr [ EDX + 10 * 4]
998
999 fxch ST(2)
1000 faddp ST(5), ST(0)
1001 faddp ST(3), ST(0)
1002 faddp ST(1), ST(0)
1003
1004 fxch ST(2)
1005 fadd dword ptr [ EDX + 12 * 4]
1006 fxch ST(1)
1007 fadd dword ptr [ EDX + 13 * 4]
1008 fxch ST(2)
1009 fadd dword ptr [ EDX + 14 * 4]
1010
1011 fxch ST(1)
1012 fstp dword ptr [ EDI + 0 * 4]
1013 fxch ST(1)
1014 fstp dword ptr [ EDI + 1 * 4]
1015 fstp dword ptr [ EDI + 2 * 4]
1016
1017p3m3dm_skip:
1018 inc EBP
1019 add EDI, 16
1020 add ESI, EAX
1021 cmp EDI, ECX
1022 jne p3m3dm_top
1023
1024
1025p3m3dm_finish:
1026 pop EBP
1027 pop EBX
1028 pop EDI
1029 pop ESI
1030 ret
1031
1032
1033 PUBLIC _gl_x86_transform_points3_3d_no_rot_masked
1034 ALIGN 4
1035_gl_x86_transform_points3_3d_no_rot_masked:
1036
1037 push ESI
1038 push EDI
1039
1040 push EBX
1041 push EBP
1042
1043 mov ESI, dword ptr [ ESP + 16+12]
1044 mov EDI, dword ptr [ ESP + 16+4]
1045
1046 mov EDX, dword ptr [ ESP + 16+8]
1047 mov EBP, dword ptr [ ESP + 16+16]
1048
1049 mov ECX, dword ptr [ ESI + 8]
1050 mov BL, byte ptr [ ESP + 16+20]
1051
1052 test ECX, ECX
1053 jz p3m3dnrm_finish
1054
1055 mov EAX, dword ptr [ ESI + 12]
1056 or dword ptr [ EDI + 20], 7
1057
1058 mov dword ptr [ EDI + 8], ECX
1059 mov dword ptr [ EDI + 16], 3
1060
1061 shl ECX, 4
1062 mov ESI, dword ptr [ ESI + 4]
1063
1064 mov EDI, dword ptr [ EDI + 4]
1065 add ECX, EDI
1066
1067
1068
1069 ALIGN 4
1070p3m3dnrm_top:
1071
1072 test byte ptr [EBP], BL
1073 jnz p3m3dnrm_skip
1074
1075
1076 fld dword ptr [ ESI + 0 * 4]
1077 fmul dword ptr [ EDX + 0 * 4]
1078
1079 fld dword ptr [ ESI + 1 * 4]
1080 fmul dword ptr [ EDX + 5 * 4]
1081
1082 fld dword ptr [ ESI + 2 * 4]
1083 fmul dword ptr [ EDX + 10 * 4]
1084
1085 fxch ST(2)
1086 fadd dword ptr [ EDX + 12 * 4]
1087 fld dword ptr [ EDX + 13 * 4]
1088 fxch ST(2)
1089 faddp ST(2), ST(0)
1090 fld dword ptr [ EDX + 14 * 4]
1091 fxch ST(3)
1092 faddp ST(3), ST(0)
1093
1094 fstp dword ptr [ EDI + 0 * 4]
1095 fstp dword ptr [ EDI + 1 * 4]
1096 fstp dword ptr [ EDI + 2 * 4]
1097
1098p3m3dnrm_skip:
1099 inc EBP
1100 add EDI, 16
1101 add ESI, EAX
1102 cmp EDI, ECX
1103 jne p3m3dnrm_top
1104
1105
1106p3m3dnrm_finish:
1107 pop EBP
1108 pop EBX
1109 pop EDI
1110 pop ESI
1111 ret
1112
1113
1114 PUBLIC _gl_x86_transform_points3_perspective_masked
1115 ALIGN 4
1116_gl_x86_transform_points3_perspective_masked:
1117
1118 push ESI
1119 push EDI
1120
1121 push EBX
1122 push EBP
1123
1124 mov ESI, dword ptr [ ESP + 16+12]
1125 mov EDI, dword ptr [ ESP + 16+4]
1126
1127 mov EDX, dword ptr [ ESP + 16+8]
1128 mov EBP, dword ptr [ ESP + 16+16]
1129
1130 mov ECX, dword ptr [ ESI + 8]
1131 mov BL, byte ptr [ ESP + 16+20]
1132
1133 test ECX, ECX
1134 jz p3mpm_finish
1135
1136 mov EAX, dword ptr [ ESI + 12]
1137 or dword ptr [ EDI + 20], 15
1138
1139 mov dword ptr [ EDI + 8], ECX
1140 mov dword ptr [ EDI + 16], 4
1141
1142 shl ECX, 4
1143 mov ESI, dword ptr [ ESI + 4]
1144
1145 mov EDI, dword ptr [ EDI + 4]
1146 add ECX, EDI
1147
1148 mov dword ptr [ ESP + 16+12], EAX
1149
1150
1151 ALIGN 4
1152p3mpm_top:
1153
1154 test byte ptr [EBP], BL
1155 jnz p3mpm_skip
1156
1157
1158 fld dword ptr [ ESI + 0 * 4]
1159 fmul dword ptr [ EDX + 0 * 4]
1160
1161 fld dword ptr [ ESI + 1 * 4]
1162 fmul dword ptr [ EDX + 5 * 4]
1163
1164 fld dword ptr [ ESI + 2 * 4]
1165 fmul dword ptr [ EDX + 8 * 4]
1166 fld dword ptr [ ESI + 2 * 4]
1167 fmul dword ptr [ EDX + 9 * 4]
1168 fld dword ptr [ ESI + 2 * 4]
1169 fmul dword ptr [ EDX + 10 * 4]
1170
1171 fxch ST(2)
1172 faddp ST(4), ST(0)
1173 faddp ST(2), ST(0)
1174 fld dword ptr [ EDX + 14 * 4]
1175 fxch ST(1)
1176 faddp ST(1), ST(0)
1177
1178 mov EAX, dword ptr [ ESI + 2 * 4]
1179 xor EAX, -2147483648
1180
1181 fxch ST(2)
1182 fstp dword ptr [ EDI + 0 * 4]
1183 fstp dword ptr [ EDI + 1 * 4]
1184 fstp dword ptr [ EDI + 2 * 4]
1185 mov dword ptr [ EDI + 3 * 4], EAX
1186
1187p3mpm_skip:
1188 inc EBP
1189 add EDI, 16
1190 add ESI, dword ptr [ ESP + 16+12]
1191 cmp EDI, ECX
1192 jne p3mpm_top
1193
1194
1195p3mpm_finish:
1196 pop EBP
1197 pop EBX
1198 pop EDI
1199 pop ESI
1200 ret
1201
1202
1203 PUBLIC _gl_x86_transform_points4_general_masked
1204 ALIGN 4
1205_gl_x86_transform_points4_general_masked:
1206
1207 push ESI
1208 push EDI
1209
1210 push EBX
1211 push EBP
1212
1213 mov ESI, dword ptr [ ESP + 16+12]
1214 mov EDI, dword ptr [ ESP + 16+4]
1215
1216 mov EDX, dword ptr [ ESP + 16+8]
1217 mov EBP, dword ptr [ ESP + 16+16]
1218
1219 mov ECX, dword ptr [ ESI + 8]
1220 mov BL, byte ptr [ ESP + 16+20]
1221
1222 test ECX, ECX
1223 jz p4mgm_finish
1224
1225 mov EAX, dword ptr [ ESI + 12]
1226 or dword ptr [ EDI + 20], 15
1227
1228 mov dword ptr [ EDI + 8], ECX
1229 mov dword ptr [ EDI + 16], 4
1230
1231 shl ECX, 4
1232 mov ESI, dword ptr [ ESI + 4]
1233
1234 mov EDI, dword ptr [ EDI + 4]
1235 add ECX, EDI
1236
1237
1238
1239 ALIGN 4
1240p4mgm_top:
1241
1242 test byte ptr [EBP], BL
1243 jnz p4mgm_skip
1244
1245
1246 fld dword ptr [ ESI + 0 * 4]
1247 fmul dword ptr [ EDX + 0 * 4]
1248 fld dword ptr [ ESI + 0 * 4]
1249 fmul dword ptr [ EDX + 1 * 4]
1250 fld dword ptr [ ESI + 0 * 4]
1251 fmul dword ptr [ EDX + 2 * 4]
1252 fld dword ptr [ ESI + 0 * 4]
1253 fmul dword ptr [ EDX + 3 * 4]
1254
1255 fld dword ptr [ ESI + 1 * 4]
1256 fmul dword ptr [ EDX + 4 * 4]
1257 fld dword ptr [ ESI + 1 * 4]
1258 fmul dword ptr [ EDX + 5 * 4]
1259 fld dword ptr [ ESI + 1 * 4]
1260 fmul dword ptr [ EDX + 6 * 4]
1261 fld dword ptr [ ESI + 1 * 4]
1262 fmul dword ptr [ EDX + 7 * 4]
1263
1264 fxch ST(3)
1265 faddp ST(7), ST(0)
1266 fxch ST(1)
1267 faddp ST(5), ST(0)
1268 faddp ST(3), ST(0)
1269 faddp ST(1), ST(0)
1270
1271 fld dword ptr [ ESI + 2 * 4]
1272 fmul dword ptr [ EDX + 8 * 4]
1273 fld dword ptr [ ESI + 2 * 4]
1274 fmul dword ptr [ EDX + 9 * 4]
1275 fld dword ptr [ ESI + 2 * 4]
1276 fmul dword ptr [ EDX + 10 * 4]
1277 fld dword ptr [ ESI + 2 * 4]
1278 fmul dword ptr [ EDX + 11 * 4]
1279
1280 fxch ST(3)
1281 faddp ST(7), ST(0)
1282 fxch ST(1)
1283 faddp ST(5), ST(0)
1284 faddp ST(3), ST(0)
1285 faddp ST(1), ST(0)
1286
1287 fld dword ptr [ ESI + 3 * 4]
1288 fmul dword ptr [ EDX + 12 * 4]
1289 fld dword ptr [ ESI + 3 * 4]
1290 fmul dword ptr [ EDX + 13 * 4]
1291 fld dword ptr [ ESI + 3 * 4]
1292 fmul dword ptr [ EDX + 14 * 4]
1293 fld dword ptr [ ESI + 3 * 4]
1294 fmul dword ptr [ EDX + 15 * 4]
1295
1296 fxch ST(3)
1297 faddp ST(7), ST(0)
1298 fxch ST(1)
1299 faddp ST(5), ST(0)
1300 faddp ST(3), ST(0)
1301 faddp ST(1), ST(0)
1302
1303 fxch ST(3)
1304 fstp dword ptr [ EDI + 0 * 4]
1305 fxch ST(1)
1306 fstp dword ptr [ EDI + 1 * 4]
1307 fstp dword ptr [ EDI + 2 * 4]
1308 fstp dword ptr [ EDI + 3 * 4]
1309
1310p4mgm_skip:
1311 inc EBP
1312 add EDI, 16
1313 add ESI, EAX
1314 cmp EDI, ECX
1315 jne p4mgm_top
1316
1317
1318p4mgm_finish:
1319 pop EBP
1320 pop EBX
1321 pop EDI
1322 pop ESI
1323 ret
1324
1325
1326 PUBLIC _gl_x86_transform_points4_identity_masked
1327 ALIGN 4
1328_gl_x86_transform_points4_identity_masked:
1329
1330 push ESI
1331 push EDI
1332
1333 push EBX
1334 push EBP
1335
1336 mov ESI, dword ptr [ ESP + 16+12]
1337 mov EDI, dword ptr [ ESP + 16+4]
1338
1339 mov EDX, dword ptr [ ESP + 16+8]
1340 mov EBP, dword ptr [ ESP + 16+16]
1341
1342 mov ECX, dword ptr [ ESI + 8]
1343 mov BL, byte ptr [ ESP + 16+20]
1344
1345 test ECX, ECX
1346 jz p4mim_finish
1347
1348 mov EAX, dword ptr [ ESI + 12]
1349 or dword ptr [ EDI + 20], 15
1350
1351 mov dword ptr [ EDI + 8], ECX
1352 mov dword ptr [ EDI + 16], 4
1353
1354 shl ECX, 4
1355 mov ESI, dword ptr [ ESI + 4]
1356
1357 mov EDI, dword ptr [ EDI + 4]
1358 add ECX, EDI
1359
1360 mov dword ptr [ ESP + 16+12], EAX
1361
1362
1363 cmp EDI, ESI
1364 je p4mim_finish
1365
1366 ALIGN 4
1367p4mim_top:
1368
1369 test byte ptr [EBP], BL
1370 jnz p4mim_skip
1371
1372 mov EAX, dword ptr [ ESI + 0 * 4]
1373 mov EDX, dword ptr [ ESI + 1 * 4]
1374
1375 mov dword ptr [ EDI + 0 * 4], EAX
1376 mov dword ptr [ EDI + 1 * 4], EDX
1377
1378 mov EAX, dword ptr [ ESI + 2 * 4]
1379 mov EDX, dword ptr [ ESI + 3 * 4]
1380
1381 mov dword ptr [ EDI + 2 * 4], EAX
1382 mov dword ptr [ EDI + 3 * 4], EDX
1383p4mim_skip:
1384 inc EBP
1385 add EDI, 16
1386 add ESI, dword ptr [ ESP + 16+12]
1387 cmp EDI, ECX
1388 jne p4mim_top
1389
1390
1391p4mim_finish:
1392 pop EBP
1393 pop EBX
1394 pop EDI
1395 pop ESI
1396 ret
1397
1398
1399 PUBLIC _gl_x86_transform_points4_2d_masked
1400 ALIGN 4
1401_gl_x86_transform_points4_2d_masked:
1402
1403 push ESI
1404 push EDI
1405
1406 push EBX
1407 push EBP
1408
1409 mov ESI, dword ptr [ ESP + 16+12]
1410 mov EDI, dword ptr [ ESP + 16+4]
1411
1412 mov EDX, dword ptr [ ESP + 16+8]
1413 mov EBP, dword ptr [ ESP + 16+16]
1414
1415 mov ECX, dword ptr [ ESI + 8]
1416 mov BL, byte ptr [ ESP + 16+20]
1417
1418 test ECX, ECX
1419 jz p4m2dm_finish
1420
1421 mov EAX, dword ptr [ ESI + 12]
1422 or dword ptr [ EDI + 20], 15
1423
1424 mov dword ptr [ EDI + 8], ECX
1425 mov dword ptr [ EDI + 16], 4
1426
1427 shl ECX, 4
1428 mov ESI, dword ptr [ ESI + 4]
1429
1430 mov EDI, dword ptr [ EDI + 4]
1431 add ECX, EDI
1432
1433 mov dword ptr [ ESP + 16+12], EAX
1434 mov dword ptr [ ESP + 16+4], ECX
1435
1436
1437 ALIGN 4
1438p4m2dm_top:
1439
1440 test byte ptr [EBP], BL
1441 jnz p4m2dm_skip
1442
1443
1444 fld dword ptr [ ESI + 0 * 4]
1445 fmul dword ptr [ EDX + 0 * 4]
1446 fld dword ptr [ ESI + 0 * 4]
1447 fmul dword ptr [ EDX + 1 * 4]
1448
1449 fld dword ptr [ ESI + 1 * 4]
1450 fmul dword ptr [ EDX + 4 * 4]
1451 fld dword ptr [ ESI + 1 * 4]
1452 fmul dword ptr [ EDX + 5 * 4]
1453
1454 fxch ST(1)
1455 faddp ST(3), ST(0)
1456 faddp ST(1), ST(0)
1457
1458 fld dword ptr [ ESI + 3 * 4]
1459 fmul dword ptr [ EDX + 12 * 4]
1460 fld dword ptr [ ESI + 3 * 4]
1461 fmul dword ptr [ EDX + 13 * 4]
1462
1463 fxch ST(1)
1464 faddp ST(3), ST(0)
1465 faddp ST(1), ST(0)
1466
1467 mov EAX, dword ptr [ ESI + 2 * 4]
1468 mov ECX, dword ptr [ ESI + 3 * 4]
1469
1470 fxch ST(1)
1471 fstp dword ptr [ EDI + 0 * 4]
1472 fstp dword ptr [ EDI + 1 * 4]
1473 mov dword ptr [ EDI + 2 * 4], EAX
1474 mov dword ptr [ EDI + 3 * 4], ECX
1475
1476p4m2dm_skip:
1477 inc EBP
1478 add EDI, 16
1479 add ESI, dword ptr [ ESP + 16+12]
1480 cmp EDI, dword ptr [ ESP + 16+4]
1481 jne p4m2dm_top
1482
1483
1484p4m2dm_finish:
1485 pop EBP
1486 pop EBX
1487 pop EDI
1488 pop ESI
1489 ret
1490
1491
1492 PUBLIC _gl_x86_transform_points4_2d_no_rot_masked
1493 ALIGN 4
1494_gl_x86_transform_points4_2d_no_rot_masked:
1495
1496 push ESI
1497 push EDI
1498
1499 push EBX
1500 push EBP
1501
1502 mov ESI, dword ptr [ ESP + 16+12]
1503 mov EDI, dword ptr [ ESP + 16+4]
1504
1505 mov EDX, dword ptr [ ESP + 16+8]
1506 mov EBP, dword ptr [ ESP + 16+16]
1507
1508 mov ECX, dword ptr [ ESI + 8]
1509 mov BL, byte ptr [ ESP + 16+20]
1510
1511 test ECX, ECX
1512 jz p4m2dnrm_finish
1513
1514 mov EAX, dword ptr [ ESI + 12]
1515 or dword ptr [ EDI + 20], 15
1516
1517 mov dword ptr [ EDI + 8], ECX
1518 mov dword ptr [ EDI + 16], 4
1519
1520 shl ECX, 4
1521 mov ESI, dword ptr [ ESI + 4]
1522
1523 mov EDI, dword ptr [ EDI + 4]
1524 add ECX, EDI
1525
1526 mov dword ptr [ ESP + 16+12], EAX
1527 mov dword ptr [ ESP + 16+4], ECX
1528
1529
1530 ALIGN 4
1531p4m2dnrm_top:
1532
1533 test byte ptr [EBP], BL
1534 jnz p4m2dnrm_skip
1535
1536
1537 fld dword ptr [ ESI + 0 * 4]
1538 fmul dword ptr [ EDX + 0 * 4]
1539
1540 fld dword ptr [ ESI + 1 * 4]
1541 fmul dword ptr [ EDX + 5 * 4]
1542
1543 fld dword ptr [ ESI + 3 * 4]
1544 fmul dword ptr [ EDX + 12 * 4]
1545 fld dword ptr [ ESI + 3 * 4]
1546 fmul dword ptr [ EDX + 13 * 4]
1547
1548 fxch ST(1)
1549 faddp ST(3), ST(0)
1550 faddp ST(1), ST(0)
1551
1552 mov EAX, dword ptr [ ESI + 2 * 4]
1553 mov ECX, dword ptr [ ESI + 3 * 4]
1554
1555 fxch ST(1)
1556 fstp dword ptr [ EDI + 0 * 4]
1557 fstp dword ptr [ EDI + 1 * 4]
1558 mov dword ptr [ EDI + 2 * 4], EAX
1559 mov dword ptr [ EDI + 3 * 4], ECX
1560
1561p4m2dnrm_skip:
1562 inc EBP
1563 add EDI, 16
1564 add ESI, dword ptr [ ESP + 16+12]
1565 cmp EDI, dword ptr [ ESP + 16+4]
1566 jne p4m2dnrm_top
1567
1568
1569p4m2dnrm_finish:
1570 pop EBP
1571 pop EBX
1572 pop EDI
1573 pop ESI
1574 ret
1575
1576
1577 PUBLIC _gl_x86_transform_points4_3d_masked
1578 ALIGN 4
1579_gl_x86_transform_points4_3d_masked:
1580
1581 push ESI
1582 push EDI
1583
1584 push EBX
1585 push EBP
1586
1587 mov ESI, dword ptr [ ESP + 16+12]
1588 mov EDI, dword ptr [ ESP + 16+4]
1589
1590 mov EDX, dword ptr [ ESP + 16+8]
1591 mov EBP, dword ptr [ ESP + 16+16]
1592
1593 mov ECX, dword ptr [ ESI + 8]
1594 mov BL, byte ptr [ ESP + 16+20]
1595
1596 test ECX, ECX
1597 jz p4m3dm_finish
1598
1599 mov EAX, dword ptr [ ESI + 12]
1600 or dword ptr [ EDI + 20], 15
1601
1602 mov dword ptr [ EDI + 8], ECX
1603 mov dword ptr [ EDI + 16], 4
1604
1605 shl ECX, 4
1606 mov ESI, dword ptr [ ESI + 4]
1607
1608 mov EDI, dword ptr [ EDI + 4]
1609 add ECX, EDI
1610
1611 mov dword ptr [ ESP + 16+12], EAX
1612
1613
1614 ALIGN 4
1615p4m3dm_top:
1616
1617 test byte ptr [EBP], BL
1618 jnz p4m3dm_skip
1619
1620
1621 fld dword ptr [ ESI + 0 * 4]
1622 fmul dword ptr [ EDX + 0 * 4]
1623 fld dword ptr [ ESI + 0 * 4]
1624 fmul dword ptr [ EDX + 1 * 4]
1625 fld dword ptr [ ESI + 0 * 4]
1626 fmul dword ptr [ EDX + 2 * 4]
1627
1628 fld dword ptr [ ESI + 1 * 4]
1629 fmul dword ptr [ EDX + 4 * 4]
1630 fld dword ptr [ ESI + 1 * 4]
1631 fmul dword ptr [ EDX + 5 * 4]
1632 fld dword ptr [ ESI + 1 * 4]
1633 fmul dword ptr [ EDX + 6 * 4]
1634
1635 fxch ST(2)
1636 faddp ST(5), ST(0)
1637 faddp ST(3), ST(0)
1638 faddp ST(1), ST(0)
1639
1640 fld dword ptr [ ESI + 2 * 4]
1641 fmul dword ptr [ EDX + 8 * 4]
1642 fld dword ptr [ ESI + 2 * 4]
1643 fmul dword ptr [ EDX + 9 * 4]
1644 fld dword ptr [ ESI + 2 * 4]
1645 fmul dword ptr [ EDX + 10 * 4]
1646
1647 fxch ST(2)
1648 faddp ST(5), ST(0)
1649 faddp ST(3), ST(0)
1650 faddp ST(1), ST(0)
1651
1652 fld dword ptr [ ESI + 3 * 4]
1653 fmul dword ptr [ EDX + 12 * 4]
1654 fld dword ptr [ ESI + 3 * 4]
1655 fmul dword ptr [ EDX + 13 * 4]
1656 fld dword ptr [ ESI + 3 * 4]
1657 fmul dword ptr [ EDX + 14 * 4]
1658
1659 fxch ST(2)
1660 faddp ST(5), ST(0)
1661 faddp ST(3), ST(0)
1662 faddp ST(1), ST(0)
1663
1664 mov EAX, dword ptr [ ESI + 3 * 4]
1665
1666 fxch ST(2)
1667 fstp dword ptr [ EDI + 0 * 4]
1668 fstp dword ptr [ EDI + 1 * 4]
1669 fstp dword ptr [ EDI + 2 * 4]
1670 mov dword ptr [ EDI + 3 * 4], EAX
1671
1672p4m3dm_skip:
1673 inc EBP
1674 add EDI, 16
1675 add ESI, dword ptr [ ESP + 16+12]
1676 cmp EDI, ECX
1677 jne p4m3dm_top
1678
1679
1680p4m3dm_finish:
1681 pop EBP
1682 pop EBX
1683 pop EDI
1684 pop ESI
1685 ret
1686
1687
1688 PUBLIC _gl_x86_transform_points4_3d_no_rot_masked
1689 ALIGN 4
1690_gl_x86_transform_points4_3d_no_rot_masked:
1691
1692 push ESI
1693 push EDI
1694
1695 push EBX
1696 push EBP
1697
1698 mov ESI, dword ptr [ ESP + 16+12]
1699 mov EDI, dword ptr [ ESP + 16+4]
1700
1701 mov EDX, dword ptr [ ESP + 16+8]
1702 mov EBP, dword ptr [ ESP + 16+16]
1703
1704 mov ECX, dword ptr [ ESI + 8]
1705 mov BL, byte ptr [ ESP + 16+20]
1706
1707 test ECX, ECX
1708 jz p4m3dnrm_finish
1709
1710 mov EAX, dword ptr [ ESI + 12]
1711 or dword ptr [ EDI + 20], 15
1712
1713 mov dword ptr [ EDI + 8], ECX
1714 mov dword ptr [ EDI + 16], 4
1715
1716 shl ECX, 4
1717 mov ESI, dword ptr [ ESI + 4]
1718
1719 mov EDI, dword ptr [ EDI + 4]
1720 add ECX, EDI
1721
1722 mov dword ptr [ ESP + 16+12], EAX
1723
1724
1725 ALIGN 4
1726p4m3dnrm_top:
1727
1728 test byte ptr [EBP], BL
1729 jnz p4m3dnrm_skip
1730
1731
1732 fld dword ptr [ ESI + 0 * 4]
1733 fmul dword ptr [ EDX + 0 * 4]
1734
1735 fld dword ptr [ ESI + 1 * 4]
1736 fmul dword ptr [ EDX + 5 * 4]
1737
1738 fld dword ptr [ ESI + 2 * 4]
1739 fmul dword ptr [ EDX + 10 * 4]
1740
1741 fld dword ptr [ ESI + 3 * 4]
1742 fmul dword ptr [ EDX + 12 * 4]
1743 fld dword ptr [ ESI + 3 * 4]
1744 fmul dword ptr [ EDX + 13 * 4]
1745 fld dword ptr [ ESI + 3 * 4]
1746 fmul dword ptr [ EDX + 14 * 4]
1747
1748 fxch ST(2)
1749 faddp ST(5), ST(0)
1750 faddp ST(3), ST(0)
1751 faddp ST(1), ST(0)
1752
1753 mov EAX, dword ptr [ ESI + 3 * 4]
1754
1755 fxch ST(2)
1756 fstp dword ptr [ EDI + 0 * 4]
1757 fstp dword ptr [ EDI + 1 * 4]
1758 fstp dword ptr [ EDI + 2 * 4]
1759 mov dword ptr [ EDI + 3 * 4], EAX
1760
1761p4m3dnrm_skip:
1762 inc EBP
1763 add EDI, 16
1764 add ESI, dword ptr [ ESP + 16+12]
1765 cmp EDI, ECX
1766 jne p4m3dnrm_top
1767
1768
1769p4m3dnrm_finish:
1770 pop EBP
1771 pop EBX
1772 pop EDI
1773 pop ESI
1774 ret
1775
1776
1777 PUBLIC _gl_x86_transform_points4_perspective_masked
1778 ALIGN 4
1779_gl_x86_transform_points4_perspective_masked:
1780
1781 push ESI
1782 push EDI
1783
1784 push EBX
1785 push EBP
1786
1787 mov ESI, dword ptr [ ESP + 16+12]
1788 mov EDI, dword ptr [ ESP + 16+4]
1789
1790 mov EDX, dword ptr [ ESP + 16+8]
1791 mov EBP, dword ptr [ ESP + 16+16]
1792
1793 mov ECX, dword ptr [ ESI + 8]
1794 mov BL, byte ptr [ ESP + 16+20]
1795
1796 test ECX, ECX
1797 jz p4mpm_finish
1798
1799 mov EAX, dword ptr [ ESI + 12]
1800 or dword ptr [ EDI + 20], 15
1801
1802 mov dword ptr [ EDI + 8], ECX
1803 mov dword ptr [ EDI + 16], 4
1804
1805 shl ECX, 4
1806 mov ESI, dword ptr [ ESI + 4]
1807
1808 mov EDI, dword ptr [ EDI + 4]
1809 add ECX, EDI
1810
1811 mov dword ptr [ ESP + 16+12], EAX
1812
1813
1814 ALIGN 4
1815p4mpm_top:
1816
1817 test byte ptr [EBP], BL
1818 jnz p4mpm_skip
1819
1820
1821 fld dword ptr [ ESI + 0 * 4]
1822 fmul dword ptr [ EDX + 0 * 4]
1823
1824 fld dword ptr [ ESI + 1 * 4]
1825 fmul dword ptr [ EDX + 5 * 4]
1826
1827 fld dword ptr [ ESI + 2 * 4]
1828 fmul dword ptr [ EDX + 8 * 4]
1829 fld dword ptr [ ESI + 2 * 4]
1830 fmul dword ptr [ EDX + 9 * 4]
1831 fld dword ptr [ ESI + 2 * 4]
1832 fmul dword ptr [ EDX + 10 * 4]
1833
1834 fxch ST(2)
1835 faddp ST(4), ST(0)
1836 faddp ST(2), ST(0)
1837
1838 fld dword ptr [ ESI + 3 * 4]
1839 fmul dword ptr [ EDX + 14 * 4]
1840
1841 faddp ST(1), ST(0)
1842
1843 mov EAX, dword ptr [ ESI + 2 * 4]
1844 xor EAX, -2147483648
1845
1846 fxch ST(2)
1847 fstp dword ptr [ EDI + 0 * 4]
1848 fstp dword ptr [ EDI + 1 * 4]
1849 fstp dword ptr [ EDI + 2 * 4]
1850 mov dword ptr [ EDI + 3 * 4], EAX
1851
1852p4mpm_skip:
1853 inc EBP
1854 add EDI, 16
1855 add ESI, dword ptr [ ESP + 16+12]
1856 cmp EDI, ECX
1857 jne p4mpm_top
1858
1859
1860p4mpm_finish:
1861 pop EBP
1862 pop EBX
1863 pop EDI
1864 pop ESI
1865 ret
1866
1867
1868
1869
1870
1871
1872 PUBLIC _gl_x86_transform_points2_general_raw
1873 ALIGN 4
1874_gl_x86_transform_points2_general_raw:
1875
1876 push ESI
1877 push EDI
1878
1879 mov ESI, dword ptr [ ESP + 12+8]
1880 mov EDI, dword ptr [ ESP + 4+8]
1881
1882
1883 mov EDX, dword ptr [ ESP + 8+8]
1884 mov ECX, dword ptr [ ESI + 8]
1885
1886 test ECX, ECX
1887 jz p2mgr_finish
1888
1889 mov EAX, dword ptr [ ESI + 12]
1890 or dword ptr [ EDI + 20], 15
1891
1892 mov dword ptr [ EDI + 8], ECX
1893 mov dword ptr [ EDI + 16], 4
1894
1895 shl ECX, 4
1896 mov ESI, dword ptr [ ESI + 4]
1897
1898 mov EDI, dword ptr [ EDI + 4]
1899 add ECX, EDI
1900
1901
1902 ALIGN 4
1903p2mgr_top:
1904
1905
1906 fld dword ptr [ ESI + 0 * 4]
1907 fmul dword ptr [ EDX + 0 * 4]
1908 fld dword ptr [ ESI + 0 * 4]
1909 fmul dword ptr [ EDX + 1 * 4]
1910 fld dword ptr [ ESI + 0 * 4]
1911 fmul dword ptr [ EDX + 2 * 4]
1912 fld dword ptr [ ESI + 0 * 4]
1913 fmul dword ptr [ EDX + 3 * 4]
1914
1915 fld dword ptr [ ESI + 1 * 4]
1916 fmul dword ptr [ EDX + 4 * 4]
1917 fld dword ptr [ ESI + 1 * 4]
1918 fmul dword ptr [ EDX + 5 * 4]
1919 fld dword ptr [ ESI + 1 * 4]
1920 fmul dword ptr [ EDX + 6 * 4]
1921 fld dword ptr [ ESI + 1 * 4]
1922 fmul dword ptr [ EDX + 7 * 4]
1923
1924 fxch ST(3)
1925 faddp ST(7), ST(0)
1926 fxch ST(1)
1927 faddp ST(5), ST(0)
1928 faddp ST(3), ST(0)
1929 faddp ST(1), ST(0)
1930
1931 fxch ST(3)
1932 fadd dword ptr [ EDX + 12 * 4]
1933 fxch ST(2)
1934 fadd dword ptr [ EDX + 13 * 4]
1935 fxch ST(1)
1936 fadd dword ptr [ EDX + 14 * 4]
1937 fxch ST(3)
1938 fadd dword ptr [ EDX + 15 * 4]
1939
1940 fxch ST(2)
1941 fstp dword ptr [ EDI + 0 * 4]
1942 fstp dword ptr [ EDI + 1 * 4]
1943 fxch ST(1)
1944 fstp dword ptr [ EDI + 2 * 4]
1945 fstp dword ptr [ EDI + 3 * 4]
1946
1947p2mgr_skip:
1948 add EDI, 16
1949 add ESI, EAX
1950 cmp EDI, ECX
1951 jne p2mgr_top
1952
1953
1954p2mgr_finish:
1955 pop EDI
1956 pop ESI
1957 ret
1958
1959
1960 PUBLIC _gl_x86_transform_points2_identity_raw
1961 ALIGN 4
1962_gl_x86_transform_points2_identity_raw:
1963
1964 push ESI
1965 push EDI
1966
1967 mov ESI, dword ptr [ ESP + 12+8]
1968 mov EDI, dword ptr [ ESP + 4+8]
1969
1970 push EBX
1971
1972 mov EDX, dword ptr [ ESP + 12+8]
1973 mov ECX, dword ptr [ ESI + 8]
1974
1975 test ECX, ECX
1976 jz p2mir_finish
1977
1978 mov EAX, dword ptr [ ESI + 12]
1979 or dword ptr [ EDI + 20], 3
1980
1981 mov dword ptr [ EDI + 8], ECX
1982 mov dword ptr [ EDI + 16], 2
1983
1984 shl ECX, 4
1985 mov ESI, dword ptr [ ESI + 4]
1986
1987 mov EDI, dword ptr [ EDI + 4]
1988 add ECX, EDI
1989
1990
1991 cmp EDI, ESI
1992 je p2mir_finish
1993
1994 ALIGN 4
1995p2mir_top:
1996
1997 mov EBX, dword ptr [ ESI + 0 * 4]
1998 mov EDX, dword ptr [ ESI + 1 * 4]
1999
2000 mov dword ptr [ EDI + 0 * 4], EBX
2001 mov dword ptr [ EDI + 1 * 4], EDX
2002p2mir_skip:
2003 add EDI, 16
2004 add ESI, EAX
2005 cmp EDI, ECX
2006 jne p2mir_top
2007
2008
2009p2mir_finish:
2010 pop EBX
2011 pop EDI
2012 pop ESI
2013 ret
2014
2015
2016 PUBLIC _gl_x86_transform_points2_2d_raw
2017 ALIGN 4
2018_gl_x86_transform_points2_2d_raw:
2019
2020 push ESI
2021 push EDI
2022
2023 mov ESI, dword ptr [ ESP + 12+8]
2024 mov EDI, dword ptr [ ESP + 4+8]
2025
2026
2027 mov EDX, dword ptr [ ESP + 8+8]
2028 mov ECX, dword ptr [ ESI + 8]
2029
2030 test ECX, ECX
2031 jz p2m2dr_finish
2032
2033 mov EAX, dword ptr [ ESI + 12]
2034 or dword ptr [ EDI + 20], 3
2035
2036 mov dword ptr [ EDI + 8], ECX
2037 mov dword ptr [ EDI + 16], 2
2038
2039 shl ECX, 4
2040 mov ESI, dword ptr [ ESI + 4]
2041
2042 mov EDI, dword ptr [ EDI + 4]
2043 add ECX, EDI
2044
2045
2046 ALIGN 4
2047p2m2dr_top:
2048
2049
2050 fld dword ptr [ ESI + 0 * 4]
2051 fmul dword ptr [ EDX + 0 * 4]
2052 fld dword ptr [ ESI + 0 * 4]
2053 fmul dword ptr [ EDX + 1 * 4]
2054
2055 fld dword ptr [ ESI + 1 * 4]
2056 fmul dword ptr [ EDX + 4 * 4]
2057 fld dword ptr [ ESI + 1 * 4]
2058 fmul dword ptr [ EDX + 5 * 4]
2059
2060 fxch ST(1)
2061 faddp ST(3), ST(0)
2062 faddp ST(1), ST(0)
2063
2064 fxch ST(1)
2065 fadd dword ptr [ EDX + 12 * 4]
2066 fxch ST(1)
2067 fadd dword ptr [ EDX + 13 * 4]
2068
2069 fxch ST(1)
2070 fstp dword ptr [ EDI + 0 * 4]
2071 fstp dword ptr [ EDI + 1 * 4]
2072
2073p2m2dr_skip:
2074 add EDI, 16
2075 add ESI, EAX
2076 cmp EDI, ECX
2077 jne p2m2dr_top
2078
2079
2080p2m2dr_finish:
2081 pop EDI
2082 pop ESI
2083 ret
2084
2085
2086 PUBLIC _gl_x86_transform_points2_2d_no_rot_raw
2087 ALIGN 4
2088_gl_x86_transform_points2_2d_no_rot_raw:
2089
2090 push ESI
2091 push EDI
2092
2093 mov ESI, dword ptr [ ESP + 12+8]
2094 mov EDI, dword ptr [ ESP + 4+8]
2095
2096
2097 mov EDX, dword ptr [ ESP + 8+8]
2098 mov ECX, dword ptr [ ESI + 8]
2099
2100 test ECX, ECX
2101 jz p2m2dnrr_finish
2102
2103 mov EAX, dword ptr [ ESI + 12]
2104 or dword ptr [ EDI + 20], 3
2105
2106 mov dword ptr [ EDI + 8], ECX
2107 mov dword ptr [ EDI + 16], 2
2108
2109 shl ECX, 4
2110 mov ESI, dword ptr [ ESI + 4]
2111
2112 mov EDI, dword ptr [ EDI + 4]
2113 add ECX, EDI
2114
2115
2116 ALIGN 4
2117p2m2dnrr_top:
2118
2119
2120 fld dword ptr [ ESI + 0 * 4]
2121 fmul dword ptr [ EDX + 0 * 4]
2122
2123 fld dword ptr [ ESI + 1 * 4]
2124 fmul dword ptr [ EDX + 5 * 4]
2125
2126 fxch ST(1)
2127 fadd dword ptr [ EDX + 12 * 4]
2128 fld dword ptr [ EDX + 13 * 4]
2129 fxch ST(2)
2130 faddp ST(2), ST(0)
2131
2132 fstp dword ptr [ EDI + 0 * 4]
2133 fstp dword ptr [ EDI + 1 * 4]
2134
2135p2m2dnrr_skip:
2136 add EDI, 16
2137 add ESI, EAX
2138 cmp EDI, ECX
2139 jne p2m2dnrr_top
2140
2141
2142p2m2dnrr_finish:
2143 pop EDI
2144 pop ESI
2145 ret
2146
2147
2148 PUBLIC _gl_x86_transform_points2_3d_raw
2149 ALIGN 4
2150_gl_x86_transform_points2_3d_raw:
2151
2152 push ESI
2153 push EDI
2154
2155 mov ESI, dword ptr [ ESP + 12+8]
2156 mov EDI, dword ptr [ ESP + 4+8]
2157
2158
2159 mov EDX, dword ptr [ ESP + 8+8]
2160 mov ECX, dword ptr [ ESI + 8]
2161
2162 test ECX, ECX
2163 jz p2m3dr_finish
2164
2165 mov EAX, dword ptr [ ESI + 12]
2166 or dword ptr [ EDI + 20], 7
2167
2168 mov dword ptr [ EDI + 8], ECX
2169 mov dword ptr [ EDI + 16], 3
2170
2171 shl ECX, 4
2172 mov ESI, dword ptr [ ESI + 4]
2173
2174 mov EDI, dword ptr [ EDI + 4]
2175 add ECX, EDI
2176
2177
2178 ALIGN 4
2179p2m3dr_top:
2180
2181
2182 fld dword ptr [ ESI + 0 * 4]
2183 fmul dword ptr [ EDX + 0 * 4]
2184 fld dword ptr [ ESI + 0 * 4]
2185 fmul dword ptr [ EDX + 1 * 4]
2186 fld dword ptr [ ESI + 0 * 4]
2187 fmul dword ptr [ EDX + 2 * 4]
2188
2189 fld dword ptr [ ESI + 1 * 4]
2190 fmul dword ptr [ EDX + 4 * 4]
2191 fld dword ptr [ ESI + 1 * 4]
2192 fmul dword ptr [ EDX + 5 * 4]
2193 fld dword ptr [ ESI + 1 * 4]
2194 fmul dword ptr [ EDX + 6 * 4]
2195
2196 fxch ST(2)
2197 faddp ST(5), ST(0)
2198 faddp ST(3), ST(0)
2199 faddp ST(1), ST(0)
2200
2201 fxch ST(2)
2202 fadd dword ptr [ EDX + 12 * 4]
2203 fxch ST(1)
2204 fadd dword ptr [ EDX + 13 * 4]
2205 fxch ST(2)
2206 fadd dword ptr [ EDX + 14 * 4]
2207
2208 fxch ST(1)
2209 fstp dword ptr [ EDI + 0 * 4]
2210 fxch ST(1)
2211 fstp dword ptr [ EDI + 1 * 4]
2212 fstp dword ptr [ EDI + 2 * 4]
2213
2214p2m3dr_skip:
2215 add EDI, 16
2216 add ESI, EAX
2217 cmp EDI, ECX
2218 jne p2m3dr_top
2219
2220
2221p2m3dr_finish:
2222 pop EDI
2223 pop ESI
2224 ret
2225
2226
2227 PUBLIC _gl_x86_transform_points2_3d_no_rot_raw
2228 ALIGN 4
2229_gl_x86_transform_points2_3d_no_rot_raw:
2230
2231 push ESI
2232 push EDI
2233
2234 mov ESI, dword ptr [ ESP + 12+8]
2235 mov EDI, dword ptr [ ESP + 4+8]
2236
2237 push EBX
2238
2239 mov EDX, dword ptr [ ESP + 12+8]
2240 mov ECX, dword ptr [ ESI + 8]
2241
2242 test ECX, ECX
2243 jz p2m3dnrr_finish
2244
2245 mov EAX, dword ptr [ ESI + 12]
2246 or dword ptr [ EDI + 20], 7
2247
2248 mov dword ptr [ EDI + 8], ECX
2249 mov dword ptr [ EDI + 16], 3
2250
2251 shl ECX, 4
2252 mov ESI, dword ptr [ ESI + 4]
2253
2254 mov EDI, dword ptr [ EDI + 4]
2255 add ECX, EDI
2256
2257
2258 mov EBX, dword ptr [ EDX + 14 * 4]
2259 ALIGN 4
2260p2m3dnrr_top:
2261
2262
2263 fld dword ptr [ ESI + 0 * 4]
2264 fmul dword ptr [ EDX + 0 * 4]
2265
2266 fld dword ptr [ ESI + 1 * 4]
2267 fmul dword ptr [ EDX + 5 * 4]
2268
2269 fxch ST(1)
2270 fadd dword ptr [ EDX + 12 * 4]
2271 fld dword ptr [ EDX + 13 * 4]
2272 fxch ST(2)
2273 faddp ST(2), ST(0)
2274
2275 fstp dword ptr [ EDI + 0 * 4]
2276 fstp dword ptr [ EDI + 1 * 4]
2277 mov dword ptr [ EDI + 2 * 4], EBX
2278
2279p2m3dnrr_skip:
2280 add EDI, 16
2281 add ESI, EAX
2282 cmp EDI, ECX
2283 jne p2m3dnrr_top
2284
2285
2286p2m3dnrr_finish:
2287 pop EBX
2288 pop EDI
2289 pop ESI
2290 ret
2291
2292
2293 PUBLIC _gl_x86_transform_points2_perspective_raw
2294 ALIGN 4
2295_gl_x86_transform_points2_perspective_raw:
2296
2297 push ESI
2298 push EDI
2299
2300 mov ESI, dword ptr [ ESP + 12+8]
2301 mov EDI, dword ptr [ ESP + 4+8]
2302
2303 push EBX
2304
2305 mov EDX, dword ptr [ ESP + 12+8]
2306 mov ECX, dword ptr [ ESI + 8]
2307
2308 test ECX, ECX
2309 jz p2mpr_finish
2310
2311 mov EAX, dword ptr [ ESI + 12]
2312 or dword ptr [ EDI + 20], 15
2313
2314 mov dword ptr [ EDI + 8], ECX
2315 mov dword ptr [ EDI + 16], 4
2316
2317 shl ECX, 4
2318 mov ESI, dword ptr [ ESI + 4]
2319
2320 mov EDI, dword ptr [ EDI + 4]
2321 add ECX, EDI
2322
2323
2324 mov EBX, dword ptr [ EDX + 14 * 4]
2325 ALIGN 4
2326p2mpr_top:
2327
2328
2329 fld dword ptr [ ESI + 0 * 4]
2330 fmul dword ptr [ EDX + 0 * 4]
2331
2332 fld dword ptr [ ESI + 1 * 4]
2333 fmul dword ptr [ EDX + 5 * 4]
2334
2335 fxch ST(1)
2336 fstp dword ptr [ EDI + 0 * 4]
2337 fstp dword ptr [ EDI + 1 * 4]
2338 mov dword ptr [ EDI + 2 * 4], EBX
2339 mov dword ptr [ EDI + 3 * 4], 0
2340
2341p2mpr_skip:
2342 add EDI, 16
2343 add ESI, EAX
2344 cmp EDI, ECX
2345 jne p2mpr_top
2346
2347
2348p2mpr_finish:
2349 pop EBX
2350 pop EDI
2351 pop ESI
2352 ret
2353
2354
2355 PUBLIC _gl_x86_transform_points3_general_raw
2356 ALIGN 4
2357_gl_x86_transform_points3_general_raw:
2358
2359 push ESI
2360 push EDI
2361
2362 mov ESI, dword ptr [ ESP + 12+8]
2363 mov EDI, dword ptr [ ESP + 4+8]
2364
2365
2366 mov EDX, dword ptr [ ESP + 8+8]
2367 mov ECX, dword ptr [ ESI + 8]
2368
2369 test ECX, ECX
2370 jz p3mgr_finish
2371
2372 mov EAX, dword ptr [ ESI + 12]
2373 or dword ptr [ EDI + 20], 15
2374
2375 mov dword ptr [ EDI + 8], ECX
2376 mov dword ptr [ EDI + 16], 4
2377
2378 shl ECX, 4
2379 mov ESI, dword ptr [ ESI + 4]
2380
2381 mov EDI, dword ptr [ EDI + 4]
2382 add ECX, EDI
2383
2384
2385 ALIGN 4
2386p3mgr_top:
2387
2388
2389 fld dword ptr [ ESI + 0 * 4]
2390 fmul dword ptr [ EDX + 0 * 4]
2391 fld dword ptr [ ESI + 0 * 4]
2392 fmul dword ptr [ EDX + 1 * 4]
2393 fld dword ptr [ ESI + 0 * 4]
2394 fmul dword ptr [ EDX + 2 * 4]
2395 fld dword ptr [ ESI + 0 * 4]
2396 fmul dword ptr [ EDX + 3 * 4]
2397
2398 fld dword ptr [ ESI + 1 * 4]
2399 fmul dword ptr [ EDX + 4 * 4]
2400 fld dword ptr [ ESI + 1 * 4]
2401 fmul dword ptr [ EDX + 5 * 4]
2402 fld dword ptr [ ESI + 1 * 4]
2403 fmul dword ptr [ EDX + 6 * 4]
2404 fld dword ptr [ ESI + 1 * 4]
2405 fmul dword ptr [ EDX + 7 * 4]
2406
2407 fxch ST(3)
2408 faddp ST(7), ST(0)
2409 fxch ST(1)
2410 faddp ST(5), ST(0)
2411 faddp ST(3), ST(0)
2412 faddp ST(1), ST(0)
2413
2414 fld dword ptr [ ESI + 2 * 4]
2415 fmul dword ptr [ EDX + 8 * 4]
2416 fld dword ptr [ ESI + 2 * 4]
2417 fmul dword ptr [ EDX + 9 * 4]
2418 fld dword ptr [ ESI + 2 * 4]
2419 fmul dword ptr [ EDX + 10 * 4]
2420 fld dword ptr [ ESI + 2 * 4]
2421 fmul dword ptr [ EDX + 11 * 4]
2422
2423 fxch ST(3)
2424 faddp ST(7), ST(0)
2425 fxch ST(1)
2426 faddp ST(5), ST(0)
2427 faddp ST(3), ST(0)
2428 faddp ST(1), ST(0)
2429
2430 fxch ST(3)
2431 fadd dword ptr [ EDX + 12 * 4]
2432 fxch ST(2)
2433 fadd dword ptr [ EDX + 13 * 4]
2434 fxch ST(1)
2435 fadd dword ptr [ EDX + 14 * 4]
2436 fxch ST(3)
2437 fadd dword ptr [ EDX + 15 * 4]
2438
2439 fxch ST(2)
2440 fstp dword ptr [ EDI + 0 * 4]
2441 fstp dword ptr [ EDI + 1 * 4]
2442 fxch ST(1)
2443 fstp dword ptr [ EDI + 2 * 4]
2444 fstp dword ptr [ EDI + 3 * 4]
2445
2446p3mgr_skip:
2447 add EDI, 16
2448 add ESI, EAX
2449 cmp EDI, ECX
2450 jne p3mgr_top
2451
2452
2453p3mgr_finish:
2454 pop EDI
2455 pop ESI
2456 ret
2457
2458
2459 PUBLIC _gl_x86_transform_points3_identity_raw
2460 ALIGN 4
2461_gl_x86_transform_points3_identity_raw:
2462
2463 push ESI
2464 push EDI
2465
2466 mov ESI, dword ptr [ ESP + 12+8]
2467 mov EDI, dword ptr [ ESP + 4+8]
2468
2469 push EBX
2470 push EBP
2471
2472 mov EDX, dword ptr [ ESP + 16+8]
2473 mov ECX, dword ptr [ ESI + 8]
2474
2475 test ECX, ECX
2476 jz p3mir_finish
2477
2478 mov EAX, dword ptr [ ESI + 12]
2479 or dword ptr [ EDI + 20], 7
2480
2481 mov dword ptr [ EDI + 8], ECX
2482 mov dword ptr [ EDI + 16], 3
2483
2484 shl ECX, 4
2485 mov ESI, dword ptr [ ESI + 4]
2486
2487 mov EDI, dword ptr [ EDI + 4]
2488 add ECX, EDI
2489
2490
2491 cmp EDI, ESI
2492 je p3mir_finish
2493
2494 ALIGN 4
2495p3mir_top:
2496
2497 mov EBX, dword ptr [ ESI + 0 * 4]
2498 mov EBP, dword ptr [ ESI + 1 * 4]
2499 mov EDX, dword ptr [ ESI + 2 * 4]
2500
2501 mov dword ptr [ EDI + 0 * 4], EBX
2502 mov dword ptr [ EDI + 1 * 4], EBP
2503 mov dword ptr [ EDI + 2 * 4], EDX
2504p3mir_skip:
2505 add EDI, 16
2506 add ESI, EAX
2507 cmp EDI, ECX
2508 jne p3mir_top
2509
2510
2511p3mir_finish:
2512 pop EBP
2513 pop EBX
2514 pop EDI
2515 pop ESI
2516 ret
2517
2518
2519 PUBLIC _gl_x86_transform_points3_2d_raw
2520 ALIGN 4
2521_gl_x86_transform_points3_2d_raw:
2522
2523 push ESI
2524 push EDI
2525
2526 mov ESI, dword ptr [ ESP + 12+8]
2527 mov EDI, dword ptr [ ESP + 4+8]
2528
2529 push EBX
2530
2531 mov EDX, dword ptr [ ESP + 12+8]
2532 mov ECX, dword ptr [ ESI + 8]
2533
2534 test ECX, ECX
2535 jz p3m2dr_finish
2536
2537 mov EAX, dword ptr [ ESI + 12]
2538 or dword ptr [ EDI + 20], 7
2539
2540 mov dword ptr [ EDI + 8], ECX
2541 mov dword ptr [ EDI + 16], 3
2542
2543 shl ECX, 4
2544 mov ESI, dword ptr [ ESI + 4]
2545
2546 mov EDI, dword ptr [ EDI + 4]
2547 add ECX, EDI
2548
2549
2550 ALIGN 4
2551p3m2dr_top:
2552
2553
2554 fld dword ptr [ ESI + 0 * 4]
2555 fmul dword ptr [ EDX + 0 * 4]
2556 fld dword ptr [ ESI + 0 * 4]
2557 fmul dword ptr [ EDX + 1 * 4]
2558
2559 fld dword ptr [ ESI + 1 * 4]
2560 fmul dword ptr [ EDX + 4 * 4]
2561 fld dword ptr [ ESI + 1 * 4]
2562 fmul dword ptr [ EDX + 5 * 4]
2563
2564 fxch ST(1)
2565 faddp ST(3), ST(0)
2566 faddp ST(1), ST(0)
2567
2568 fxch ST(1)
2569 fadd dword ptr [ EDX + 12 * 4]
2570 fxch ST(1)
2571 fadd dword ptr [ EDX + 13 * 4]
2572
2573 mov EBX, dword ptr [ ESI + 2 * 4]
2574
2575 fxch ST(1)
2576 fstp dword ptr [ EDI + 0 * 4]
2577 fstp dword ptr [ EDI + 1 * 4]
2578 mov dword ptr [ EDI + 2 * 4], EBX
2579
2580p3m2dr_skip:
2581 add EDI, 16
2582 add ESI, EAX
2583 cmp EDI, ECX
2584 jne p3m2dr_top
2585
2586
2587p3m2dr_finish:
2588 pop EBX
2589 pop EDI
2590 pop ESI
2591 ret
2592
2593
2594 PUBLIC _gl_x86_transform_points3_2d_no_rot_raw
2595 ALIGN 4
2596_gl_x86_transform_points3_2d_no_rot_raw:
2597
2598 push ESI
2599 push EDI
2600
2601 mov ESI, dword ptr [ ESP + 12+8]
2602 mov EDI, dword ptr [ ESP + 4+8]
2603
2604 push EBX
2605
2606 mov EDX, dword ptr [ ESP + 12+8]
2607 mov ECX, dword ptr [ ESI + 8]
2608
2609 test ECX, ECX
2610 jz p3m2dnrr_finish
2611
2612 mov EAX, dword ptr [ ESI + 12]
2613 or dword ptr [ EDI + 20], 7
2614
2615 mov dword ptr [ EDI + 8], ECX
2616 mov dword ptr [ EDI + 16], 3
2617
2618 shl ECX, 4
2619 mov ESI, dword ptr [ ESI + 4]
2620
2621 mov EDI, dword ptr [ EDI + 4]
2622 add ECX, EDI
2623
2624
2625 ALIGN 4
2626p3m2dnrr_top:
2627
2628
2629 fld dword ptr [ ESI + 0 * 4]
2630 fmul dword ptr [ EDX + 0 * 4]
2631
2632 fld dword ptr [ ESI + 1 * 4]
2633 fmul dword ptr [ EDX + 5 * 4]
2634
2635 fxch ST(1)
2636 fadd dword ptr [ EDX + 12 * 4]
2637 fld dword ptr [ EDX + 13 * 4]
2638
2639 fxch ST(2)
2640 faddp ST(2), ST(0)
2641
2642 mov EBX, dword ptr [ ESI + 2 * 4]
2643
2644 fstp dword ptr [ EDI + 0 * 4]
2645 fstp dword ptr [ EDI + 1 * 4]
2646 mov dword ptr [ EDI + 2 * 4], EBX
2647
2648p3m2dnrr_skip:
2649 add EDI, 16
2650 add ESI, EAX
2651 cmp EDI, ECX
2652 jne p3m2dnrr_top
2653
2654
2655p3m2dnrr_finish:
2656 pop EBX
2657 pop EDI
2658 pop ESI
2659 ret
2660
2661
2662 PUBLIC _gl_x86_transform_points3_3d_raw
2663 ALIGN 4
2664_gl_x86_transform_points3_3d_raw:
2665
2666 push ESI
2667 push EDI
2668
2669 mov ESI, dword ptr [ ESP + 12+8]
2670 mov EDI, dword ptr [ ESP + 4+8]
2671
2672
2673 mov EDX, dword ptr [ ESP + 8+8]
2674 mov ECX, dword ptr [ ESI + 8]
2675
2676 test ECX, ECX
2677 jz p3m3dr_finish
2678
2679 mov EAX, dword ptr [ ESI + 12]
2680 or dword ptr [ EDI + 20], 7
2681
2682 mov dword ptr [ EDI + 8], ECX
2683 mov dword ptr [ EDI + 16], 3
2684
2685 shl ECX, 4
2686 mov ESI, dword ptr [ ESI + 4]
2687
2688 mov EDI, dword ptr [ EDI + 4]
2689 add ECX, EDI
2690
2691
2692 ALIGN 4
2693p3m3dr_top:
2694
2695
2696 fld dword ptr [ ESI + 0 * 4]
2697 fmul dword ptr [ EDX + 0 * 4]
2698 fld dword ptr [ ESI + 0 * 4]
2699 fmul dword ptr [ EDX + 1 * 4]
2700 fld dword ptr [ ESI + 0 * 4]
2701 fmul dword ptr [ EDX + 2 * 4]
2702
2703 fld dword ptr [ ESI + 1 * 4]
2704 fmul dword ptr [ EDX + 4 * 4]
2705 fld dword ptr [ ESI + 1 * 4]
2706 fmul dword ptr [ EDX + 5 * 4]
2707 fld dword ptr [ ESI + 1 * 4]
2708 fmul dword ptr [ EDX + 6 * 4]
2709
2710 fxch ST(2)
2711 faddp ST(5), ST(0)
2712 faddp ST(3), ST(0)
2713 faddp ST(1), ST(0)
2714
2715 fld dword ptr [ ESI + 2 * 4]
2716 fmul dword ptr [ EDX + 8 * 4]
2717 fld dword ptr [ ESI + 2 * 4]
2718 fmul dword ptr [ EDX + 9 * 4]
2719 fld dword ptr [ ESI + 2 * 4]
2720 fmul dword ptr [ EDX + 10 * 4]
2721
2722 fxch ST(2)
2723 faddp ST(5), ST(0)
2724 faddp ST(3), ST(0)
2725 faddp ST(1), ST(0)
2726
2727 fxch ST(2)
2728 fadd dword ptr [ EDX + 12 * 4]
2729 fxch ST(1)
2730 fadd dword ptr [ EDX + 13 * 4]
2731 fxch ST(2)
2732 fadd dword ptr [ EDX + 14 * 4]
2733
2734 fxch ST(1)
2735 fstp dword ptr [ EDI + 0 * 4]
2736 fxch ST(1)
2737 fstp dword ptr [ EDI + 1 * 4]
2738 fstp dword ptr [ EDI + 2 * 4]
2739
2740p3m3dr_skip:
2741 add EDI, 16
2742 add ESI, EAX
2743 cmp EDI, ECX
2744 jne p3m3dr_top
2745
2746
2747p3m3dr_finish:
2748 pop EDI
2749 pop ESI
2750 ret
2751
2752
2753 PUBLIC _gl_x86_transform_points3_3d_no_rot_raw
2754 ALIGN 4
2755_gl_x86_transform_points3_3d_no_rot_raw:
2756
2757 push ESI
2758 push EDI
2759
2760 mov ESI, dword ptr [ ESP + 12+8]
2761 mov EDI, dword ptr [ ESP + 4+8]
2762
2763
2764 mov EDX, dword ptr [ ESP + 8+8]
2765 mov ECX, dword ptr [ ESI + 8]
2766
2767 test ECX, ECX
2768 jz p3m3dnrr_finish
2769
2770 mov EAX, dword ptr [ ESI + 12]
2771 or dword ptr [ EDI + 20], 7
2772
2773 mov dword ptr [ EDI + 8], ECX
2774 mov dword ptr [ EDI + 16], 3
2775
2776 shl ECX, 4
2777 mov ESI, dword ptr [ ESI + 4]
2778
2779 mov EDI, dword ptr [ EDI + 4]
2780 add ECX, EDI
2781
2782
2783 ALIGN 4
2784p3m3dnrr_top:
2785
2786
2787 fld dword ptr [ ESI + 0 * 4]
2788 fmul dword ptr [ EDX + 0 * 4]
2789
2790 fld dword ptr [ ESI + 1 * 4]
2791 fmul dword ptr [ EDX + 5 * 4]
2792
2793 fld dword ptr [ ESI + 2 * 4]
2794 fmul dword ptr [ EDX + 10 * 4]
2795
2796 fxch ST(2)
2797 fadd dword ptr [ EDX + 12 * 4]
2798 fld dword ptr [ EDX + 13 * 4]
2799 fxch ST(2)
2800 faddp ST(2), ST(0)
2801 fld dword ptr [ EDX + 14 * 4]
2802 fxch ST(3)
2803 faddp ST(3), ST(0)
2804
2805 fstp dword ptr [ EDI + 0 * 4]
2806 fstp dword ptr [ EDI + 1 * 4]
2807 fstp dword ptr [ EDI + 2 * 4]
2808
2809p3m3dnrr_skip:
2810 add EDI, 16
2811 add ESI, EAX
2812 cmp EDI, ECX
2813 jne p3m3dnrr_top
2814
2815
2816p3m3dnrr_finish:
2817 pop EDI
2818 pop ESI
2819 ret
2820
2821
2822 PUBLIC _gl_x86_transform_points3_perspective_raw
2823 ALIGN 4
2824_gl_x86_transform_points3_perspective_raw:
2825
2826 push ESI
2827 push EDI
2828
2829 mov ESI, dword ptr [ ESP + 12+8]
2830 mov EDI, dword ptr [ ESP + 4+8]
2831
2832 push EBX
2833
2834 mov EDX, dword ptr [ ESP + 12+8]
2835 mov ECX, dword ptr [ ESI + 8]
2836
2837 test ECX, ECX
2838 jz p3mpr_finish
2839
2840 mov EAX, dword ptr [ ESI + 12]
2841 or dword ptr [ EDI + 20], 15
2842
2843 mov dword ptr [ EDI + 8], ECX
2844 mov dword ptr [ EDI + 16], 4
2845
2846 shl ECX, 4
2847 mov ESI, dword ptr [ ESI + 4]
2848
2849 mov EDI, dword ptr [ EDI + 4]
2850 add ECX, EDI
2851
2852
2853 ALIGN 4
2854p3mpr_top:
2855
2856
2857 fld dword ptr [ ESI + 0 * 4]
2858 fmul dword ptr [ EDX + 0 * 4]
2859
2860 fld dword ptr [ ESI + 1 * 4]
2861 fmul dword ptr [ EDX + 5 * 4]
2862
2863 fld dword ptr [ ESI + 2 * 4]
2864 fmul dword ptr [ EDX + 8 * 4]
2865 fld dword ptr [ ESI + 2 * 4]
2866 fmul dword ptr [ EDX + 9 * 4]
2867 fld dword ptr [ ESI + 2 * 4]
2868 fmul dword ptr [ EDX + 10 * 4]
2869
2870 fxch ST(2)
2871 faddp ST(4), ST(0)
2872 faddp ST(2), ST(0)
2873 fld dword ptr [ EDX + 14 * 4]
2874 fxch ST(1)
2875 faddp ST(1), ST(0)
2876
2877 mov EBX, dword ptr [ ESI + 2 * 4]
2878 xor EBX, -2147483648
2879
2880 fxch ST(2)
2881 fstp dword ptr [ EDI + 0 * 4]
2882 fstp dword ptr [ EDI + 1 * 4]
2883 fstp dword ptr [ EDI + 2 * 4]
2884 mov dword ptr [ EDI + 3 * 4], EBX
2885
2886p3mpr_skip:
2887 add EDI, 16
2888 add ESI, EAX
2889 cmp EDI, ECX
2890 jne p3mpr_top
2891
2892
2893p3mpr_finish:
2894 pop EBX
2895 pop EDI
2896 pop ESI
2897 ret
2898
2899
2900 PUBLIC _gl_x86_transform_points4_general_raw
2901 ALIGN 4
2902_gl_x86_transform_points4_general_raw:
2903
2904 push ESI
2905 push EDI
2906
2907 mov ESI, dword ptr [ ESP + 12+8]
2908 mov EDI, dword ptr [ ESP + 4+8]
2909
2910
2911 mov EDX, dword ptr [ ESP + 8+8]
2912 mov ECX, dword ptr [ ESI + 8]
2913
2914 test ECX, ECX
2915 jz p4mgr_finish
2916
2917 mov EAX, dword ptr [ ESI + 12]
2918 or dword ptr [ EDI + 20], 15
2919
2920 mov dword ptr [ EDI + 8], ECX
2921 mov dword ptr [ EDI + 16], 4
2922
2923 shl ECX, 4
2924 mov ESI, dword ptr [ ESI + 4]
2925
2926 mov EDI, dword ptr [ EDI + 4]
2927 add ECX, EDI
2928
2929
2930 ALIGN 4
2931p4mgr_top:
2932
2933
2934 fld dword ptr [ ESI + 0 * 4]
2935 fmul dword ptr [ EDX + 0 * 4]
2936 fld dword ptr [ ESI + 0 * 4]
2937 fmul dword ptr [ EDX + 1 * 4]
2938 fld dword ptr [ ESI + 0 * 4]
2939 fmul dword ptr [ EDX + 2 * 4]
2940 fld dword ptr [ ESI + 0 * 4]
2941 fmul dword ptr [ EDX + 3 * 4]
2942
2943 fld dword ptr [ ESI + 1 * 4]
2944 fmul dword ptr [ EDX + 4 * 4]
2945 fld dword ptr [ ESI + 1 * 4]
2946 fmul dword ptr [ EDX + 5 * 4]
2947 fld dword ptr [ ESI + 1 * 4]
2948 fmul dword ptr [ EDX + 6 * 4]
2949 fld dword ptr [ ESI + 1 * 4]
2950 fmul dword ptr [ EDX + 7 * 4]
2951
2952 fxch ST(3)
2953 faddp ST(7), ST(0)
2954 fxch ST(1)
2955 faddp ST(5), ST(0)
2956 faddp ST(3), ST(0)
2957 faddp ST(1), ST(0)
2958
2959 fld dword ptr [ ESI + 2 * 4]
2960 fmul dword ptr [ EDX + 8 * 4]
2961 fld dword ptr [ ESI + 2 * 4]
2962 fmul dword ptr [ EDX + 9 * 4]
2963 fld dword ptr [ ESI + 2 * 4]
2964 fmul dword ptr [ EDX + 10 * 4]
2965 fld dword ptr [ ESI + 2 * 4]
2966 fmul dword ptr [ EDX + 11 * 4]
2967
2968 fxch ST(3)
2969 faddp ST(7), ST(0)
2970 fxch ST(1)
2971 faddp ST(5), ST(0)
2972 faddp ST(3), ST(0)
2973 faddp ST(1), ST(0)
2974
2975 fld dword ptr [ ESI + 3 * 4]
2976 fmul dword ptr [ EDX + 12 * 4]
2977 fld dword ptr [ ESI + 3 * 4]
2978 fmul dword ptr [ EDX + 13 * 4]
2979 fld dword ptr [ ESI + 3 * 4]
2980 fmul dword ptr [ EDX + 14 * 4]
2981 fld dword ptr [ ESI + 3 * 4]
2982 fmul dword ptr [ EDX + 15 * 4]
2983
2984 fxch ST(3)
2985 faddp ST(7), ST(0)
2986 fxch ST(1)
2987 faddp ST(5), ST(0)
2988 faddp ST(3), ST(0)
2989 faddp ST(1), ST(0)
2990
2991 fxch ST(3)
2992 fstp dword ptr [ EDI + 0 * 4]
2993 fxch ST(1)
2994 fstp dword ptr [ EDI + 1 * 4]
2995 fstp dword ptr [ EDI + 2 * 4]
2996 fstp dword ptr [ EDI + 3 * 4]
2997
2998p4mgr_skip:
2999 add EDI, 16
3000 add ESI, EAX
3001 cmp EDI, ECX
3002 jne p4mgr_top
3003
3004
3005p4mgr_finish:
3006 pop EDI
3007 pop ESI
3008 ret
3009
3010
3011 PUBLIC _gl_x86_transform_points4_identity_raw
3012 ALIGN 4
3013_gl_x86_transform_points4_identity_raw:
3014
3015 push ESI
3016 push EDI
3017
3018 mov ESI, dword ptr [ ESP + 12+8]
3019 mov EDI, dword ptr [ ESP + 4+8]
3020
3021 push EBX
3022
3023 mov EDX, dword ptr [ ESP + 12+8]
3024 mov ECX, dword ptr [ ESI + 8]
3025
3026 test ECX, ECX
3027 jz p4mir_finish
3028
3029 mov EAX, dword ptr [ ESI + 12]
3030 or dword ptr [ EDI + 20], 15
3031
3032 mov dword ptr [ EDI + 8], ECX
3033 mov dword ptr [ EDI + 16], 4
3034
3035 shl ECX, 4
3036 mov ESI, dword ptr [ ESI + 4]
3037
3038 mov EDI, dword ptr [ EDI + 4]
3039 add ECX, EDI
3040
3041
3042 cmp EDI, ESI
3043 je p4mir_finish
3044
3045 ALIGN 4
3046p4mir_top:
3047
3048 mov EBX, dword ptr [ ESI + 0 * 4]
3049 mov EDX, dword ptr [ ESI + 1 * 4]
3050
3051 mov dword ptr [ EDI + 0 * 4], EBX
3052 mov dword ptr [ EDI + 1 * 4], EDX
3053
3054 mov EBX, dword ptr [ ESI + 2 * 4]
3055 mov EDX, dword ptr [ ESI + 3 * 4]
3056
3057 mov dword ptr [ EDI + 2 * 4], EBX
3058 mov dword ptr [ EDI + 3 * 4], EDX
3059p4mir_skip:
3060 add EDI, 16
3061 add ESI, EAX
3062 cmp EDI, ECX
3063 jne p4mir_top
3064
3065
3066p4mir_finish:
3067 pop EBX
3068 pop EDI
3069 pop ESI
3070 ret
3071
3072
3073 PUBLIC _gl_x86_transform_points4_2d_raw
3074 ALIGN 4
3075_gl_x86_transform_points4_2d_raw:
3076
3077 push ESI
3078 push EDI
3079
3080 mov ESI, dword ptr [ ESP + 12+8]
3081 mov EDI, dword ptr [ ESP + 4+8]
3082
3083 push EBX
3084 push EBP
3085
3086 mov EDX, dword ptr [ ESP + 16+8]
3087 mov ECX, dword ptr [ ESI + 8]
3088
3089 test ECX, ECX
3090 jz p4m2dr_finish
3091
3092 mov EAX, dword ptr [ ESI + 12]
3093 or dword ptr [ EDI + 20], 15
3094
3095 mov dword ptr [ EDI + 8], ECX
3096 mov dword ptr [ EDI + 16], 4
3097
3098 shl ECX, 4
3099 mov ESI, dword ptr [ ESI + 4]
3100
3101 mov EDI, dword ptr [ EDI + 4]
3102 add ECX, EDI
3103
3104
3105 ALIGN 4
3106p4m2dr_top:
3107
3108
3109 fld dword ptr [ ESI + 0 * 4]
3110 fmul dword ptr [ EDX + 0 * 4]
3111 fld dword ptr [ ESI + 0 * 4]
3112 fmul dword ptr [ EDX + 1 * 4]
3113
3114 fld dword ptr [ ESI + 1 * 4]
3115 fmul dword ptr [ EDX + 4 * 4]
3116 fld dword ptr [ ESI + 1 * 4]
3117 fmul dword ptr [ EDX + 5 * 4]
3118
3119 fxch ST(1)
3120 faddp ST(3), ST(0)
3121 faddp ST(1), ST(0)
3122
3123 fld dword ptr [ ESI + 3 * 4]
3124 fmul dword ptr [ EDX + 12 * 4]
3125 fld dword ptr [ ESI + 3 * 4]
3126 fmul dword ptr [ EDX + 13 * 4]
3127
3128 fxch ST(1)
3129 faddp ST(3), ST(0)
3130 faddp ST(1), ST(0)
3131
3132 mov EBX, dword ptr [ ESI + 2 * 4]
3133 mov EBP, dword ptr [ ESI + 3 * 4]
3134
3135 fxch ST(1)
3136 fstp dword ptr [ EDI + 0 * 4]
3137 fstp dword ptr [ EDI + 1 * 4]
3138 mov dword ptr [ EDI + 2 * 4], EBX
3139 mov dword ptr [ EDI + 3 * 4], EBP
3140
3141p4m2dr_skip:
3142 add EDI, 16
3143 add ESI, EAX
3144 cmp EDI, ECX
3145 jne p4m2dr_top
3146
3147
3148p4m2dr_finish:
3149 pop EBP
3150 pop EBX
3151 pop EDI
3152 pop ESI
3153 ret
3154
3155
3156 PUBLIC _gl_x86_transform_points4_2d_no_rot_raw
3157 ALIGN 4
3158_gl_x86_transform_points4_2d_no_rot_raw:
3159
3160 push ESI
3161 push EDI
3162
3163 mov ESI, dword ptr [ ESP + 12+8]
3164 mov EDI, dword ptr [ ESP + 4+8]
3165
3166 push EBX
3167 push EBP
3168
3169 mov EDX, dword ptr [ ESP + 16+8]
3170 mov ECX, dword ptr [ ESI + 8]
3171
3172 test ECX, ECX
3173 jz p4m2dnrr_finish
3174
3175 mov EAX, dword ptr [ ESI + 12]
3176 or dword ptr [ EDI + 20], 15
3177
3178 mov dword ptr [ EDI + 8], ECX
3179 mov dword ptr [ EDI + 16], 4
3180
3181 shl ECX, 4
3182 mov ESI, dword ptr [ ESI + 4]
3183
3184 mov EDI, dword ptr [ EDI + 4]
3185 add ECX, EDI
3186
3187
3188 ALIGN 4
3189p4m2dnrr_top:
3190
3191
3192 fld dword ptr [ ESI + 0 * 4]
3193 fmul dword ptr [ EDX + 0 * 4]
3194
3195 fld dword ptr [ ESI + 1 * 4]
3196 fmul dword ptr [ EDX + 5 * 4]
3197
3198 fld dword ptr [ ESI + 3 * 4]
3199 fmul dword ptr [ EDX + 12 * 4]
3200 fld dword ptr [ ESI + 3 * 4]
3201 fmul dword ptr [ EDX + 13 * 4]
3202
3203 fxch ST(1)
3204 faddp ST(3), ST(0)
3205 faddp ST(1), ST(0)
3206
3207 mov EBX, dword ptr [ ESI + 2 * 4]
3208 mov EBP, dword ptr [ ESI + 3 * 4]
3209
3210 fxch ST(1)
3211 fstp dword ptr [ EDI + 0 * 4]
3212 fstp dword ptr [ EDI + 1 * 4]
3213 mov dword ptr [ EDI + 2 * 4], EBX
3214 mov dword ptr [ EDI + 3 * 4], EBP
3215
3216p4m2dnrr_skip:
3217 add EDI, 16
3218 add ESI, EAX
3219 cmp EDI, ECX
3220 jne p4m2dnrr_top
3221
3222
3223p4m2dnrr_finish:
3224 pop EBP
3225 pop EBX
3226 pop EDI
3227 pop ESI
3228 ret
3229
3230
3231 PUBLIC _gl_x86_transform_points4_3d_raw
3232 ALIGN 4
3233_gl_x86_transform_points4_3d_raw:
3234
3235 push ESI
3236 push EDI
3237
3238 mov ESI, dword ptr [ ESP + 12+8]
3239 mov EDI, dword ptr [ ESP + 4+8]
3240
3241 push EBX
3242
3243 mov EDX, dword ptr [ ESP + 12+8]
3244 mov ECX, dword ptr [ ESI + 8]
3245
3246 test ECX, ECX
3247 jz p4m3dr_finish
3248
3249 mov EAX, dword ptr [ ESI + 12]
3250 or dword ptr [ EDI + 20], 15
3251
3252 mov dword ptr [ EDI + 8], ECX
3253 mov dword ptr [ EDI + 16], 4
3254
3255 shl ECX, 4
3256 mov ESI, dword ptr [ ESI + 4]
3257
3258 mov EDI, dword ptr [ EDI + 4]
3259 add ECX, EDI
3260
3261
3262 ALIGN 4
3263p4m3dr_top:
3264
3265
3266 fld dword ptr [ ESI + 0 * 4]
3267 fmul dword ptr [ EDX + 0 * 4]
3268 fld dword ptr [ ESI + 0 * 4]
3269 fmul dword ptr [ EDX + 1 * 4]
3270 fld dword ptr [ ESI + 0 * 4]
3271 fmul dword ptr [ EDX + 2 * 4]
3272
3273 fld dword ptr [ ESI + 1 * 4]
3274 fmul dword ptr [ EDX + 4 * 4]
3275 fld dword ptr [ ESI + 1 * 4]
3276 fmul dword ptr [ EDX + 5 * 4]
3277 fld dword ptr [ ESI + 1 * 4]
3278 fmul dword ptr [ EDX + 6 * 4]
3279
3280 fxch ST(2)
3281 faddp ST(5), ST(0)
3282 faddp ST(3), ST(0)
3283 faddp ST(1), ST(0)
3284
3285 fld dword ptr [ ESI + 2 * 4]
3286 fmul dword ptr [ EDX + 8 * 4]
3287 fld dword ptr [ ESI + 2 * 4]
3288 fmul dword ptr [ EDX + 9 * 4]
3289 fld dword ptr [ ESI + 2 * 4]
3290 fmul dword ptr [ EDX + 10 * 4]
3291
3292 fxch ST(2)
3293 faddp ST(5), ST(0)
3294 faddp ST(3), ST(0)
3295 faddp ST(1), ST(0)
3296
3297 fld dword ptr [ ESI + 3 * 4]
3298 fmul dword ptr [ EDX + 12 * 4]
3299 fld dword ptr [ ESI + 3 * 4]
3300 fmul dword ptr [ EDX + 13 * 4]
3301 fld dword ptr [ ESI + 3 * 4]
3302 fmul dword ptr [ EDX + 14 * 4]
3303
3304 fxch ST(2)
3305 faddp ST(5), ST(0)
3306 faddp ST(3), ST(0)
3307 faddp ST(1), ST(0)
3308
3309 mov EBX, dword ptr [ ESI + 3 * 4]
3310
3311 fxch ST(2)
3312 fstp dword ptr [ EDI + 0 * 4]
3313 fstp dword ptr [ EDI + 1 * 4]
3314 fstp dword ptr [ EDI + 2 * 4]
3315 mov dword ptr [ EDI + 3 * 4], EBX
3316
3317p4m3dr_skip:
3318 add EDI, 16
3319 add ESI, EAX
3320 cmp EDI, ECX
3321 jne p4m3dr_top
3322
3323
3324p4m3dr_finish:
3325 pop EBX
3326 pop EDI
3327 pop ESI
3328 ret
3329
3330
3331 PUBLIC _gl_x86_transform_points4_3d_no_rot_raw
3332 ALIGN 4
3333_gl_x86_transform_points4_3d_no_rot_raw:
3334
3335 push ESI
3336 push EDI
3337
3338 mov ESI, dword ptr [ ESP + 12+8]
3339 mov EDI, dword ptr [ ESP + 4+8]
3340
3341 push EBX
3342
3343 mov EDX, dword ptr [ ESP + 12+8]
3344 mov ECX, dword ptr [ ESI + 8]
3345
3346 test ECX, ECX
3347 jz p4m3dnrr_finish
3348
3349 mov EAX, dword ptr [ ESI + 12]
3350 or dword ptr [ EDI + 20], 15
3351
3352 mov dword ptr [ EDI + 8], ECX
3353 mov dword ptr [ EDI + 16], 4
3354
3355 shl ECX, 4
3356 mov ESI, dword ptr [ ESI + 4]
3357
3358 mov EDI, dword ptr [ EDI + 4]
3359 add ECX, EDI
3360
3361
3362 ALIGN 4
3363p4m3dnrr_top:
3364
3365
3366 fld dword ptr [ ESI + 0 * 4]
3367 fmul dword ptr [ EDX + 0 * 4]
3368
3369 fld dword ptr [ ESI + 1 * 4]
3370 fmul dword ptr [ EDX + 5 * 4]
3371
3372 fld dword ptr [ ESI + 2 * 4]
3373 fmul dword ptr [ EDX + 10 * 4]
3374
3375 fld dword ptr [ ESI + 3 * 4]
3376 fmul dword ptr [ EDX + 12 * 4]
3377 fld dword ptr [ ESI + 3 * 4]
3378 fmul dword ptr [ EDX + 13 * 4]
3379 fld dword ptr [ ESI + 3 * 4]
3380 fmul dword ptr [ EDX + 14 * 4]
3381
3382 fxch ST(2)
3383 faddp ST(5), ST(0)
3384 faddp ST(3), ST(0)
3385 faddp ST(1), ST(0)
3386
3387 mov EBX, dword ptr [ ESI + 3 * 4]
3388
3389 fxch ST(2)
3390 fstp dword ptr [ EDI + 0 * 4]
3391 fstp dword ptr [ EDI + 1 * 4]
3392 fstp dword ptr [ EDI + 2 * 4]
3393 mov dword ptr [ EDI + 3 * 4], EBX
3394
3395p4m3dnrr_skip:
3396 add EDI, 16
3397 add ESI, EAX
3398 cmp EDI, ECX
3399 jne p4m3dnrr_top
3400
3401
3402p4m3dnrr_finish:
3403 pop EBX
3404 pop EDI
3405 pop ESI
3406 ret
3407
3408
3409 PUBLIC _gl_x86_transform_points4_perspective_raw
3410 ALIGN 4
3411_gl_x86_transform_points4_perspective_raw:
3412
3413 push ESI
3414 push EDI
3415
3416 mov ESI, dword ptr [ ESP + 12+8]
3417 mov EDI, dword ptr [ ESP + 4+8]
3418
3419 push EBX
3420
3421 mov EDX, dword ptr [ ESP + 12+8]
3422 mov ECX, dword ptr [ ESI + 8]
3423
3424 test ECX, ECX
3425 jz p4mpr_finish
3426
3427 mov EAX, dword ptr [ ESI + 12]
3428 or dword ptr [ EDI + 20], 15
3429
3430 mov dword ptr [ EDI + 8], ECX
3431 mov dword ptr [ EDI + 16], 4
3432
3433 shl ECX, 4
3434 mov ESI, dword ptr [ ESI + 4]
3435
3436 mov EDI, dword ptr [ EDI + 4]
3437 add ECX, EDI
3438
3439
3440 ALIGN 4
3441p4mpr_top:
3442
3443
3444 fld dword ptr [ ESI + 0 * 4]
3445 fmul dword ptr [ EDX + 0 * 4]
3446
3447 fld dword ptr [ ESI + 1 * 4]
3448 fmul dword ptr [ EDX + 5 * 4]
3449
3450 fld dword ptr [ ESI + 2 * 4]
3451 fmul dword ptr [ EDX + 8 * 4]
3452 fld dword ptr [ ESI + 2 * 4]
3453 fmul dword ptr [ EDX + 9 * 4]
3454 fld dword ptr [ ESI + 2 * 4]
3455 fmul dword ptr [ EDX + 10 * 4]
3456
3457 fxch ST(2)
3458 faddp ST(4), ST(0)
3459 faddp ST(2), ST(0)
3460
3461 fld dword ptr [ ESI + 3 * 4]
3462 fmul dword ptr [ EDX + 14 * 4]
3463
3464 faddp ST(1), ST(0)
3465
3466 mov EBX, dword ptr [ ESI + 2 * 4]
3467 xor EBX, -2147483648
3468
3469 fxch ST(2)
3470 fstp dword ptr [ EDI + 0 * 4]
3471 fstp dword ptr [ EDI + 1 * 4]
3472 fstp dword ptr [ EDI + 2 * 4]
3473 mov dword ptr [ EDI + 3 * 4], EBX
3474
3475p4mpr_skip:
3476 add EDI, 16
3477 add ESI, EAX
3478 cmp EDI, ECX
3479 jne p4mpr_top
3480
3481
3482p4mpr_finish:
3483 pop EBX
3484 pop EDI
3485 pop ESI
3486 ret
3487
3488
3489
3490
3491
3492
3493
3494
3495
3496
3497
3498 PUBLIC _gl_x86_transform_points2_general_v8
3499 ALIGN 4
3500_gl_x86_transform_points2_general_v8:
3501
3502 push ESI
3503 push EDI
3504
3505
3506 mov ESI, dword ptr [ ESP + 8+12]
3507 mov EDI, dword ptr [ ESP + 8+4]
3508
3509 mov EDX, dword ptr [ ESP + 8+8]
3510 mov ECX, dword ptr [ ESP + 8+20]
3511
3512 test ECX, ECX
3513 jz p2mgv8_finish
3514
3515 mov EAX, dword ptr [ ESP + 8+16]
3516
3517
3518 ALIGN 4
3519p2mgv8_top:
3520
3521
3522 fld dword ptr [ ESI + 0 * 4]
3523 fmul dword ptr [ EDX + 0 * 4]
3524 fld dword ptr [ ESI + 0 * 4]
3525 fmul dword ptr [ EDX + 1 * 4]
3526 fld dword ptr [ ESI + 0 * 4]
3527 fmul dword ptr [ EDX + 2 * 4]
3528 fld dword ptr [ ESI + 0 * 4]
3529 fmul dword ptr [ EDX + 3 * 4]
3530
3531 fld dword ptr [ ESI + 1 * 4]
3532 fmul dword ptr [ EDX + 4 * 4]
3533 fld dword ptr [ ESI + 1 * 4]
3534 fmul dword ptr [ EDX + 5 * 4]
3535 fld dword ptr [ ESI + 1 * 4]
3536 fmul dword ptr [ EDX + 6 * 4]
3537 fld dword ptr [ ESI + 1 * 4]
3538 fmul dword ptr [ EDX + 7 * 4]
3539
3540 fxch ST(3)
3541 faddp ST(7), ST(0)
3542 fxch ST(1)
3543 faddp ST(5), ST(0)
3544 faddp ST(3), ST(0)
3545 faddp ST(1), ST(0)
3546
3547 fxch ST(3)
3548 fadd dword ptr [ EDX + 12 * 4]
3549 fxch ST(2)
3550 fadd dword ptr [ EDX + 13 * 4]
3551 fxch ST(1)
3552 fadd dword ptr [ EDX + 14 * 4]
3553 fxch ST(3)
3554 fadd dword ptr [ EDX + 15 * 4]
3555
3556 fxch ST(2)
3557 fstp dword ptr [ EDI + 0 * 4]
3558 fstp dword ptr [ EDI + 1 * 4]
3559 fxch ST(1)
3560 fstp dword ptr [ EDI + 2 * 4]
3561 fstp dword ptr [ EDI + 3 * 4]
3562
3563p2mgv8_skip:
3564 add EDI, 32
3565 add ESI, EAX
3566 dec ECX
3567 jnz p2mgv8_top
3568
3569
3570p2mgv8_finish:
3571 pop EDI
3572 pop ESI
3573 ret
3574
3575
3576 PUBLIC _gl_x86_transform_points2_identity_v8
3577 ALIGN 4
3578_gl_x86_transform_points2_identity_v8:
3579
3580 push ESI
3581 push EDI
3582
3583 push EBX
3584
3585 mov ESI, dword ptr [ ESP + 12+12]
3586 mov EDI, dword ptr [ ESP + 12+4]
3587
3588 mov EDX, dword ptr [ ESP + 12+8]
3589 mov ECX, dword ptr [ ESP + 12+20]
3590
3591 test ECX, ECX
3592 jz p2miv8_finish
3593
3594 mov EAX, dword ptr [ ESP + 12+16]
3595
3596
3597 cmp EDI, ESI
3598 je p2miv8_finish
3599
3600 ALIGN 4
3601p2miv8_top:
3602
3603 mov EBX, dword ptr [ ESI + 0 * 4]
3604 mov EDX, dword ptr [ ESI + 1 * 4]
3605
3606 mov dword ptr [ EDI + 0 * 4], EBX
3607 mov dword ptr [ EDI + 1 * 4], EDX
3608 mov dword ptr [ EDI + 2 * 4], 0
3609 mov dword ptr [ EDI + 3 * 4], 1065353216
3610p2miv8_skip:
3611 add EDI, 32
3612 add ESI, EAX
3613 dec ECX
3614 jnz p2miv8_top
3615
3616
3617p2miv8_finish:
3618 pop EBX
3619 pop EDI
3620 pop ESI
3621 ret
3622
3623
3624 PUBLIC _gl_x86_transform_points2_2d_v8
3625 ALIGN 4
3626_gl_x86_transform_points2_2d_v8:
3627
3628 push ESI
3629 push EDI
3630
3631
3632 mov ESI, dword ptr [ ESP + 8+12]
3633 mov EDI, dword ptr [ ESP + 8+4]
3634
3635 mov EDX, dword ptr [ ESP + 8+8]
3636 mov ECX, dword ptr [ ESP + 8+20]
3637
3638 test ECX, ECX
3639 jz p2m2dv8_finish
3640
3641 mov EAX, dword ptr [ ESP + 8+16]
3642
3643
3644 ALIGN 4
3645p2m2dv8_top:
3646
3647
3648 fld dword ptr [ ESI + 0 * 4]
3649 fmul dword ptr [ EDX + 0 * 4]
3650 fld dword ptr [ ESI + 0 * 4]
3651 fmul dword ptr [ EDX + 1 * 4]
3652
3653 fld dword ptr [ ESI + 1 * 4]
3654 fmul dword ptr [ EDX + 4 * 4]
3655 fld dword ptr [ ESI + 1 * 4]
3656 fmul dword ptr [ EDX + 5 * 4]
3657
3658 fxch ST(1)
3659 faddp ST(3), ST(0)
3660 faddp ST(1), ST(0)
3661
3662 fxch ST(1)
3663 fadd dword ptr [ EDX + 12 * 4]
3664 fxch ST(1)
3665 fadd dword ptr [ EDX + 13 * 4]
3666
3667 fxch ST(1)
3668 fstp dword ptr [ EDI + 0 * 4]
3669 fstp dword ptr [ EDI + 1 * 4]
3670
3671 mov dword ptr [ EDI + 2 * 4], 0
3672 mov dword ptr [ EDI + 3 * 4], 1065353216
3673p2m2dv8_skip:
3674 add EDI, 32
3675 add ESI, EAX
3676 dec ECX
3677 jnz p2m2dv8_top
3678
3679
3680p2m2dv8_finish:
3681 pop EDI
3682 pop ESI
3683 ret
3684
3685
3686 PUBLIC _gl_x86_transform_points2_2d_no_rot_v8
3687 ALIGN 4
3688_gl_x86_transform_points2_2d_no_rot_v8:
3689
3690 push ESI
3691 push EDI
3692
3693
3694 mov ESI, dword ptr [ ESP + 8+12]
3695 mov EDI, dword ptr [ ESP + 8+4]
3696
3697 mov EDX, dword ptr [ ESP + 8+8]
3698 mov ECX, dword ptr [ ESP + 8+20]
3699
3700 test ECX, ECX
3701 jz p2m2dnrv8_finish
3702
3703 mov EAX, dword ptr [ ESP + 8+16]
3704
3705
3706 ALIGN 4
3707p2m2dnrv8_top:
3708
3709
3710 fld dword ptr [ ESI + 0 * 4]
3711 fmul dword ptr [ EDX + 0 * 4]
3712
3713 fld dword ptr [ ESI + 1 * 4]
3714 fmul dword ptr [ EDX + 5 * 4]
3715
3716 fxch ST(1)
3717 fadd dword ptr [ EDX + 12 * 4]
3718 fld dword ptr [ EDX + 13 * 4]
3719 fxch ST(2)
3720 faddp ST(2), ST(0)
3721
3722 fstp dword ptr [ EDI + 0 * 4]
3723 fstp dword ptr [ EDI + 1 * 4]
3724
3725 mov dword ptr [ EDI + 2 * 4], 0
3726 mov dword ptr [ EDI + 3 * 4], 1065353216
3727p2m2dnrv8_skip:
3728 add EDI, 32
3729 add ESI, EAX
3730 dec ECX
3731 jnz p2m2dnrv8_top
3732
3733
3734p2m2dnrv8_finish:
3735 pop EDI
3736 pop ESI
3737 ret
3738
3739
3740 PUBLIC _gl_x86_transform_points2_3d_v8
3741 ALIGN 4
3742_gl_x86_transform_points2_3d_v8:
3743
3744 push ESI
3745 push EDI
3746
3747
3748 mov ESI, dword ptr [ ESP + 8+12]
3749 mov EDI, dword ptr [ ESP + 8+4]
3750
3751 mov EDX, dword ptr [ ESP + 8+8]
3752 mov ECX, dword ptr [ ESP + 8+20]
3753
3754 test ECX, ECX
3755 jz p2m3dv8_finish
3756
3757 mov EAX, dword ptr [ ESP + 8+16]
3758
3759
3760 ALIGN 4
3761p2m3dv8_top:
3762
3763
3764 fld dword ptr [ ESI + 0 * 4]
3765 fmul dword ptr [ EDX + 0 * 4]
3766 fld dword ptr [ ESI + 0 * 4]
3767 fmul dword ptr [ EDX + 1 * 4]
3768 fld dword ptr [ ESI + 0 * 4]
3769 fmul dword ptr [ EDX + 2 * 4]
3770
3771 fld dword ptr [ ESI + 1 * 4]
3772 fmul dword ptr [ EDX + 4 * 4]
3773 fld dword ptr [ ESI + 1 * 4]
3774 fmul dword ptr [ EDX + 5 * 4]
3775 fld dword ptr [ ESI + 1 * 4]
3776 fmul dword ptr [ EDX + 6 * 4]
3777
3778 fxch ST(2)
3779 faddp ST(5), ST(0)
3780 faddp ST(3), ST(0)
3781 faddp ST(1), ST(0)
3782
3783 fxch ST(2)
3784 fadd dword ptr [ EDX + 12 * 4]
3785 fxch ST(1)
3786 fadd dword ptr [ EDX + 13 * 4]
3787 fxch ST(2)
3788 fadd dword ptr [ EDX + 14 * 4]
3789
3790 fxch ST(1)
3791 fstp dword ptr [ EDI + 0 * 4]
3792 fxch ST(1)
3793 fstp dword ptr [ EDI + 1 * 4]
3794 fstp dword ptr [ EDI + 2 * 4]
3795
3796 mov dword ptr [ EDI + 3 * 4], 1065353216
3797p2m3dv8_skip:
3798 add EDI, 32
3799 add ESI, EAX
3800 dec ECX
3801 jnz p2m3dv8_top
3802
3803
3804p2m3dv8_finish:
3805 pop EDI
3806 pop ESI
3807 ret
3808
3809
3810 PUBLIC _gl_x86_transform_points2_3d_no_rot_v8
3811 ALIGN 4
3812_gl_x86_transform_points2_3d_no_rot_v8:
3813
3814 push ESI
3815 push EDI
3816
3817 push EBX
3818
3819 mov ESI, dword ptr [ ESP + 12+12]
3820 mov EDI, dword ptr [ ESP + 12+4]
3821
3822 mov EDX, dword ptr [ ESP + 12+8]
3823 mov ECX, dword ptr [ ESP + 12+20]
3824
3825 test ECX, ECX
3826 jz p2m3dnrv8_finish
3827
3828 mov EAX, dword ptr [ ESP + 12+16]
3829
3830
3831 mov EBX, dword ptr [ EDX + 14 * 4]
3832 ALIGN 4
3833p2m3dnrv8_top:
3834
3835
3836 fld dword ptr [ ESI + 0 * 4]
3837 fmul dword ptr [ EDX + 0 * 4]
3838
3839 fld dword ptr [ ESI + 1 * 4]
3840 fmul dword ptr [ EDX + 5 * 4]
3841
3842 fxch ST(1)
3843 fadd dword ptr [ EDX + 12 * 4]
3844 fld dword ptr [ EDX + 13 * 4]
3845 fxch ST(2)
3846 faddp ST(2), ST(0)
3847
3848 fstp dword ptr [ EDI + 0 * 4]
3849 fstp dword ptr [ EDI + 1 * 4]
3850 mov dword ptr [ EDI + 2 * 4], EBX
3851
3852 mov dword ptr [ EDI + 3 * 4], 1065353216
3853p2m3dnrv8_skip:
3854 add EDI, 32
3855 add ESI, EAX
3856 dec ECX
3857 jnz p2m3dnrv8_top
3858
3859
3860p2m3dnrv8_finish:
3861 pop EBX
3862 pop EDI
3863 pop ESI
3864 ret
3865
3866
3867 PUBLIC _gl_x86_transform_points2_perspective_v8
3868 ALIGN 4
3869_gl_x86_transform_points2_perspective_v8:
3870
3871 push ESI
3872 push EDI
3873
3874 push EBX
3875
3876 mov ESI, dword ptr [ ESP + 12+12]
3877 mov EDI, dword ptr [ ESP + 12+4]
3878
3879 mov EDX, dword ptr [ ESP + 12+8]
3880 mov ECX, dword ptr [ ESP + 12+20]
3881
3882 test ECX, ECX
3883 jz p2mpv8_finish
3884
3885 mov EAX, dword ptr [ ESP + 12+16]
3886
3887
3888 mov EBX, dword ptr [ EDX + 14 * 4]
3889 ALIGN 4
3890p2mpv8_top:
3891
3892
3893 fld dword ptr [ ESI + 0 * 4]
3894 fmul dword ptr [ EDX + 0 * 4]
3895
3896 fld dword ptr [ ESI + 1 * 4]
3897 fmul dword ptr [ EDX + 5 * 4]
3898
3899 fxch ST(1)
3900 fstp dword ptr [ EDI + 0 * 4]
3901 fstp dword ptr [ EDI + 1 * 4]
3902 mov dword ptr [ EDI + 2 * 4], EBX
3903 mov dword ptr [ EDI + 3 * 4], 0
3904
3905p2mpv8_skip:
3906 add EDI, 32
3907 add ESI, EAX
3908 dec ECX
3909 jnz p2mpv8_top
3910
3911
3912p2mpv8_finish:
3913 pop EBX
3914 pop EDI
3915 pop ESI
3916 ret
3917
3918
3919 PUBLIC _gl_x86_transform_points3_general_v8
3920 ALIGN 4
3921_gl_x86_transform_points3_general_v8:
3922
3923 push ESI
3924 push EDI
3925
3926
3927 mov ESI, dword ptr [ ESP + 8+12]
3928 mov EDI, dword ptr [ ESP + 8+4]
3929
3930 mov EDX, dword ptr [ ESP + 8+8]
3931 mov ECX, dword ptr [ ESP + 8+20]
3932
3933 test ECX, ECX
3934 jz p3mgv8_finish
3935
3936 mov EAX, dword ptr [ ESP + 8+16]
3937
3938
3939 ALIGN 4
3940p3mgv8_top:
3941
3942
3943 fld dword ptr [ ESI + 0 * 4]
3944 fmul dword ptr [ EDX + 0 * 4]
3945 fld dword ptr [ ESI + 0 * 4]
3946 fmul dword ptr [ EDX + 1 * 4]
3947 fld dword ptr [ ESI + 0 * 4]
3948 fmul dword ptr [ EDX + 2 * 4]
3949 fld dword ptr [ ESI + 0 * 4]
3950 fmul dword ptr [ EDX + 3 * 4]
3951
3952 fld dword ptr [ ESI + 1 * 4]
3953 fmul dword ptr [ EDX + 4 * 4]
3954 fld dword ptr [ ESI + 1 * 4]
3955 fmul dword ptr [ EDX + 5 * 4]
3956 fld dword ptr [ ESI + 1 * 4]
3957 fmul dword ptr [ EDX + 6 * 4]
3958 fld dword ptr [ ESI + 1 * 4]
3959 fmul dword ptr [ EDX + 7 * 4]
3960
3961 fxch ST(3)
3962 faddp ST(7), ST(0)
3963 fxch ST(1)
3964 faddp ST(5), ST(0)
3965 faddp ST(3), ST(0)
3966 faddp ST(1), ST(0)
3967
3968 fld dword ptr [ ESI + 2 * 4]
3969 fmul dword ptr [ EDX + 8 * 4]
3970 fld dword ptr [ ESI + 2 * 4]
3971 fmul dword ptr [ EDX + 9 * 4]
3972 fld dword ptr [ ESI + 2 * 4]
3973 fmul dword ptr [ EDX + 10 * 4]
3974 fld dword ptr [ ESI + 2 * 4]
3975 fmul dword ptr [ EDX + 11 * 4]
3976
3977 fxch ST(3)
3978 faddp ST(7), ST(0)
3979 fxch ST(1)
3980 faddp ST(5), ST(0)
3981 faddp ST(3), ST(0)
3982 faddp ST(1), ST(0)
3983
3984 fxch ST(3)
3985 fadd dword ptr [ EDX + 12 * 4]
3986 fxch ST(2)
3987 fadd dword ptr [ EDX + 13 * 4]
3988 fxch ST(1)
3989 fadd dword ptr [ EDX + 14 * 4]
3990 fxch ST(3)
3991 fadd dword ptr [ EDX + 15 * 4]
3992
3993 fxch ST(2)
3994 fstp dword ptr [ EDI + 0 * 4]
3995 fstp dword ptr [ EDI + 1 * 4]
3996 fxch ST(1)
3997 fstp dword ptr [ EDI + 2 * 4]
3998 fstp dword ptr [ EDI + 3 * 4]
3999
4000p3mgv8_skip:
4001 add EDI, 32
4002 add ESI, EAX
4003 dec ECX
4004 jnz p3mgv8_top
4005
4006
4007p3mgv8_finish:
4008 pop EDI
4009 pop ESI
4010 ret
4011
4012
4013 PUBLIC _gl_x86_transform_points3_identity_v8
4014 ALIGN 4
4015_gl_x86_transform_points3_identity_v8:
4016
4017 push ESI
4018 push EDI
4019
4020 push EBX
4021 push EBP
4022
4023 mov ESI, dword ptr [ ESP + 16+12]
4024 mov EDI, dword ptr [ ESP + 16+4]
4025
4026 mov EDX, dword ptr [ ESP + 16+8]
4027 mov ECX, dword ptr [ ESP + 16+20]
4028
4029 test ECX, ECX
4030 jz p3miv8_finish
4031
4032 mov EAX, dword ptr [ ESP + 16+16]
4033
4034
4035 cmp EDI, ESI
4036 je p3miv8_finish
4037
4038 ALIGN 4
4039p3miv8_top:
4040
4041 mov EBX, dword ptr [ ESI + 0 * 4]
4042 mov EBP, dword ptr [ ESI + 1 * 4]
4043 mov EDX, dword ptr [ ESI + 2 * 4]
4044
4045 mov dword ptr [ EDI + 0 * 4], EBX
4046 mov dword ptr [ EDI + 1 * 4], EBP
4047 mov dword ptr [ EDI + 2 * 4], EDX
4048 mov dword ptr [ EDI + 3 * 4], 1065353216
4049p3miv8_skip:
4050 add EDI, 32
4051 add ESI, EAX
4052 dec ECX
4053 jnz p3miv8_top
4054
4055
4056p3miv8_finish:
4057 pop EBP
4058 pop EBX
4059 pop EDI
4060 pop ESI
4061 ret
4062
4063
4064 PUBLIC _gl_x86_transform_points3_2d_v8
4065 ALIGN 4
4066_gl_x86_transform_points3_2d_v8:
4067
4068 push ESI
4069 push EDI
4070
4071 push EBX
4072
4073 mov ESI, dword ptr [ ESP + 12+12]
4074 mov EDI, dword ptr [ ESP + 12+4]
4075
4076 mov EDX, dword ptr [ ESP + 12+8]
4077 mov ECX, dword ptr [ ESP + 12+20]
4078
4079 test ECX, ECX
4080 jz p3m2dv8_finish
4081
4082 mov EAX, dword ptr [ ESP + 12+16]
4083
4084
4085 ALIGN 4
4086p3m2dv8_top:
4087
4088
4089 fld dword ptr [ ESI + 0 * 4]
4090 fmul dword ptr [ EDX + 0 * 4]
4091 fld dword ptr [ ESI + 0 * 4]
4092 fmul dword ptr [ EDX + 1 * 4]
4093
4094 fld dword ptr [ ESI + 1 * 4]
4095 fmul dword ptr [ EDX + 4 * 4]
4096 fld dword ptr [ ESI + 1 * 4]
4097 fmul dword ptr [ EDX + 5 * 4]
4098
4099 fxch ST(1)
4100 faddp ST(3), ST(0)
4101 faddp ST(1), ST(0)
4102
4103 fxch ST(1)
4104 fadd dword ptr [ EDX + 12 * 4]
4105 fxch ST(1)
4106 fadd dword ptr [ EDX + 13 * 4]
4107
4108 mov EBX, dword ptr [ ESI + 2 * 4]
4109
4110 fxch ST(1)
4111 fstp dword ptr [ EDI + 0 * 4]
4112 fstp dword ptr [ EDI + 1 * 4]
4113 mov dword ptr [ EDI + 2 * 4], EBX
4114
4115 mov dword ptr [ EDI + 3 * 4], 1065353216
4116p3m2dv8_skip:
4117 add EDI, 32
4118 add ESI, EAX
4119 dec ECX
4120 jnz p3m2dv8_top
4121
4122
4123p3m2dv8_finish:
4124 pop EBX
4125 pop EDI
4126 pop ESI
4127 ret
4128
4129
4130 PUBLIC _gl_x86_transform_points3_2d_no_rot_v8
4131 ALIGN 4
4132_gl_x86_transform_points3_2d_no_rot_v8:
4133
4134 push ESI
4135 push EDI
4136
4137 push EBX
4138
4139 mov ESI, dword ptr [ ESP + 12+12]
4140 mov EDI, dword ptr [ ESP + 12+4]
4141
4142 mov EDX, dword ptr [ ESP + 12+8]
4143 mov ECX, dword ptr [ ESP + 12+20]
4144
4145 test ECX, ECX
4146 jz p3m2dnrv8_finish
4147
4148 mov EAX, dword ptr [ ESP + 12+16]
4149
4150
4151 ALIGN 4
4152p3m2dnrv8_top:
4153
4154
4155 fld dword ptr [ ESI + 0 * 4]
4156 fmul dword ptr [ EDX + 0 * 4]
4157
4158 fld dword ptr [ ESI + 1 * 4]
4159 fmul dword ptr [ EDX + 5 * 4]
4160
4161 fxch ST(1)
4162 fadd dword ptr [ EDX + 12 * 4]
4163 fld dword ptr [ EDX + 13 * 4]
4164
4165 fxch ST(2)
4166 faddp ST(2), ST(0)
4167
4168 mov EBX, dword ptr [ ESI + 2 * 4]
4169
4170 fstp dword ptr [ EDI + 0 * 4]
4171 fstp dword ptr [ EDI + 1 * 4]
4172 mov dword ptr [ EDI + 2 * 4], EBX
4173
4174 mov dword ptr [ EDI + 3 * 4], 1065353216
4175p3m2dnrv8_skip:
4176 add EDI, 32
4177 add ESI, EAX
4178 dec ECX
4179 jnz p3m2dnrv8_top
4180
4181
4182p3m2dnrv8_finish:
4183 pop EBX
4184 pop EDI
4185 pop ESI
4186 ret
4187
4188
4189 PUBLIC _gl_x86_transform_points3_3d_v8
4190 ALIGN 4
4191_gl_x86_transform_points3_3d_v8:
4192
4193 push ESI
4194 push EDI
4195
4196
4197 mov ESI, dword ptr [ ESP + 8+12]
4198 mov EDI, dword ptr [ ESP + 8+4]
4199
4200 mov EDX, dword ptr [ ESP + 8+8]
4201 mov ECX, dword ptr [ ESP + 8+20]
4202
4203 test ECX, ECX
4204 jz p3m3dv8_finish
4205
4206 mov EAX, dword ptr [ ESP + 8+16]
4207
4208
4209 ALIGN 4
4210p3m3dv8_top:
4211
4212
4213 fld dword ptr [ ESI + 0 * 4]
4214 fmul dword ptr [ EDX + 0 * 4]
4215 fld dword ptr [ ESI + 0 * 4]
4216 fmul dword ptr [ EDX + 1 * 4]
4217 fld dword ptr [ ESI + 0 * 4]
4218 fmul dword ptr [ EDX + 2 * 4]
4219
4220 fld dword ptr [ ESI + 1 * 4]
4221 fmul dword ptr [ EDX + 4 * 4]
4222 fld dword ptr [ ESI + 1 * 4]
4223 fmul dword ptr [ EDX + 5 * 4]
4224 fld dword ptr [ ESI + 1 * 4]
4225 fmul dword ptr [ EDX + 6 * 4]
4226
4227 fxch ST(2)
4228 faddp ST(5), ST(0)
4229 faddp ST(3), ST(0)
4230 faddp ST(1), ST(0)
4231
4232 fld dword ptr [ ESI + 2 * 4]
4233 fmul dword ptr [ EDX + 8 * 4]
4234 fld dword ptr [ ESI + 2 * 4]
4235 fmul dword ptr [ EDX + 9 * 4]
4236 fld dword ptr [ ESI + 2 * 4]
4237 fmul dword ptr [ EDX + 10 * 4]
4238
4239 fxch ST(2)
4240 faddp ST(5), ST(0)
4241 faddp ST(3), ST(0)
4242 faddp ST(1), ST(0)
4243
4244 fxch ST(2)
4245 fadd dword ptr [ EDX + 12 * 4]
4246 fxch ST(1)
4247 fadd dword ptr [ EDX + 13 * 4]
4248 fxch ST(2)
4249 fadd dword ptr [ EDX + 14 * 4]
4250
4251 fxch ST(1)
4252 fstp dword ptr [ EDI + 0 * 4]
4253 fxch ST(1)
4254 fstp dword ptr [ EDI + 1 * 4]
4255 fstp dword ptr [ EDI + 2 * 4]
4256
4257 mov dword ptr [ EDI + 3 * 4], 1065353216
4258p3m3dv8_skip:
4259 add EDI, 32
4260 add ESI, EAX
4261 dec ECX
4262 jnz p3m3dv8_top
4263
4264
4265p3m3dv8_finish:
4266 pop EDI
4267 pop ESI
4268 ret
4269
4270
4271 PUBLIC _gl_x86_transform_points3_3d_no_rot_v8
4272 ALIGN 4
4273_gl_x86_transform_points3_3d_no_rot_v8:
4274
4275 push ESI
4276 push EDI
4277
4278
4279 mov ESI, dword ptr [ ESP + 8+12]
4280 mov EDI, dword ptr [ ESP + 8+4]
4281
4282 mov EDX, dword ptr [ ESP + 8+8]
4283 mov ECX, dword ptr [ ESP + 8+20]
4284
4285 test ECX, ECX
4286 jz p3m3dnrv8_finish
4287
4288 mov EAX, dword ptr [ ESP + 8+16]
4289
4290
4291 ALIGN 4
4292p3m3dnrv8_top:
4293
4294
4295 fld dword ptr [ ESI + 0 * 4]
4296 fmul dword ptr [ EDX + 0 * 4]
4297
4298 fld dword ptr [ ESI + 1 * 4]
4299 fmul dword ptr [ EDX + 5 * 4]
4300
4301 fld dword ptr [ ESI + 2 * 4]
4302 fmul dword ptr [ EDX + 10 * 4]
4303
4304 fxch ST(2)
4305 fadd dword ptr [ EDX + 12 * 4]
4306 fld dword ptr [ EDX + 13 * 4]
4307 fxch ST(2)
4308 faddp ST(2), ST(0)
4309 fld dword ptr [ EDX + 14 * 4]
4310 fxch ST(3)
4311 faddp ST(3), ST(0)
4312
4313 fstp dword ptr [ EDI + 0 * 4]
4314 fstp dword ptr [ EDI + 1 * 4]
4315 fstp dword ptr [ EDI + 2 * 4]
4316
4317 mov dword ptr [ EDI + 3 * 4], 1065353216
4318p3m3dnrv8_skip:
4319 add EDI, 32
4320 add ESI, EAX
4321 dec ECX
4322 jnz p3m3dnrv8_top
4323
4324
4325p3m3dnrv8_finish:
4326 pop EDI
4327 pop ESI
4328 ret
4329
4330
4331 PUBLIC _gl_x86_transform_points3_perspective_v8
4332 ALIGN 4
4333_gl_x86_transform_points3_perspective_v8:
4334
4335 push ESI
4336 push EDI
4337
4338 push EBX
4339
4340 mov ESI, dword ptr [ ESP + 12+12]
4341 mov EDI, dword ptr [ ESP + 12+4]
4342
4343 mov EDX, dword ptr [ ESP + 12+8]
4344 mov ECX, dword ptr [ ESP + 12+20]
4345
4346 test ECX, ECX
4347 jz p3mpv8_finish
4348
4349 mov EAX, dword ptr [ ESP + 12+16]
4350
4351
4352 ALIGN 4
4353p3mpv8_top:
4354
4355
4356 fld dword ptr [ ESI + 0 * 4]
4357 fmul dword ptr [ EDX + 0 * 4]
4358
4359 fld dword ptr [ ESI + 1 * 4]
4360 fmul dword ptr [ EDX + 5 * 4]
4361
4362 fld dword ptr [ ESI + 2 * 4]
4363 fmul dword ptr [ EDX + 8 * 4]
4364 fld dword ptr [ ESI + 2 * 4]
4365 fmul dword ptr [ EDX + 9 * 4]
4366 fld dword ptr [ ESI + 2 * 4]
4367 fmul dword ptr [ EDX + 10 * 4]
4368
4369 fxch ST(2)
4370 faddp ST(4), ST(0)
4371 faddp ST(2), ST(0)
4372 fld dword ptr [ EDX + 14 * 4]
4373 fxch ST(1)
4374 faddp ST(1), ST(0)
4375
4376 mov EBX, dword ptr [ ESI + 2 * 4]
4377 xor EBX, -2147483648
4378
4379 fxch ST(2)
4380 fstp dword ptr [ EDI + 0 * 4]
4381 fstp dword ptr [ EDI + 1 * 4]
4382 fstp dword ptr [ EDI + 2 * 4]
4383 mov dword ptr [ EDI + 3 * 4], EBX
4384
4385p3mpv8_skip:
4386 add EDI, 32
4387 add ESI, EAX
4388 dec ECX
4389 jnz p3mpv8_top
4390
4391
4392p3mpv8_finish:
4393 pop EBX
4394 pop EDI
4395 pop ESI
4396 ret
4397
4398
4399 PUBLIC _gl_x86_transform_points4_general_v8
4400 ALIGN 4
4401_gl_x86_transform_points4_general_v8:
4402
4403 push ESI
4404 push EDI
4405
4406
4407 mov ESI, dword ptr [ ESP + 8+12]
4408 mov EDI, dword ptr [ ESP + 8+4]
4409
4410 mov EDX, dword ptr [ ESP + 8+8]
4411 mov ECX, dword ptr [ ESP + 8+20]
4412
4413 test ECX, ECX
4414 jz p4mgv8_finish
4415
4416 mov EAX, dword ptr [ ESP + 8+16]
4417
4418
4419 ALIGN 4
4420p4mgv8_top:
4421
4422
4423 fld dword ptr [ ESI + 0 * 4]
4424 fmul dword ptr [ EDX + 0 * 4]
4425 fld dword ptr [ ESI + 0 * 4]
4426 fmul dword ptr [ EDX + 1 * 4]
4427 fld dword ptr [ ESI + 0 * 4]
4428 fmul dword ptr [ EDX + 2 * 4]
4429 fld dword ptr [ ESI + 0 * 4]
4430 fmul dword ptr [ EDX + 3 * 4]
4431
4432 fld dword ptr [ ESI + 1 * 4]
4433 fmul dword ptr [ EDX + 4 * 4]
4434 fld dword ptr [ ESI + 1 * 4]
4435 fmul dword ptr [ EDX + 5 * 4]
4436 fld dword ptr [ ESI + 1 * 4]
4437 fmul dword ptr [ EDX + 6 * 4]
4438 fld dword ptr [ ESI + 1 * 4]
4439 fmul dword ptr [ EDX + 7 * 4]
4440
4441 fxch ST(3)
4442 faddp ST(7), ST(0)
4443 fxch ST(1)
4444 faddp ST(5), ST(0)
4445 faddp ST(3), ST(0)
4446 faddp ST(1), ST(0)
4447
4448 fld dword ptr [ ESI + 2 * 4]
4449 fmul dword ptr [ EDX + 8 * 4]
4450 fld dword ptr [ ESI + 2 * 4]
4451 fmul dword ptr [ EDX + 9 * 4]
4452 fld dword ptr [ ESI + 2 * 4]
4453 fmul dword ptr [ EDX + 10 * 4]
4454 fld dword ptr [ ESI + 2 * 4]
4455 fmul dword ptr [ EDX + 11 * 4]
4456
4457 fxch ST(3)
4458 faddp ST(7), ST(0)
4459 fxch ST(1)
4460 faddp ST(5), ST(0)
4461 faddp ST(3), ST(0)
4462 faddp ST(1), ST(0)
4463
4464 fld dword ptr [ ESI + 3 * 4]
4465 fmul dword ptr [ EDX + 12 * 4]
4466 fld dword ptr [ ESI + 3 * 4]
4467 fmul dword ptr [ EDX + 13 * 4]
4468 fld dword ptr [ ESI + 3 * 4]
4469 fmul dword ptr [ EDX + 14 * 4]
4470 fld dword ptr [ ESI + 3 * 4]
4471 fmul dword ptr [ EDX + 15 * 4]
4472
4473 fxch ST(3)
4474 faddp ST(7), ST(0)
4475 fxch ST(1)
4476 faddp ST(5), ST(0)
4477 faddp ST(3), ST(0)
4478 faddp ST(1), ST(0)
4479
4480 fxch ST(3)
4481 fstp dword ptr [ EDI + 0 * 4]
4482 fxch ST(1)
4483 fstp dword ptr [ EDI + 1 * 4]
4484 fstp dword ptr [ EDI + 2 * 4]
4485 fstp dword ptr [ EDI + 3 * 4]
4486
4487p4mgv8_skip:
4488 add EDI, 32
4489 add ESI, EAX
4490 dec ECX
4491 jnz p4mgv8_top
4492
4493
4494p4mgv8_finish:
4495 pop EDI
4496 pop ESI
4497 ret
4498
4499
4500 PUBLIC _gl_x86_transform_points4_identity_v8
4501 ALIGN 4
4502_gl_x86_transform_points4_identity_v8:
4503
4504 push ESI
4505 push EDI
4506
4507 push EBX
4508
4509 mov ESI, dword ptr [ ESP + 12+12]
4510 mov EDI, dword ptr [ ESP + 12+4]
4511
4512 mov EDX, dword ptr [ ESP + 12+8]
4513 mov ECX, dword ptr [ ESP + 12+20]
4514
4515 test ECX, ECX
4516 jz p4miv8_finish
4517
4518 mov EAX, dword ptr [ ESP + 12+16]
4519
4520
4521 cmp EDI, ESI
4522 je p4miv8_finish
4523
4524 ALIGN 4
4525p4miv8_top:
4526
4527 mov EBX, dword ptr [ ESI + 0 * 4]
4528 mov EDX, dword ptr [ ESI + 1 * 4]
4529
4530 mov dword ptr [ EDI + 0 * 4], EBX
4531 mov dword ptr [ EDI + 1 * 4], EDX
4532
4533 mov EBX, dword ptr [ ESI + 2 * 4]
4534 mov EDX, dword ptr [ ESI + 3 * 4]
4535
4536 mov dword ptr [ EDI + 2 * 4], EBX
4537 mov dword ptr [ EDI + 3 * 4], EDX
4538p4miv8_skip:
4539 add EDI, 32
4540 add ESI, EAX
4541 dec ECX
4542 jnz p4miv8_top
4543
4544
4545p4miv8_finish:
4546 pop EBX
4547 pop EDI
4548 pop ESI
4549 ret
4550
4551
4552 PUBLIC _gl_x86_transform_points4_2d_v8
4553 ALIGN 4
4554_gl_x86_transform_points4_2d_v8:
4555
4556 push ESI
4557 push EDI
4558
4559 push EBX
4560 push EBP
4561
4562 mov ESI, dword ptr [ ESP + 16+12]
4563 mov EDI, dword ptr [ ESP + 16+4]
4564
4565 mov EDX, dword ptr [ ESP + 16+8]
4566 mov ECX, dword ptr [ ESP + 16+20]
4567
4568 test ECX, ECX
4569 jz p4m2dv8_finish
4570
4571 mov EAX, dword ptr [ ESP + 16+16]
4572
4573
4574 ALIGN 4
4575p4m2dv8_top:
4576
4577
4578 fld dword ptr [ ESI + 0 * 4]
4579 fmul dword ptr [ EDX + 0 * 4]
4580 fld dword ptr [ ESI + 0 * 4]
4581 fmul dword ptr [ EDX + 1 * 4]
4582
4583 fld dword ptr [ ESI + 1 * 4]
4584 fmul dword ptr [ EDX + 4 * 4]
4585 fld dword ptr [ ESI + 1 * 4]
4586 fmul dword ptr [ EDX + 5 * 4]
4587
4588 fxch ST(1)
4589 faddp ST(3), ST(0)
4590 faddp ST(1), ST(0)
4591
4592 fld dword ptr [ ESI + 3 * 4]
4593 fmul dword ptr [ EDX + 12 * 4]
4594 fld dword ptr [ ESI + 3 * 4]
4595 fmul dword ptr [ EDX + 13 * 4]
4596
4597 fxch ST(1)
4598 faddp ST(3), ST(0)
4599 faddp ST(1), ST(0)
4600
4601 mov EBX, dword ptr [ ESI + 2 * 4]
4602 mov EBP, dword ptr [ ESI + 3 * 4]
4603
4604 fxch ST(1)
4605 fstp dword ptr [ EDI + 0 * 4]
4606 fstp dword ptr [ EDI + 1 * 4]
4607 mov dword ptr [ EDI + 2 * 4], EBX
4608 mov dword ptr [ EDI + 3 * 4], EBP
4609
4610p4m2dv8_skip:
4611 add EDI, 32
4612 add ESI, EAX
4613 dec ECX
4614 jnz p4m2dv8_top
4615
4616
4617p4m2dv8_finish:
4618 pop EBP
4619 pop EBX
4620 pop EDI
4621 pop ESI
4622 ret
4623
4624
4625 PUBLIC _gl_x86_transform_points4_2d_no_rot_v8
4626 ALIGN 4
4627_gl_x86_transform_points4_2d_no_rot_v8:
4628
4629 push ESI
4630 push EDI
4631
4632 push EBX
4633 push EBP
4634
4635 mov ESI, dword ptr [ ESP + 16+12]
4636 mov EDI, dword ptr [ ESP + 16+4]
4637
4638 mov EDX, dword ptr [ ESP + 16+8]
4639 mov ECX, dword ptr [ ESP + 16+20]
4640
4641 test ECX, ECX
4642 jz p4m2dnrv8_finish
4643
4644 mov EAX, dword ptr [ ESP + 16+16]
4645
4646
4647 ALIGN 4
4648p4m2dnrv8_top:
4649
4650
4651 fld dword ptr [ ESI + 0 * 4]
4652 fmul dword ptr [ EDX + 0 * 4]
4653
4654 fld dword ptr [ ESI + 1 * 4]
4655 fmul dword ptr [ EDX + 5 * 4]
4656
4657 fld dword ptr [ ESI + 3 * 4]
4658 fmul dword ptr [ EDX + 12 * 4]
4659 fld dword ptr [ ESI + 3 * 4]
4660 fmul dword ptr [ EDX + 13 * 4]
4661
4662 fxch ST(1)
4663 faddp ST(3), ST(0)
4664 faddp ST(1), ST(0)
4665
4666 mov EBX, dword ptr [ ESI + 2 * 4]
4667 mov EBP, dword ptr [ ESI + 3 * 4]
4668
4669 fxch ST(1)
4670 fstp dword ptr [ EDI + 0 * 4]
4671 fstp dword ptr [ EDI + 1 * 4]
4672 mov dword ptr [ EDI + 2 * 4], EBX
4673 mov dword ptr [ EDI + 3 * 4], EBP
4674
4675p4m2dnrv8_skip:
4676 add EDI, 32
4677 add ESI, EAX
4678 dec ECX
4679 jnz p4m2dnrv8_top
4680
4681
4682p4m2dnrv8_finish:
4683 pop EBP
4684 pop EBX
4685 pop EDI
4686 pop ESI
4687 ret
4688
4689
4690 PUBLIC _gl_x86_transform_points4_3d_v8
4691 ALIGN 4
4692_gl_x86_transform_points4_3d_v8:
4693
4694 push ESI
4695 push EDI
4696
4697 push EBX
4698
4699 mov ESI, dword ptr [ ESP + 12+12]
4700 mov EDI, dword ptr [ ESP + 12+4]
4701
4702 mov EDX, dword ptr [ ESP + 12+8]
4703 mov ECX, dword ptr [ ESP + 12+20]
4704
4705 test ECX, ECX
4706 jz p4m3dv8_finish
4707
4708 mov EAX, dword ptr [ ESP + 12+16]
4709
4710
4711 ALIGN 4
4712p4m3dv8_top:
4713
4714
4715 fld dword ptr [ ESI + 0 * 4]
4716 fmul dword ptr [ EDX + 0 * 4]
4717 fld dword ptr [ ESI + 0 * 4]
4718 fmul dword ptr [ EDX + 1 * 4]
4719 fld dword ptr [ ESI + 0 * 4]
4720 fmul dword ptr [ EDX + 2 * 4]
4721
4722 fld dword ptr [ ESI + 1 * 4]
4723 fmul dword ptr [ EDX + 4 * 4]
4724 fld dword ptr [ ESI + 1 * 4]
4725 fmul dword ptr [ EDX + 5 * 4]
4726 fld dword ptr [ ESI + 1 * 4]
4727 fmul dword ptr [ EDX + 6 * 4]
4728
4729 fxch ST(2)
4730 faddp ST(5), ST(0)
4731 faddp ST(3), ST(0)
4732 faddp ST(1), ST(0)
4733
4734 fld dword ptr [ ESI + 2 * 4]
4735 fmul dword ptr [ EDX + 8 * 4]
4736 fld dword ptr [ ESI + 2 * 4]
4737 fmul dword ptr [ EDX + 9 * 4]
4738 fld dword ptr [ ESI + 2 * 4]
4739 fmul dword ptr [ EDX + 10 * 4]
4740
4741 fxch ST(2)
4742 faddp ST(5), ST(0)
4743 faddp ST(3), ST(0)
4744 faddp ST(1), ST(0)
4745
4746 fld dword ptr [ ESI + 3 * 4]
4747 fmul dword ptr [ EDX + 12 * 4]
4748 fld dword ptr [ ESI + 3 * 4]
4749 fmul dword ptr [ EDX + 13 * 4]
4750 fld dword ptr [ ESI + 3 * 4]
4751 fmul dword ptr [ EDX + 14 * 4]
4752
4753 fxch ST(2)
4754 faddp ST(5), ST(0)
4755 faddp ST(3), ST(0)
4756 faddp ST(1), ST(0)
4757
4758 mov EBX, dword ptr [ ESI + 3 * 4]
4759
4760 fxch ST(2)
4761 fstp dword ptr [ EDI + 0 * 4]
4762 fstp dword ptr [ EDI + 1 * 4]
4763 fstp dword ptr [ EDI + 2 * 4]
4764 mov dword ptr [ EDI + 3 * 4], EBX
4765
4766p4m3dv8_skip:
4767 add EDI, 32
4768 add ESI, EAX
4769 dec ECX
4770 jnz p4m3dv8_top
4771
4772
4773p4m3dv8_finish:
4774 pop EBX
4775 pop EDI
4776 pop ESI
4777 ret
4778
4779
4780 PUBLIC _gl_x86_transform_points4_3d_no_rot_v8
4781 ALIGN 4
4782_gl_x86_transform_points4_3d_no_rot_v8:
4783
4784 push ESI
4785 push EDI
4786
4787 push EBX
4788
4789 mov ESI, dword ptr [ ESP + 12+12]
4790 mov EDI, dword ptr [ ESP + 12+4]
4791
4792 mov EDX, dword ptr [ ESP + 12+8]
4793 mov ECX, dword ptr [ ESP + 12+20]
4794
4795 test ECX, ECX
4796 jz p4m3dnrv8_finish
4797
4798 mov EAX, dword ptr [ ESP + 12+16]
4799
4800
4801 ALIGN 4
4802p4m3dnrv8_top:
4803
4804
4805 fld dword ptr [ ESI + 0 * 4]
4806 fmul dword ptr [ EDX + 0 * 4]
4807
4808 fld dword ptr [ ESI + 1 * 4]
4809 fmul dword ptr [ EDX + 5 * 4]
4810
4811 fld dword ptr [ ESI + 2 * 4]
4812 fmul dword ptr [ EDX + 10 * 4]
4813
4814 fld dword ptr [ ESI + 3 * 4]
4815 fmul dword ptr [ EDX + 12 * 4]
4816 fld dword ptr [ ESI + 3 * 4]
4817 fmul dword ptr [ EDX + 13 * 4]
4818 fld dword ptr [ ESI + 3 * 4]
4819 fmul dword ptr [ EDX + 14 * 4]
4820
4821 fxch ST(2)
4822 faddp ST(5), ST(0)
4823 faddp ST(3), ST(0)
4824 faddp ST(1), ST(0)
4825
4826 mov EBX, dword ptr [ ESI + 3 * 4]
4827
4828 fxch ST(2)
4829 fstp dword ptr [ EDI + 0 * 4]
4830 fstp dword ptr [ EDI + 1 * 4]
4831 fstp dword ptr [ EDI + 2 * 4]
4832 mov dword ptr [ EDI + 3 * 4], EBX
4833
4834p4m3dnrv8_skip:
4835 add EDI, 32
4836 add ESI, EAX
4837 dec ECX
4838 jnz p4m3dnrv8_top
4839
4840
4841p4m3dnrv8_finish:
4842 pop EBX
4843 pop EDI
4844 pop ESI
4845 ret
4846
4847
4848 PUBLIC _gl_x86_transform_points4_perspective_v8
4849 ALIGN 4
4850_gl_x86_transform_points4_perspective_v8:
4851
4852 push ESI
4853 push EDI
4854
4855 push EBX
4856
4857 mov ESI, dword ptr [ ESP + 12+12]
4858 mov EDI, dword ptr [ ESP + 12+4]
4859
4860 mov EDX, dword ptr [ ESP + 12+8]
4861 mov ECX, dword ptr [ ESP + 12+20]
4862
4863 test ECX, ECX
4864 jz p4mpv8_finish
4865
4866 mov EAX, dword ptr [ ESP + 12+16]
4867
4868
4869 ALIGN 4
4870p4mpv8_top:
4871
4872
4873 fld dword ptr [ ESI + 0 * 4]
4874 fmul dword ptr [ EDX + 0 * 4]
4875
4876 fld dword ptr [ ESI + 1 * 4]
4877 fmul dword ptr [ EDX + 5 * 4]
4878
4879 fld dword ptr [ ESI + 2 * 4]
4880 fmul dword ptr [ EDX + 8 * 4]
4881 fld dword ptr [ ESI + 2 * 4]
4882 fmul dword ptr [ EDX + 9 * 4]
4883 fld dword ptr [ ESI + 2 * 4]
4884 fmul dword ptr [ EDX + 10 * 4]
4885
4886 fxch ST(2)
4887 faddp ST(4), ST(0)
4888 faddp ST(2), ST(0)
4889
4890 fld dword ptr [ ESI + 3 * 4]
4891 fmul dword ptr [ EDX + 14 * 4]
4892
4893 faddp ST(1), ST(0)
4894
4895 mov EBX, dword ptr [ ESI + 2 * 4]
4896 xor EBX, -2147483648
4897
4898 fxch ST(2)
4899 fstp dword ptr [ EDI + 0 * 4]
4900 fstp dword ptr [ EDI + 1 * 4]
4901 fstp dword ptr [ EDI + 2 * 4]
4902 mov dword ptr [ EDI + 3 * 4], EBX
4903
4904p4mpv8_skip:
4905 add EDI, 32
4906 add ESI, EAX
4907 dec ECX
4908 jnz p4mpv8_top
4909
4910
4911p4mpv8_finish:
4912 pop EBX
4913 pop EDI
4914 pop ESI
4915 ret
4916
4917
4918
4919
4920 PUBLIC _gl_x86_transform_points2_general_v12
4921 ALIGN 4
4922_gl_x86_transform_points2_general_v12:
4923
4924 push ESI
4925 push EDI
4926
4927
4928 mov ESI, dword ptr [ ESP + 8+12]
4929 mov EDI, dword ptr [ ESP + 8+4]
4930
4931 mov EDX, dword ptr [ ESP + 8+8]
4932 mov ECX, dword ptr [ ESP + 8+20]
4933
4934 test ECX, ECX
4935 jz p2mgv12_finish
4936
4937 mov EAX, dword ptr [ ESP + 8+16]
4938
4939
4940 ALIGN 4
4941p2mgv12_top:
4942
4943
4944 fld dword ptr [ ESI + 0 * 4]
4945 fmul dword ptr [ EDX + 0 * 4]
4946 fld dword ptr [ ESI + 0 * 4]
4947 fmul dword ptr [ EDX + 1 * 4]
4948 fld dword ptr [ ESI + 0 * 4]
4949 fmul dword ptr [ EDX + 2 * 4]
4950 fld dword ptr [ ESI + 0 * 4]
4951 fmul dword ptr [ EDX + 3 * 4]
4952
4953 fld dword ptr [ ESI + 1 * 4]
4954 fmul dword ptr [ EDX + 4 * 4]
4955 fld dword ptr [ ESI + 1 * 4]
4956 fmul dword ptr [ EDX + 5 * 4]
4957 fld dword ptr [ ESI + 1 * 4]
4958 fmul dword ptr [ EDX + 6 * 4]
4959 fld dword ptr [ ESI + 1 * 4]
4960 fmul dword ptr [ EDX + 7 * 4]
4961
4962 fxch ST(3)
4963 faddp ST(7), ST(0)
4964 fxch ST(1)
4965 faddp ST(5), ST(0)
4966 faddp ST(3), ST(0)
4967 faddp ST(1), ST(0)
4968
4969 fxch ST(3)
4970 fadd dword ptr [ EDX + 12 * 4]
4971 fxch ST(2)
4972 fadd dword ptr [ EDX + 13 * 4]
4973 fxch ST(1)
4974 fadd dword ptr [ EDX + 14 * 4]
4975 fxch ST(3)
4976 fadd dword ptr [ EDX + 15 * 4]
4977
4978 fxch ST(2)
4979 fstp dword ptr [ EDI + 0 * 4]
4980 fstp dword ptr [ EDI + 1 * 4]
4981 fxch ST(1)
4982 fstp dword ptr [ EDI + 2 * 4]
4983 fstp dword ptr [ EDI + 3 * 4]
4984
4985p2mgv12_skip:
4986 add EDI, 48
4987 add ESI, EAX
4988 dec ECX
4989 jnz p2mgv12_top
4990
4991
4992p2mgv12_finish:
4993 pop EDI
4994 pop ESI
4995 ret
4996
4997
4998 PUBLIC _gl_x86_transform_points2_identity_v12
4999 ALIGN 4
5000_gl_x86_transform_points2_identity_v12:
5001
5002 push ESI
5003 push EDI
5004
5005 push EBX
5006
5007 mov ESI, dword ptr [ ESP + 12+12]
5008 mov EDI, dword ptr [ ESP + 12+4]
5009
5010 mov EDX, dword ptr [ ESP + 12+8]
5011 mov ECX, dword ptr [ ESP + 12+20]
5012
5013 test ECX, ECX
5014 jz p2miv12_finish
5015
5016 mov EAX, dword ptr [ ESP + 12+16]
5017
5018
5019 cmp EDI, ESI
5020 je p2miv12_finish
5021
5022 ALIGN 4
5023p2miv12_top:
5024
5025 mov EBX, dword ptr [ ESI + 0 * 4]
5026 mov EDX, dword ptr [ ESI + 1 * 4]
5027
5028 mov dword ptr [ EDI + 0 * 4], EBX
5029 mov dword ptr [ EDI + 1 * 4], EDX
5030 mov dword ptr [ EDI + 2 * 4], 0
5031 mov dword ptr [ EDI + 3 * 4], 1065353216
5032p2miv12_skip:
5033 add EDI, 48
5034 add ESI, EAX
5035 dec ECX
5036 jnz p2miv12_top
5037
5038
5039p2miv12_finish:
5040 pop EBX
5041 pop EDI
5042 pop ESI
5043 ret
5044
5045
5046 PUBLIC _gl_x86_transform_points2_2d_v12
5047 ALIGN 4
5048_gl_x86_transform_points2_2d_v12:
5049
5050 push ESI
5051 push EDI
5052
5053
5054 mov ESI, dword ptr [ ESP + 8+12]
5055 mov EDI, dword ptr [ ESP + 8+4]
5056
5057 mov EDX, dword ptr [ ESP + 8+8]
5058 mov ECX, dword ptr [ ESP + 8+20]
5059
5060 test ECX, ECX
5061 jz p2m2dv12_finish
5062
5063 mov EAX, dword ptr [ ESP + 8+16]
5064
5065
5066 ALIGN 4
5067p2m2dv12_top:
5068
5069
5070 fld dword ptr [ ESI + 0 * 4]
5071 fmul dword ptr [ EDX + 0 * 4]
5072 fld dword ptr [ ESI + 0 * 4]
5073 fmul dword ptr [ EDX + 1 * 4]
5074
5075 fld dword ptr [ ESI + 1 * 4]
5076 fmul dword ptr [ EDX + 4 * 4]
5077 fld dword ptr [ ESI + 1 * 4]
5078 fmul dword ptr [ EDX + 5 * 4]
5079
5080 fxch ST(1)
5081 faddp ST(3), ST(0)
5082 faddp ST(1), ST(0)
5083
5084 fxch ST(1)
5085 fadd dword ptr [ EDX + 12 * 4]
5086 fxch ST(1)
5087 fadd dword ptr [ EDX + 13 * 4]
5088
5089 fxch ST(1)
5090 fstp dword ptr [ EDI + 0 * 4]
5091 fstp dword ptr [ EDI + 1 * 4]
5092
5093 mov dword ptr [ EDI + 2 * 4], 0
5094 mov dword ptr [ EDI + 3 * 4], 1065353216
5095p2m2dv12_skip:
5096 add EDI, 48
5097 add ESI, EAX
5098 dec ECX
5099 jnz p2m2dv12_top
5100
5101
5102p2m2dv12_finish:
5103 pop EDI
5104 pop ESI
5105 ret
5106
5107
5108 PUBLIC _gl_x86_transform_points2_2d_no_rot_v12
5109 ALIGN 4
5110_gl_x86_transform_points2_2d_no_rot_v12:
5111
5112 push ESI
5113 push EDI
5114
5115
5116 mov ESI, dword ptr [ ESP + 8+12]
5117 mov EDI, dword ptr [ ESP + 8+4]
5118
5119 mov EDX, dword ptr [ ESP + 8+8]
5120 mov ECX, dword ptr [ ESP + 8+20]
5121
5122 test ECX, ECX
5123 jz p2m2dnrv12_finish
5124
5125 mov EAX, dword ptr [ ESP + 8+16]
5126
5127
5128 ALIGN 4
5129p2m2dnrv12_top:
5130
5131
5132 fld dword ptr [ ESI + 0 * 4]
5133 fmul dword ptr [ EDX + 0 * 4]
5134
5135 fld dword ptr [ ESI + 1 * 4]
5136 fmul dword ptr [ EDX + 5 * 4]
5137
5138 fxch ST(1)
5139 fadd dword ptr [ EDX + 12 * 4]
5140 fld dword ptr [ EDX + 13 * 4]
5141 fxch ST(2)
5142 faddp ST(2), ST(0)
5143
5144 fstp dword ptr [ EDI + 0 * 4]
5145 fstp dword ptr [ EDI + 1 * 4]
5146
5147 mov dword ptr [ EDI + 2 * 4], 0
5148 mov dword ptr [ EDI + 3 * 4], 1065353216
5149p2m2dnrv12_skip:
5150 add EDI, 48
5151 add ESI, EAX
5152 dec ECX
5153 jnz p2m2dnrv12_top
5154
5155
5156p2m2dnrv12_finish:
5157 pop EDI
5158 pop ESI
5159 ret
5160
5161
5162 PUBLIC _gl_x86_transform_points2_3d_v12
5163 ALIGN 4
5164_gl_x86_transform_points2_3d_v12:
5165
5166 push ESI
5167 push EDI
5168
5169
5170 mov ESI, dword ptr [ ESP + 8+12]
5171 mov EDI, dword ptr [ ESP + 8+4]
5172
5173 mov EDX, dword ptr [ ESP + 8+8]
5174 mov ECX, dword ptr [ ESP + 8+20]
5175
5176 test ECX, ECX
5177 jz p2m3dv12_finish
5178
5179 mov EAX, dword ptr [ ESP + 8+16]
5180
5181
5182 ALIGN 4
5183p2m3dv12_top:
5184
5185
5186 fld dword ptr [ ESI + 0 * 4]
5187 fmul dword ptr [ EDX + 0 * 4]
5188 fld dword ptr [ ESI + 0 * 4]
5189 fmul dword ptr [ EDX + 1 * 4]
5190 fld dword ptr [ ESI + 0 * 4]
5191 fmul dword ptr [ EDX + 2 * 4]
5192
5193 fld dword ptr [ ESI + 1 * 4]
5194 fmul dword ptr [ EDX + 4 * 4]
5195 fld dword ptr [ ESI + 1 * 4]
5196 fmul dword ptr [ EDX + 5 * 4]
5197 fld dword ptr [ ESI + 1 * 4]
5198 fmul dword ptr [ EDX + 6 * 4]
5199
5200 fxch ST(2)
5201 faddp ST(5), ST(0)
5202 faddp ST(3), ST(0)
5203 faddp ST(1), ST(0)
5204
5205 fxch ST(2)
5206 fadd dword ptr [ EDX + 12 * 4]
5207 fxch ST(1)
5208 fadd dword ptr [ EDX + 13 * 4]
5209 fxch ST(2)
5210 fadd dword ptr [ EDX + 14 * 4]
5211
5212 fxch ST(1)
5213 fstp dword ptr [ EDI + 0 * 4]
5214 fxch ST(1)
5215 fstp dword ptr [ EDI + 1 * 4]
5216 fstp dword ptr [ EDI + 2 * 4]
5217
5218 mov dword ptr [ EDI + 3 * 4], 1065353216
5219p2m3dv12_skip:
5220 add EDI, 48
5221 add ESI, EAX
5222 dec ECX
5223 jnz p2m3dv12_top
5224
5225
5226p2m3dv12_finish:
5227 pop EDI
5228 pop ESI
5229 ret
5230
5231
5232 PUBLIC _gl_x86_transform_points2_3d_no_rot_v12
5233 ALIGN 4
5234_gl_x86_transform_points2_3d_no_rot_v12:
5235
5236 push ESI
5237 push EDI
5238
5239 push EBX
5240
5241 mov ESI, dword ptr [ ESP + 12+12]
5242 mov EDI, dword ptr [ ESP + 12+4]
5243
5244 mov EDX, dword ptr [ ESP + 12+8]
5245 mov ECX, dword ptr [ ESP + 12+20]
5246
5247 test ECX, ECX
5248 jz p2m3dnrv12_finish
5249
5250 mov EAX, dword ptr [ ESP + 12+16]
5251
5252
5253 mov EBX, dword ptr [ EDX + 14 * 4]
5254 ALIGN 4
5255p2m3dnrv12_top:
5256
5257
5258 fld dword ptr [ ESI + 0 * 4]
5259 fmul dword ptr [ EDX + 0 * 4]
5260
5261 fld dword ptr [ ESI + 1 * 4]
5262 fmul dword ptr [ EDX + 5 * 4]
5263
5264 fxch ST(1)
5265 fadd dword ptr [ EDX + 12 * 4]
5266 fld dword ptr [ EDX + 13 * 4]
5267 fxch ST(2)
5268 faddp ST(2), ST(0)
5269
5270 fstp dword ptr [ EDI + 0 * 4]
5271 fstp dword ptr [ EDI + 1 * 4]
5272 mov dword ptr [ EDI + 2 * 4], EBX
5273
5274 mov dword ptr [ EDI + 3 * 4], 1065353216
5275p2m3dnrv12_skip:
5276 add EDI, 48
5277 add ESI, EAX
5278 dec ECX
5279 jnz p2m3dnrv12_top
5280
5281
5282p2m3dnrv12_finish:
5283 pop EBX
5284 pop EDI
5285 pop ESI
5286 ret
5287
5288
5289 PUBLIC _gl_x86_transform_points2_perspective_v12
5290 ALIGN 4
5291_gl_x86_transform_points2_perspective_v12:
5292
5293 push ESI
5294 push EDI
5295
5296 push EBX
5297
5298 mov ESI, dword ptr [ ESP + 12+12]
5299 mov EDI, dword ptr [ ESP + 12+4]
5300
5301 mov EDX, dword ptr [ ESP + 12+8]
5302 mov ECX, dword ptr [ ESP + 12+20]
5303
5304 test ECX, ECX
5305 jz p2mpv12_finish
5306
5307 mov EAX, dword ptr [ ESP + 12+16]
5308
5309
5310 mov EBX, dword ptr [ EDX + 14 * 4]
5311 ALIGN 4
5312p2mpv12_top:
5313
5314
5315 fld dword ptr [ ESI + 0 * 4]
5316 fmul dword ptr [ EDX + 0 * 4]
5317
5318 fld dword ptr [ ESI + 1 * 4]
5319 fmul dword ptr [ EDX + 5 * 4]
5320
5321 fxch ST(1)
5322 fstp dword ptr [ EDI + 0 * 4]
5323 fstp dword ptr [ EDI + 1 * 4]
5324 mov dword ptr [ EDI + 2 * 4], EBX
5325 mov dword ptr [ EDI + 3 * 4], 0
5326
5327p2mpv12_skip:
5328 add EDI, 48
5329 add ESI, EAX
5330 dec ECX
5331 jnz p2mpv12_top
5332
5333
5334p2mpv12_finish:
5335 pop EBX
5336 pop EDI
5337 pop ESI
5338 ret
5339
5340
5341 PUBLIC _gl_x86_transform_points3_general_v12
5342 ALIGN 4
5343_gl_x86_transform_points3_general_v12:
5344
5345 push ESI
5346 push EDI
5347
5348
5349 mov ESI, dword ptr [ ESP + 8+12]
5350 mov EDI, dword ptr [ ESP + 8+4]
5351
5352 mov EDX, dword ptr [ ESP + 8+8]
5353 mov ECX, dword ptr [ ESP + 8+20]
5354
5355 test ECX, ECX
5356 jz p3mgv12_finish
5357
5358 mov EAX, dword ptr [ ESP + 8+16]
5359
5360
5361 ALIGN 4
5362p3mgv12_top:
5363
5364
5365 fld dword ptr [ ESI + 0 * 4]
5366 fmul dword ptr [ EDX + 0 * 4]
5367 fld dword ptr [ ESI + 0 * 4]
5368 fmul dword ptr [ EDX + 1 * 4]
5369 fld dword ptr [ ESI + 0 * 4]
5370 fmul dword ptr [ EDX + 2 * 4]
5371 fld dword ptr [ ESI + 0 * 4]
5372 fmul dword ptr [ EDX + 3 * 4]
5373
5374 fld dword ptr [ ESI + 1 * 4]
5375 fmul dword ptr [ EDX + 4 * 4]
5376 fld dword ptr [ ESI + 1 * 4]
5377 fmul dword ptr [ EDX + 5 * 4]
5378 fld dword ptr [ ESI + 1 * 4]
5379 fmul dword ptr [ EDX + 6 * 4]
5380 fld dword ptr [ ESI + 1 * 4]
5381 fmul dword ptr [ EDX + 7 * 4]
5382
5383 fxch ST(3)
5384 faddp ST(7), ST(0)
5385 fxch ST(1)
5386 faddp ST(5), ST(0)
5387 faddp ST(3), ST(0)
5388 faddp ST(1), ST(0)
5389
5390 fld dword ptr [ ESI + 2 * 4]
5391 fmul dword ptr [ EDX + 8 * 4]
5392 fld dword ptr [ ESI + 2 * 4]
5393 fmul dword ptr [ EDX + 9 * 4]
5394 fld dword ptr [ ESI + 2 * 4]
5395 fmul dword ptr [ EDX + 10 * 4]
5396 fld dword ptr [ ESI + 2 * 4]
5397 fmul dword ptr [ EDX + 11 * 4]
5398
5399 fxch ST(3)
5400 faddp ST(7), ST(0)
5401 fxch ST(1)
5402 faddp ST(5), ST(0)
5403 faddp ST(3), ST(0)
5404 faddp ST(1), ST(0)
5405
5406 fxch ST(3)
5407 fadd dword ptr [ EDX + 12 * 4]
5408 fxch ST(2)
5409 fadd dword ptr [ EDX + 13 * 4]
5410 fxch ST(1)
5411 fadd dword ptr [ EDX + 14 * 4]
5412 fxch ST(3)
5413 fadd dword ptr [ EDX + 15 * 4]
5414
5415 fxch ST(2)
5416 fstp dword ptr [ EDI + 0 * 4]
5417 fstp dword ptr [ EDI + 1 * 4]
5418 fxch ST(1)
5419 fstp dword ptr [ EDI + 2 * 4]
5420 fstp dword ptr [ EDI + 3 * 4]
5421
5422p3mgv12_skip:
5423 add EDI, 48
5424 add ESI, EAX
5425 dec ECX
5426 jnz p3mgv12_top
5427
5428
5429p3mgv12_finish:
5430 pop EDI
5431 pop ESI
5432 ret
5433
5434
5435 PUBLIC _gl_x86_transform_points3_identity_v12
5436 ALIGN 4
5437_gl_x86_transform_points3_identity_v12:
5438
5439 push ESI
5440 push EDI
5441
5442 push EBX
5443 push EBP
5444
5445 mov ESI, dword ptr [ ESP + 16+12]
5446 mov EDI, dword ptr [ ESP + 16+4]
5447
5448 mov EDX, dword ptr [ ESP + 16+8]
5449 mov ECX, dword ptr [ ESP + 16+20]
5450
5451 test ECX, ECX
5452 jz p3miv12_finish
5453
5454 mov EAX, dword ptr [ ESP + 16+16]
5455
5456
5457 cmp EDI, ESI
5458 je p3miv12_finish
5459
5460 ALIGN 4
5461p3miv12_top:
5462
5463 mov EBX, dword ptr [ ESI + 0 * 4]
5464 mov EBP, dword ptr [ ESI + 1 * 4]
5465 mov EDX, dword ptr [ ESI + 2 * 4]
5466
5467 mov dword ptr [ EDI + 0 * 4], EBX
5468 mov dword ptr [ EDI + 1 * 4], EBP
5469 mov dword ptr [ EDI + 2 * 4], EDX
5470 mov dword ptr [ EDI + 3 * 4], 1065353216
5471p3miv12_skip:
5472 add EDI, 48
5473 add ESI, EAX
5474 dec ECX
5475 jnz p3miv12_top
5476
5477
5478p3miv12_finish:
5479 pop EBP
5480 pop EBX
5481 pop EDI
5482 pop ESI
5483 ret
5484
5485
5486 PUBLIC _gl_x86_transform_points3_2d_v12
5487 ALIGN 4
5488_gl_x86_transform_points3_2d_v12:
5489
5490 push ESI
5491 push EDI
5492
5493 push EBX
5494
5495 mov ESI, dword ptr [ ESP + 12+12]
5496 mov EDI, dword ptr [ ESP + 12+4]
5497
5498 mov EDX, dword ptr [ ESP + 12+8]
5499 mov ECX, dword ptr [ ESP + 12+20]
5500
5501 test ECX, ECX
5502 jz p3m2dv12_finish
5503
5504 mov EAX, dword ptr [ ESP + 12+16]
5505
5506
5507 ALIGN 4
5508p3m2dv12_top:
5509
5510
5511 fld dword ptr [ ESI + 0 * 4]
5512 fmul dword ptr [ EDX + 0 * 4]
5513 fld dword ptr [ ESI + 0 * 4]
5514 fmul dword ptr [ EDX + 1 * 4]
5515
5516 fld dword ptr [ ESI + 1 * 4]
5517 fmul dword ptr [ EDX + 4 * 4]
5518 fld dword ptr [ ESI + 1 * 4]
5519 fmul dword ptr [ EDX + 5 * 4]
5520
5521 fxch ST(1)
5522 faddp ST(3), ST(0)
5523 faddp ST(1), ST(0)
5524
5525 fxch ST(1)
5526 fadd dword ptr [ EDX + 12 * 4]
5527 fxch ST(1)
5528 fadd dword ptr [ EDX + 13 * 4]
5529
5530 mov EBX, dword ptr [ ESI + 2 * 4]
5531
5532 fxch ST(1)
5533 fstp dword ptr [ EDI + 0 * 4]
5534 fstp dword ptr [ EDI + 1 * 4]
5535 mov dword ptr [ EDI + 2 * 4], EBX
5536
5537 mov dword ptr [ EDI + 3 * 4], 1065353216
5538p3m2dv12_skip:
5539 add EDI, 48
5540 add ESI, EAX
5541 dec ECX
5542 jnz p3m2dv12_top
5543
5544
5545p3m2dv12_finish:
5546 pop EBX
5547 pop EDI
5548 pop ESI
5549 ret
5550
5551
5552 PUBLIC _gl_x86_transform_points3_2d_no_rot_v12
5553 ALIGN 4
5554_gl_x86_transform_points3_2d_no_rot_v12:
5555
5556 push ESI
5557 push EDI
5558
5559 push EBX
5560
5561 mov ESI, dword ptr [ ESP + 12+12]
5562 mov EDI, dword ptr [ ESP + 12+4]
5563
5564 mov EDX, dword ptr [ ESP + 12+8]
5565 mov ECX, dword ptr [ ESP + 12+20]
5566
5567 test ECX, ECX
5568 jz p3m2dnrv12_finish
5569
5570 mov EAX, dword ptr [ ESP + 12+16]
5571
5572
5573 ALIGN 4
5574p3m2dnrv12_top:
5575
5576
5577 fld dword ptr [ ESI + 0 * 4]
5578 fmul dword ptr [ EDX + 0 * 4]
5579
5580 fld dword ptr [ ESI + 1 * 4]
5581 fmul dword ptr [ EDX + 5 * 4]
5582
5583 fxch ST(1)
5584 fadd dword ptr [ EDX + 12 * 4]
5585 fld dword ptr [ EDX + 13 * 4]
5586
5587 fxch ST(2)
5588 faddp ST(2), ST(0)
5589
5590 mov EBX, dword ptr [ ESI + 2 * 4]
5591
5592 fstp dword ptr [ EDI + 0 * 4]
5593 fstp dword ptr [ EDI + 1 * 4]
5594 mov dword ptr [ EDI + 2 * 4], EBX
5595
5596 mov dword ptr [ EDI + 3 * 4], 1065353216
5597p3m2dnrv12_skip:
5598 add EDI, 48
5599 add ESI, EAX
5600 dec ECX
5601 jnz p3m2dnrv12_top
5602
5603
5604p3m2dnrv12_finish:
5605 pop EBX
5606 pop EDI
5607 pop ESI
5608 ret
5609
5610
5611 PUBLIC _gl_x86_transform_points3_3d_v12
5612 ALIGN 4
5613_gl_x86_transform_points3_3d_v12:
5614
5615 push ESI
5616 push EDI
5617
5618
5619 mov ESI, dword ptr [ ESP + 8+12]
5620 mov EDI, dword ptr [ ESP + 8+4]
5621
5622 mov EDX, dword ptr [ ESP + 8+8]
5623 mov ECX, dword ptr [ ESP + 8+20]
5624
5625 test ECX, ECX
5626 jz p3m3dv12_finish
5627
5628 mov EAX, dword ptr [ ESP + 8+16]
5629
5630
5631 ALIGN 4
5632p3m3dv12_top:
5633
5634
5635 fld dword ptr [ ESI + 0 * 4]
5636 fmul dword ptr [ EDX + 0 * 4]
5637 fld dword ptr [ ESI + 0 * 4]
5638 fmul dword ptr [ EDX + 1 * 4]
5639 fld dword ptr [ ESI + 0 * 4]
5640 fmul dword ptr [ EDX + 2 * 4]
5641
5642 fld dword ptr [ ESI + 1 * 4]
5643 fmul dword ptr [ EDX + 4 * 4]
5644 fld dword ptr [ ESI + 1 * 4]
5645 fmul dword ptr [ EDX + 5 * 4]
5646 fld dword ptr [ ESI + 1 * 4]
5647 fmul dword ptr [ EDX + 6 * 4]
5648
5649 fxch ST(2)
5650 faddp ST(5), ST(0)
5651 faddp ST(3), ST(0)
5652 faddp ST(1), ST(0)
5653
5654 fld dword ptr [ ESI + 2 * 4]
5655 fmul dword ptr [ EDX + 8 * 4]
5656 fld dword ptr [ ESI + 2 * 4]
5657 fmul dword ptr [ EDX + 9 * 4]
5658 fld dword ptr [ ESI + 2 * 4]
5659 fmul dword ptr [ EDX + 10 * 4]
5660
5661 fxch ST(2)
5662 faddp ST(5), ST(0)
5663 faddp ST(3), ST(0)
5664 faddp ST(1), ST(0)
5665
5666 fxch ST(2)
5667 fadd dword ptr [ EDX + 12 * 4]
5668 fxch ST(1)
5669 fadd dword ptr [ EDX + 13 * 4]
5670 fxch ST(2)
5671 fadd dword ptr [ EDX + 14 * 4]
5672
5673 fxch ST(1)
5674 fstp dword ptr [ EDI + 0 * 4]
5675 fxch ST(1)
5676 fstp dword ptr [ EDI + 1 * 4]
5677 fstp dword ptr [ EDI + 2 * 4]
5678
5679 mov dword ptr [ EDI + 3 * 4], 1065353216
5680p3m3dv12_skip:
5681 add EDI, 48
5682 add ESI, EAX
5683 dec ECX
5684 jnz p3m3dv12_top
5685
5686
5687p3m3dv12_finish:
5688 pop EDI
5689 pop ESI
5690 ret
5691
5692
5693 PUBLIC _gl_x86_transform_points3_3d_no_rot_v12
5694 ALIGN 4
5695_gl_x86_transform_points3_3d_no_rot_v12:
5696
5697 push ESI
5698 push EDI
5699
5700
5701 mov ESI, dword ptr [ ESP + 8+12]
5702 mov EDI, dword ptr [ ESP + 8+4]
5703
5704 mov EDX, dword ptr [ ESP + 8+8]
5705 mov ECX, dword ptr [ ESP + 8+20]
5706
5707 test ECX, ECX
5708 jz p3m3dnrv12_finish
5709
5710 mov EAX, dword ptr [ ESP + 8+16]
5711
5712
5713 ALIGN 4
5714p3m3dnrv12_top:
5715
5716
5717 fld dword ptr [ ESI + 0 * 4]
5718 fmul dword ptr [ EDX + 0 * 4]
5719
5720 fld dword ptr [ ESI + 1 * 4]
5721 fmul dword ptr [ EDX + 5 * 4]
5722
5723 fld dword ptr [ ESI + 2 * 4]
5724 fmul dword ptr [ EDX + 10 * 4]
5725
5726 fxch ST(2)
5727 fadd dword ptr [ EDX + 12 * 4]
5728 fld dword ptr [ EDX + 13 * 4]
5729 fxch ST(2)
5730 faddp ST(2), ST(0)
5731 fld dword ptr [ EDX + 14 * 4]
5732 fxch ST(3)
5733 faddp ST(3), ST(0)
5734
5735 fstp dword ptr [ EDI + 0 * 4]
5736 fstp dword ptr [ EDI + 1 * 4]
5737 fstp dword ptr [ EDI + 2 * 4]
5738
5739 mov dword ptr [ EDI + 3 * 4], 1065353216
5740p3m3dnrv12_skip:
5741 add EDI, 48
5742 add ESI, EAX
5743 dec ECX
5744 jnz p3m3dnrv12_top
5745
5746
5747p3m3dnrv12_finish:
5748 pop EDI
5749 pop ESI
5750 ret
5751
5752
5753 PUBLIC _gl_x86_transform_points3_perspective_v12
5754 ALIGN 4
5755_gl_x86_transform_points3_perspective_v12:
5756
5757 push ESI
5758 push EDI
5759
5760 push EBX
5761
5762 mov ESI, dword ptr [ ESP + 12+12]
5763 mov EDI, dword ptr [ ESP + 12+4]
5764
5765 mov EDX, dword ptr [ ESP + 12+8]
5766 mov ECX, dword ptr [ ESP + 12+20]
5767
5768 test ECX, ECX
5769 jz p3mpv12_finish
5770
5771 mov EAX, dword ptr [ ESP + 12+16]
5772
5773
5774 ALIGN 4
5775p3mpv12_top:
5776
5777
5778 fld dword ptr [ ESI + 0 * 4]
5779 fmul dword ptr [ EDX + 0 * 4]
5780
5781 fld dword ptr [ ESI + 1 * 4]
5782 fmul dword ptr [ EDX + 5 * 4]
5783
5784 fld dword ptr [ ESI + 2 * 4]
5785 fmul dword ptr [ EDX + 8 * 4]
5786 fld dword ptr [ ESI + 2 * 4]
5787 fmul dword ptr [ EDX + 9 * 4]
5788 fld dword ptr [ ESI + 2 * 4]
5789 fmul dword ptr [ EDX + 10 * 4]
5790
5791 fxch ST(2)
5792 faddp ST(4), ST(0)
5793 faddp ST(2), ST(0)
5794 fld dword ptr [ EDX + 14 * 4]
5795 fxch ST(1)
5796 faddp ST(1), ST(0)
5797
5798 mov EBX, dword ptr [ ESI + 2 * 4]
5799 xor EBX, -2147483648
5800
5801 fxch ST(2)
5802 fstp dword ptr [ EDI + 0 * 4]
5803 fstp dword ptr [ EDI + 1 * 4]
5804 fstp dword ptr [ EDI + 2 * 4]
5805 mov dword ptr [ EDI + 3 * 4], EBX
5806
5807p3mpv12_skip:
5808 add EDI, 48
5809 add ESI, EAX
5810 dec ECX
5811 jnz p3mpv12_top
5812
5813
5814p3mpv12_finish:
5815 pop EBX
5816 pop EDI
5817 pop ESI
5818 ret
5819
5820
5821 PUBLIC _gl_x86_transform_points4_general_v12
5822 ALIGN 4
5823_gl_x86_transform_points4_general_v12:
5824
5825 push ESI
5826 push EDI
5827
5828
5829 mov ESI, dword ptr [ ESP + 8+12]
5830 mov EDI, dword ptr [ ESP + 8+4]
5831
5832 mov EDX, dword ptr [ ESP + 8+8]
5833 mov ECX, dword ptr [ ESP + 8+20]
5834
5835 test ECX, ECX
5836 jz p4mgv12_finish
5837
5838 mov EAX, dword ptr [ ESP + 8+16]
5839
5840
5841 ALIGN 4
5842p4mgv12_top:
5843
5844
5845 fld dword ptr [ ESI + 0 * 4]
5846 fmul dword ptr [ EDX + 0 * 4]
5847 fld dword ptr [ ESI + 0 * 4]
5848 fmul dword ptr [ EDX + 1 * 4]
5849 fld dword ptr [ ESI + 0 * 4]
5850 fmul dword ptr [ EDX + 2 * 4]
5851 fld dword ptr [ ESI + 0 * 4]
5852 fmul dword ptr [ EDX + 3 * 4]
5853
5854 fld dword ptr [ ESI + 1 * 4]
5855 fmul dword ptr [ EDX + 4 * 4]
5856 fld dword ptr [ ESI + 1 * 4]
5857 fmul dword ptr [ EDX + 5 * 4]
5858 fld dword ptr [ ESI + 1 * 4]
5859 fmul dword ptr [ EDX + 6 * 4]
5860 fld dword ptr [ ESI + 1 * 4]
5861 fmul dword ptr [ EDX + 7 * 4]
5862
5863 fxch ST(3)
5864 faddp ST(7), ST(0)
5865 fxch ST(1)
5866 faddp ST(5), ST(0)
5867 faddp ST(3), ST(0)
5868 faddp ST(1), ST(0)
5869
5870 fld dword ptr [ ESI + 2 * 4]
5871 fmul dword ptr [ EDX + 8 * 4]
5872 fld dword ptr [ ESI + 2 * 4]
5873 fmul dword ptr [ EDX + 9 * 4]
5874 fld dword ptr [ ESI + 2 * 4]
5875 fmul dword ptr [ EDX + 10 * 4]
5876 fld dword ptr [ ESI + 2 * 4]
5877 fmul dword ptr [ EDX + 11 * 4]
5878
5879 fxch ST(3)
5880 faddp ST(7), ST(0)
5881 fxch ST(1)
5882 faddp ST(5), ST(0)
5883 faddp ST(3), ST(0)
5884 faddp ST(1), ST(0)
5885
5886 fld dword ptr [ ESI + 3 * 4]
5887 fmul dword ptr [ EDX + 12 * 4]
5888 fld dword ptr [ ESI + 3 * 4]
5889 fmul dword ptr [ EDX + 13 * 4]
5890 fld dword ptr [ ESI + 3 * 4]
5891 fmul dword ptr [ EDX + 14 * 4]
5892 fld dword ptr [ ESI + 3 * 4]
5893 fmul dword ptr [ EDX + 15 * 4]
5894
5895 fxch ST(3)
5896 faddp ST(7), ST(0)
5897 fxch ST(1)
5898 faddp ST(5), ST(0)
5899 faddp ST(3), ST(0)
5900 faddp ST(1), ST(0)
5901
5902 fxch ST(3)
5903 fstp dword ptr [ EDI + 0 * 4]
5904 fxch ST(1)
5905 fstp dword ptr [ EDI + 1 * 4]
5906 fstp dword ptr [ EDI + 2 * 4]
5907 fstp dword ptr [ EDI + 3 * 4]
5908
5909p4mgv12_skip:
5910 add EDI, 48
5911 add ESI, EAX
5912 dec ECX
5913 jnz p4mgv12_top
5914
5915
5916p4mgv12_finish:
5917 pop EDI
5918 pop ESI
5919 ret
5920
5921
5922 PUBLIC _gl_x86_transform_points4_identity_v12
5923 ALIGN 4
5924_gl_x86_transform_points4_identity_v12:
5925
5926 push ESI
5927 push EDI
5928
5929 push EBX
5930
5931 mov ESI, dword ptr [ ESP + 12+12]
5932 mov EDI, dword ptr [ ESP + 12+4]
5933
5934 mov EDX, dword ptr [ ESP + 12+8]
5935 mov ECX, dword ptr [ ESP + 12+20]
5936
5937 test ECX, ECX
5938 jz p4miv12_finish
5939
5940 mov EAX, dword ptr [ ESP + 12+16]
5941
5942
5943 cmp EDI, ESI
5944 je p4miv12_finish
5945
5946 ALIGN 4
5947p4miv12_top:
5948
5949 mov EBX, dword ptr [ ESI + 0 * 4]
5950 mov EDX, dword ptr [ ESI + 1 * 4]
5951
5952 mov dword ptr [ EDI + 0 * 4], EBX
5953 mov dword ptr [ EDI + 1 * 4], EDX
5954
5955 mov EBX, dword ptr [ ESI + 2 * 4]
5956 mov EDX, dword ptr [ ESI + 3 * 4]
5957
5958 mov dword ptr [ EDI + 2 * 4], EBX
5959 mov dword ptr [ EDI + 3 * 4], EDX
5960p4miv12_skip:
5961 add EDI, 48
5962 add ESI, EAX
5963 dec ECX
5964 jnz p4miv12_top
5965
5966
5967p4miv12_finish:
5968 pop EBX
5969 pop EDI
5970 pop ESI
5971 ret
5972
5973
5974 PUBLIC _gl_x86_transform_points4_2d_v12
5975 ALIGN 4
5976_gl_x86_transform_points4_2d_v12:
5977
5978 push ESI
5979 push EDI
5980
5981 push EBX
5982 push EBP
5983
5984 mov ESI, dword ptr [ ESP + 16+12]
5985 mov EDI, dword ptr [ ESP + 16+4]
5986
5987 mov EDX, dword ptr [ ESP + 16+8]
5988 mov ECX, dword ptr [ ESP + 16+20]
5989
5990 test ECX, ECX
5991 jz p4m2dv12_finish
5992
5993 mov EAX, dword ptr [ ESP + 16+16]
5994
5995
5996 ALIGN 4
5997p4m2dv12_top:
5998
5999
6000 fld dword ptr [ ESI + 0 * 4]
6001 fmul dword ptr [ EDX + 0 * 4]
6002 fld dword ptr [ ESI + 0 * 4]
6003 fmul dword ptr [ EDX + 1 * 4]
6004
6005 fld dword ptr [ ESI + 1 * 4]
6006 fmul dword ptr [ EDX + 4 * 4]
6007 fld dword ptr [ ESI + 1 * 4]
6008 fmul dword ptr [ EDX + 5 * 4]
6009
6010 fxch ST(1)
6011 faddp ST(3), ST(0)
6012 faddp ST(1), ST(0)
6013
6014 fld dword ptr [ ESI + 3 * 4]
6015 fmul dword ptr [ EDX + 12 * 4]
6016 fld dword ptr [ ESI + 3 * 4]
6017 fmul dword ptr [ EDX + 13 * 4]
6018
6019 fxch ST(1)
6020 faddp ST(3), ST(0)
6021 faddp ST(1), ST(0)
6022
6023 mov EBX, dword ptr [ ESI + 2 * 4]
6024 mov EBP, dword ptr [ ESI + 3 * 4]
6025
6026 fxch ST(1)
6027 fstp dword ptr [ EDI + 0 * 4]
6028 fstp dword ptr [ EDI + 1 * 4]
6029 mov dword ptr [ EDI + 2 * 4], EBX
6030 mov dword ptr [ EDI + 3 * 4], EBP
6031
6032p4m2dv12_skip:
6033 add EDI, 48
6034 add ESI, EAX
6035 dec ECX
6036 jnz p4m2dv12_top
6037
6038
6039p4m2dv12_finish:
6040 pop EBP
6041 pop EBX
6042 pop EDI
6043 pop ESI
6044 ret
6045
6046
6047 PUBLIC _gl_x86_transform_points4_2d_no_rot_v12
6048 ALIGN 4
6049_gl_x86_transform_points4_2d_no_rot_v12:
6050
6051 push ESI
6052 push EDI
6053
6054 push EBX
6055 push EBP
6056
6057 mov ESI, dword ptr [ ESP + 16+12]
6058 mov EDI, dword ptr [ ESP + 16+4]
6059
6060 mov EDX, dword ptr [ ESP + 16+8]
6061 mov ECX, dword ptr [ ESP + 16+20]
6062
6063 test ECX, ECX
6064 jz p4m2dnrv12_finish
6065
6066 mov EAX, dword ptr [ ESP + 16+16]
6067
6068
6069 ALIGN 4
6070p4m2dnrv12_top:
6071
6072
6073 fld dword ptr [ ESI + 0 * 4]
6074 fmul dword ptr [ EDX + 0 * 4]
6075
6076 fld dword ptr [ ESI + 1 * 4]
6077 fmul dword ptr [ EDX + 5 * 4]
6078
6079 fld dword ptr [ ESI + 3 * 4]
6080 fmul dword ptr [ EDX + 12 * 4]
6081 fld dword ptr [ ESI + 3 * 4]
6082 fmul dword ptr [ EDX + 13 * 4]
6083
6084 fxch ST(1)
6085 faddp ST(3), ST(0)
6086 faddp ST(1), ST(0)
6087
6088 mov EBX, dword ptr [ ESI + 2 * 4]
6089 mov EBP, dword ptr [ ESI + 3 * 4]
6090
6091 fxch ST(1)
6092 fstp dword ptr [ EDI + 0 * 4]
6093 fstp dword ptr [ EDI + 1 * 4]
6094 mov dword ptr [ EDI + 2 * 4], EBX
6095 mov dword ptr [ EDI + 3 * 4], EBP
6096
6097p4m2dnrv12_skip:
6098 add EDI, 48
6099 add ESI, EAX
6100 dec ECX
6101 jnz p4m2dnrv12_top
6102
6103
6104p4m2dnrv12_finish:
6105 pop EBP
6106 pop EBX
6107 pop EDI
6108 pop ESI
6109 ret
6110
6111
6112 PUBLIC _gl_x86_transform_points4_3d_v12
6113 ALIGN 4
6114_gl_x86_transform_points4_3d_v12:
6115
6116 push ESI
6117 push EDI
6118
6119 push EBX
6120
6121 mov ESI, dword ptr [ ESP + 12+12]
6122 mov EDI, dword ptr [ ESP + 12+4]
6123
6124 mov EDX, dword ptr [ ESP + 12+8]
6125 mov ECX, dword ptr [ ESP + 12+20]
6126
6127 test ECX, ECX
6128 jz p4m3dv12_finish
6129
6130 mov EAX, dword ptr [ ESP + 12+16]
6131
6132
6133 ALIGN 4
6134p4m3dv12_top:
6135
6136
6137 fld dword ptr [ ESI + 0 * 4]
6138 fmul dword ptr [ EDX + 0 * 4]
6139 fld dword ptr [ ESI + 0 * 4]
6140 fmul dword ptr [ EDX + 1 * 4]
6141 fld dword ptr [ ESI + 0 * 4]
6142 fmul dword ptr [ EDX + 2 * 4]
6143
6144 fld dword ptr [ ESI + 1 * 4]
6145 fmul dword ptr [ EDX + 4 * 4]
6146 fld dword ptr [ ESI + 1 * 4]
6147 fmul dword ptr [ EDX + 5 * 4]
6148 fld dword ptr [ ESI + 1 * 4]
6149 fmul dword ptr [ EDX + 6 * 4]
6150
6151 fxch ST(2)
6152 faddp ST(5), ST(0)
6153 faddp ST(3), ST(0)
6154 faddp ST(1), ST(0)
6155
6156 fld dword ptr [ ESI + 2 * 4]
6157 fmul dword ptr [ EDX + 8 * 4]
6158 fld dword ptr [ ESI + 2 * 4]
6159 fmul dword ptr [ EDX + 9 * 4]
6160 fld dword ptr [ ESI + 2 * 4]
6161 fmul dword ptr [ EDX + 10 * 4]
6162
6163 fxch ST(2)
6164 faddp ST(5), ST(0)
6165 faddp ST(3), ST(0)
6166 faddp ST(1), ST(0)
6167
6168 fld dword ptr [ ESI + 3 * 4]
6169 fmul dword ptr [ EDX + 12 * 4]
6170 fld dword ptr [ ESI + 3 * 4]
6171 fmul dword ptr [ EDX + 13 * 4]
6172 fld dword ptr [ ESI + 3 * 4]
6173 fmul dword ptr [ EDX + 14 * 4]
6174
6175 fxch ST(2)
6176 faddp ST(5), ST(0)
6177 faddp ST(3), ST(0)
6178 faddp ST(1), ST(0)
6179
6180 mov EBX, dword ptr [ ESI + 3 * 4]
6181
6182 fxch ST(2)
6183 fstp dword ptr [ EDI + 0 * 4]
6184 fstp dword ptr [ EDI + 1 * 4]
6185 fstp dword ptr [ EDI + 2 * 4]
6186 mov dword ptr [ EDI + 3 * 4], EBX
6187
6188p4m3dv12_skip:
6189 add EDI, 48
6190 add ESI, EAX
6191 dec ECX
6192 jnz p4m3dv12_top
6193
6194
6195p4m3dv12_finish:
6196 pop EBX
6197 pop EDI
6198 pop ESI
6199 ret
6200
6201
6202 PUBLIC _gl_x86_transform_points4_3d_no_rot_v12
6203 ALIGN 4
6204_gl_x86_transform_points4_3d_no_rot_v12:
6205
6206 push ESI
6207 push EDI
6208
6209 push EBX
6210
6211 mov ESI, dword ptr [ ESP + 12+12]
6212 mov EDI, dword ptr [ ESP + 12+4]
6213
6214 mov EDX, dword ptr [ ESP + 12+8]
6215 mov ECX, dword ptr [ ESP + 12+20]
6216
6217 test ECX, ECX
6218 jz p4m3dnrv12_finish
6219
6220 mov EAX, dword ptr [ ESP + 12+16]
6221
6222
6223 ALIGN 4
6224p4m3dnrv12_top:
6225
6226
6227 fld dword ptr [ ESI + 0 * 4]
6228 fmul dword ptr [ EDX + 0 * 4]
6229
6230 fld dword ptr [ ESI + 1 * 4]
6231 fmul dword ptr [ EDX + 5 * 4]
6232
6233 fld dword ptr [ ESI + 2 * 4]
6234 fmul dword ptr [ EDX + 10 * 4]
6235
6236 fld dword ptr [ ESI + 3 * 4]
6237 fmul dword ptr [ EDX + 12 * 4]
6238 fld dword ptr [ ESI + 3 * 4]
6239 fmul dword ptr [ EDX + 13 * 4]
6240 fld dword ptr [ ESI + 3 * 4]
6241 fmul dword ptr [ EDX + 14 * 4]
6242
6243 fxch ST(2)
6244 faddp ST(5), ST(0)
6245 faddp ST(3), ST(0)
6246 faddp ST(1), ST(0)
6247
6248 mov EBX, dword ptr [ ESI + 3 * 4]
6249
6250 fxch ST(2)
6251 fstp dword ptr [ EDI + 0 * 4]
6252 fstp dword ptr [ EDI + 1 * 4]
6253 fstp dword ptr [ EDI + 2 * 4]
6254 mov dword ptr [ EDI + 3 * 4], EBX
6255
6256p4m3dnrv12_skip:
6257 add EDI, 48
6258 add ESI, EAX
6259 dec ECX
6260 jnz p4m3dnrv12_top
6261
6262
6263p4m3dnrv12_finish:
6264 pop EBX
6265 pop EDI
6266 pop ESI
6267 ret
6268
6269
6270 PUBLIC _gl_x86_transform_points4_perspective_v12
6271 ALIGN 4
6272_gl_x86_transform_points4_perspective_v12:
6273
6274 push ESI
6275 push EDI
6276
6277 push EBX
6278
6279 mov ESI, dword ptr [ ESP + 12+12]
6280 mov EDI, dword ptr [ ESP + 12+4]
6281
6282 mov EDX, dword ptr [ ESP + 12+8]
6283 mov ECX, dword ptr [ ESP + 12+20]
6284
6285 test ECX, ECX
6286 jz p4mpv12_finish
6287
6288 mov EAX, dword ptr [ ESP + 12+16]
6289
6290
6291 ALIGN 4
6292p4mpv12_top:
6293
6294
6295 fld dword ptr [ ESI + 0 * 4]
6296 fmul dword ptr [ EDX + 0 * 4]
6297
6298 fld dword ptr [ ESI + 1 * 4]
6299 fmul dword ptr [ EDX + 5 * 4]
6300
6301 fld dword ptr [ ESI + 2 * 4]
6302 fmul dword ptr [ EDX + 8 * 4]
6303 fld dword ptr [ ESI + 2 * 4]
6304 fmul dword ptr [ EDX + 9 * 4]
6305 fld dword ptr [ ESI + 2 * 4]
6306 fmul dword ptr [ EDX + 10 * 4]
6307
6308 fxch ST(2)
6309 faddp ST(4), ST(0)
6310 faddp ST(2), ST(0)
6311
6312 fld dword ptr [ ESI + 3 * 4]
6313 fmul dword ptr [ EDX + 14 * 4]
6314
6315 faddp ST(1), ST(0)
6316
6317 mov EBX, dword ptr [ ESI + 2 * 4]
6318 xor EBX, -2147483648
6319
6320 fxch ST(2)
6321 fstp dword ptr [ EDI + 0 * 4]
6322 fstp dword ptr [ EDI + 1 * 4]
6323 fstp dword ptr [ EDI + 2 * 4]
6324 mov dword ptr [ EDI + 3 * 4], EBX
6325
6326p4mpv12_skip:
6327 add EDI, 48
6328 add ESI, EAX
6329 dec ECX
6330 jnz p4mpv12_top
6331
6332
6333p4mpv12_finish:
6334 pop EBX
6335 pop EDI
6336 pop ESI
6337 ret
6338
6339
6340
6341
6342 PUBLIC _gl_x86_transform_points2_general_v16
6343 ALIGN 4
6344_gl_x86_transform_points2_general_v16:
6345
6346 push ESI
6347 push EDI
6348
6349
6350 mov ESI, dword ptr [ ESP + 8+12]
6351 mov EDI, dword ptr [ ESP + 8+4]
6352
6353 mov EDX, dword ptr [ ESP + 8+8]
6354 mov ECX, dword ptr [ ESP + 8+20]
6355
6356 test ECX, ECX
6357 jz p2mgv16_finish
6358
6359 mov EAX, dword ptr [ ESP + 8+16]
6360
6361
6362 ALIGN 4
6363p2mgv16_top:
6364
6365
6366 fld dword ptr [ ESI + 0 * 4]
6367 fmul dword ptr [ EDX + 0 * 4]
6368 fld dword ptr [ ESI + 0 * 4]
6369 fmul dword ptr [ EDX + 1 * 4]
6370 fld dword ptr [ ESI + 0 * 4]
6371 fmul dword ptr [ EDX + 2 * 4]
6372 fld dword ptr [ ESI + 0 * 4]
6373 fmul dword ptr [ EDX + 3 * 4]
6374
6375 fld dword ptr [ ESI + 1 * 4]
6376 fmul dword ptr [ EDX + 4 * 4]
6377 fld dword ptr [ ESI + 1 * 4]
6378 fmul dword ptr [ EDX + 5 * 4]
6379 fld dword ptr [ ESI + 1 * 4]
6380 fmul dword ptr [ EDX + 6 * 4]
6381 fld dword ptr [ ESI + 1 * 4]
6382 fmul dword ptr [ EDX + 7 * 4]
6383
6384 fxch ST(3)
6385 faddp ST(7), ST(0)
6386 fxch ST(1)
6387 faddp ST(5), ST(0)
6388 faddp ST(3), ST(0)
6389 faddp ST(1), ST(0)
6390
6391 fxch ST(3)
6392 fadd dword ptr [ EDX + 12 * 4]
6393 fxch ST(2)
6394 fadd dword ptr [ EDX + 13 * 4]
6395 fxch ST(1)
6396 fadd dword ptr [ EDX + 14 * 4]
6397 fxch ST(3)
6398 fadd dword ptr [ EDX + 15 * 4]
6399
6400 fxch ST(2)
6401 fstp dword ptr [ EDI + 0 * 4]
6402 fstp dword ptr [ EDI + 1 * 4]
6403 fxch ST(1)
6404 fstp dword ptr [ EDI + 2 * 4]
6405 fstp dword ptr [ EDI + 3 * 4]
6406
6407p2mgv16_skip:
6408 add EDI, 64
6409 add ESI, EAX
6410 dec ECX
6411 jnz p2mgv16_top
6412
6413
6414p2mgv16_finish:
6415 pop EDI
6416 pop ESI
6417 ret
6418
6419
6420 PUBLIC _gl_x86_transform_points2_identity_v16
6421 ALIGN 4
6422_gl_x86_transform_points2_identity_v16:
6423
6424 push ESI
6425 push EDI
6426
6427 push EBX
6428
6429 mov ESI, dword ptr [ ESP + 12+12]
6430 mov EDI, dword ptr [ ESP + 12+4]
6431
6432 mov EDX, dword ptr [ ESP + 12+8]
6433 mov ECX, dword ptr [ ESP + 12+20]
6434
6435 test ECX, ECX
6436 jz p2miv16_finish
6437
6438 mov EAX, dword ptr [ ESP + 12+16]
6439
6440
6441 cmp EDI, ESI
6442 je p2miv16_finish
6443
6444 ALIGN 4
6445p2miv16_top:
6446
6447 mov EBX, dword ptr [ ESI + 0 * 4]
6448 mov EDX, dword ptr [ ESI + 1 * 4]
6449
6450 mov dword ptr [ EDI + 0 * 4], EBX
6451 mov dword ptr [ EDI + 1 * 4], EDX
6452 mov dword ptr [ EDI + 2 * 4], 0
6453 mov dword ptr [ EDI + 3 * 4], 1065353216
6454p2miv16_skip:
6455 add EDI, 64
6456 add ESI, EAX
6457 dec ECX
6458 jnz p2miv16_top
6459
6460
6461p2miv16_finish:
6462 pop EBX
6463 pop EDI
6464 pop ESI
6465 ret
6466
6467
6468 PUBLIC _gl_x86_transform_points2_2d_v16
6469 ALIGN 4
6470_gl_x86_transform_points2_2d_v16:
6471
6472 push ESI
6473 push EDI
6474
6475
6476 mov ESI, dword ptr [ ESP + 8+12]
6477 mov EDI, dword ptr [ ESP + 8+4]
6478
6479 mov EDX, dword ptr [ ESP + 8+8]
6480 mov ECX, dword ptr [ ESP + 8+20]
6481
6482 test ECX, ECX
6483 jz p2m2dv16_finish
6484
6485 mov EAX, dword ptr [ ESP + 8+16]
6486
6487
6488 ALIGN 4
6489p2m2dv16_top:
6490
6491
6492 fld dword ptr [ ESI + 0 * 4]
6493 fmul dword ptr [ EDX + 0 * 4]
6494 fld dword ptr [ ESI + 0 * 4]
6495 fmul dword ptr [ EDX + 1 * 4]
6496
6497 fld dword ptr [ ESI + 1 * 4]
6498 fmul dword ptr [ EDX + 4 * 4]
6499 fld dword ptr [ ESI + 1 * 4]
6500 fmul dword ptr [ EDX + 5 * 4]
6501
6502 fxch ST(1)
6503 faddp ST(3), ST(0)
6504 faddp ST(1), ST(0)
6505
6506 fxch ST(1)
6507 fadd dword ptr [ EDX + 12 * 4]
6508 fxch ST(1)
6509 fadd dword ptr [ EDX + 13 * 4]
6510
6511 fxch ST(1)
6512 fstp dword ptr [ EDI + 0 * 4]
6513 fstp dword ptr [ EDI + 1 * 4]
6514
6515 mov dword ptr [ EDI + 2 * 4], 0
6516 mov dword ptr [ EDI + 3 * 4], 1065353216
6517p2m2dv16_skip:
6518 add EDI, 64
6519 add ESI, EAX
6520 dec ECX
6521 jnz p2m2dv16_top
6522
6523
6524p2m2dv16_finish:
6525 pop EDI
6526 pop ESI
6527 ret
6528
6529
6530 PUBLIC _gl_x86_transform_points2_2d_no_rot_v16
6531 ALIGN 4
6532_gl_x86_transform_points2_2d_no_rot_v16:
6533
6534 push ESI
6535 push EDI
6536
6537
6538 mov ESI, dword ptr [ ESP + 8+12]
6539 mov EDI, dword ptr [ ESP + 8+4]
6540
6541 mov EDX, dword ptr [ ESP + 8+8]
6542 mov ECX, dword ptr [ ESP + 8+20]
6543
6544 test ECX, ECX
6545 jz p2m2dnrv16_finish
6546
6547 mov EAX, dword ptr [ ESP + 8+16]
6548
6549
6550 ALIGN 4
6551p2m2dnrv16_top:
6552
6553
6554 fld dword ptr [ ESI + 0 * 4]
6555 fmul dword ptr [ EDX + 0 * 4]
6556
6557 fld dword ptr [ ESI + 1 * 4]
6558 fmul dword ptr [ EDX + 5 * 4]
6559
6560 fxch ST(1)
6561 fadd dword ptr [ EDX + 12 * 4]
6562 fld dword ptr [ EDX + 13 * 4]
6563 fxch ST(2)
6564 faddp ST(2), ST(0)
6565
6566 fstp dword ptr [ EDI + 0 * 4]
6567 fstp dword ptr [ EDI + 1 * 4]
6568
6569 mov dword ptr [ EDI + 2 * 4], 0
6570 mov dword ptr [ EDI + 3 * 4], 1065353216
6571p2m2dnrv16_skip:
6572 add EDI, 64
6573 add ESI, EAX
6574 dec ECX
6575 jnz p2m2dnrv16_top
6576
6577
6578p2m2dnrv16_finish:
6579 pop EDI
6580 pop ESI
6581 ret
6582
6583
6584 PUBLIC _gl_x86_transform_points2_3d_v16
6585 ALIGN 4
6586_gl_x86_transform_points2_3d_v16:
6587
6588 push ESI
6589 push EDI
6590
6591
6592 mov ESI, dword ptr [ ESP + 8+12]
6593 mov EDI, dword ptr [ ESP + 8+4]
6594
6595 mov EDX, dword ptr [ ESP + 8+8]
6596 mov ECX, dword ptr [ ESP + 8+20]
6597
6598 test ECX, ECX
6599 jz p2m3dv16_finish
6600
6601 mov EAX, dword ptr [ ESP + 8+16]
6602
6603
6604 ALIGN 4
6605p2m3dv16_top:
6606
6607
6608 fld dword ptr [ ESI + 0 * 4]
6609 fmul dword ptr [ EDX + 0 * 4]
6610 fld dword ptr [ ESI + 0 * 4]
6611 fmul dword ptr [ EDX + 1 * 4]
6612 fld dword ptr [ ESI + 0 * 4]
6613 fmul dword ptr [ EDX + 2 * 4]
6614
6615 fld dword ptr [ ESI + 1 * 4]
6616 fmul dword ptr [ EDX + 4 * 4]
6617 fld dword ptr [ ESI + 1 * 4]
6618 fmul dword ptr [ EDX + 5 * 4]
6619 fld dword ptr [ ESI + 1 * 4]
6620 fmul dword ptr [ EDX + 6 * 4]
6621
6622 fxch ST(2)
6623 faddp ST(5), ST(0)
6624 faddp ST(3), ST(0)
6625 faddp ST(1), ST(0)
6626
6627 fxch ST(2)
6628 fadd dword ptr [ EDX + 12 * 4]
6629 fxch ST(1)
6630 fadd dword ptr [ EDX + 13 * 4]
6631 fxch ST(2)
6632 fadd dword ptr [ EDX + 14 * 4]
6633
6634 fxch ST(1)
6635 fstp dword ptr [ EDI + 0 * 4]
6636 fxch ST(1)
6637 fstp dword ptr [ EDI + 1 * 4]
6638 fstp dword ptr [ EDI + 2 * 4]
6639
6640 mov dword ptr [ EDI + 3 * 4], 1065353216
6641p2m3dv16_skip:
6642 add EDI, 64
6643 add ESI, EAX
6644 dec ECX
6645 jnz p2m3dv16_top
6646
6647
6648p2m3dv16_finish:
6649 pop EDI
6650 pop ESI
6651 ret
6652
6653
6654 PUBLIC _gl_x86_transform_points2_3d_no_rot_v16
6655 ALIGN 4
6656_gl_x86_transform_points2_3d_no_rot_v16:
6657
6658 push ESI
6659 push EDI
6660
6661 push EBX
6662
6663 mov ESI, dword ptr [ ESP + 12+12]
6664 mov EDI, dword ptr [ ESP + 12+4]
6665
6666 mov EDX, dword ptr [ ESP + 12+8]
6667 mov ECX, dword ptr [ ESP + 12+20]
6668
6669 test ECX, ECX
6670 jz p2m3dnrv16_finish
6671
6672 mov EAX, dword ptr [ ESP + 12+16]
6673
6674
6675 mov EBX, dword ptr [ EDX + 14 * 4]
6676 ALIGN 4
6677p2m3dnrv16_top:
6678
6679
6680 fld dword ptr [ ESI + 0 * 4]
6681 fmul dword ptr [ EDX + 0 * 4]
6682
6683 fld dword ptr [ ESI + 1 * 4]
6684 fmul dword ptr [ EDX + 5 * 4]
6685
6686 fxch ST(1)
6687 fadd dword ptr [ EDX + 12 * 4]
6688 fld dword ptr [ EDX + 13 * 4]
6689 fxch ST(2)
6690 faddp ST(2), ST(0)
6691
6692 fstp dword ptr [ EDI + 0 * 4]
6693 fstp dword ptr [ EDI + 1 * 4]
6694 mov dword ptr [ EDI + 2 * 4], EBX
6695
6696 mov dword ptr [ EDI + 3 * 4], 1065353216
6697p2m3dnrv16_skip:
6698 add EDI, 64
6699 add ESI, EAX
6700 dec ECX
6701 jnz p2m3dnrv16_top
6702
6703
6704p2m3dnrv16_finish:
6705 pop EBX
6706 pop EDI
6707 pop ESI
6708 ret
6709
6710
6711 PUBLIC _gl_x86_transform_points2_perspective_v16
6712 ALIGN 4
6713_gl_x86_transform_points2_perspective_v16:
6714
6715 push ESI
6716 push EDI
6717
6718 push EBX
6719
6720 mov ESI, dword ptr [ ESP + 12+12]
6721 mov EDI, dword ptr [ ESP + 12+4]
6722
6723 mov EDX, dword ptr [ ESP + 12+8]
6724 mov ECX, dword ptr [ ESP + 12+20]
6725
6726 test ECX, ECX
6727 jz p2mpv16_finish
6728
6729 mov EAX, dword ptr [ ESP + 12+16]
6730
6731
6732 mov EBX, dword ptr [ EDX + 14 * 4]
6733 ALIGN 4
6734p2mpv16_top:
6735
6736
6737 fld dword ptr [ ESI + 0 * 4]
6738 fmul dword ptr [ EDX + 0 * 4]
6739
6740 fld dword ptr [ ESI + 1 * 4]
6741 fmul dword ptr [ EDX + 5 * 4]
6742
6743 fxch ST(1)
6744 fstp dword ptr [ EDI + 0 * 4]
6745 fstp dword ptr [ EDI + 1 * 4]
6746 mov dword ptr [ EDI + 2 * 4], EBX
6747 mov dword ptr [ EDI + 3 * 4], 0
6748
6749p2mpv16_skip:
6750 add EDI, 64
6751 add ESI, EAX
6752 dec ECX
6753 jnz p2mpv16_top
6754
6755
6756p2mpv16_finish:
6757 pop EBX
6758 pop EDI
6759 pop ESI
6760 ret
6761
6762
6763 PUBLIC _gl_x86_transform_points3_general_v16
6764 ALIGN 4
6765_gl_x86_transform_points3_general_v16:
6766
6767 push ESI
6768 push EDI
6769
6770
6771 mov ESI, dword ptr [ ESP + 8+12]
6772 mov EDI, dword ptr [ ESP + 8+4]
6773
6774 mov EDX, dword ptr [ ESP + 8+8]
6775 mov ECX, dword ptr [ ESP + 8+20]
6776
6777 test ECX, ECX
6778 jz p3mgv16_finish
6779
6780 mov EAX, dword ptr [ ESP + 8+16]
6781
6782
6783 ALIGN 4
6784p3mgv16_top:
6785
6786
6787 fld dword ptr [ ESI + 0 * 4]
6788 fmul dword ptr [ EDX + 0 * 4]
6789 fld dword ptr [ ESI + 0 * 4]
6790 fmul dword ptr [ EDX + 1 * 4]
6791 fld dword ptr [ ESI + 0 * 4]
6792 fmul dword ptr [ EDX + 2 * 4]
6793 fld dword ptr [ ESI + 0 * 4]
6794 fmul dword ptr [ EDX + 3 * 4]
6795
6796 fld dword ptr [ ESI + 1 * 4]
6797 fmul dword ptr [ EDX + 4 * 4]
6798 fld dword ptr [ ESI + 1 * 4]
6799 fmul dword ptr [ EDX + 5 * 4]
6800 fld dword ptr [ ESI + 1 * 4]
6801 fmul dword ptr [ EDX + 6 * 4]
6802 fld dword ptr [ ESI + 1 * 4]
6803 fmul dword ptr [ EDX + 7 * 4]
6804
6805 fxch ST(3)
6806 faddp ST(7), ST(0)
6807 fxch ST(1)
6808 faddp ST(5), ST(0)
6809 faddp ST(3), ST(0)
6810 faddp ST(1), ST(0)
6811
6812 fld dword ptr [ ESI + 2 * 4]
6813 fmul dword ptr [ EDX + 8 * 4]
6814 fld dword ptr [ ESI + 2 * 4]
6815 fmul dword ptr [ EDX + 9 * 4]
6816 fld dword ptr [ ESI + 2 * 4]
6817 fmul dword ptr [ EDX + 10 * 4]
6818 fld dword ptr [ ESI + 2 * 4]
6819 fmul dword ptr [ EDX + 11 * 4]
6820
6821 fxch ST(3)
6822 faddp ST(7), ST(0)
6823 fxch ST(1)
6824 faddp ST(5), ST(0)
6825 faddp ST(3), ST(0)
6826 faddp ST(1), ST(0)
6827
6828 fxch ST(3)
6829 fadd dword ptr [ EDX + 12 * 4]
6830 fxch ST(2)
6831 fadd dword ptr [ EDX + 13 * 4]
6832 fxch ST(1)
6833 fadd dword ptr [ EDX + 14 * 4]
6834 fxch ST(3)
6835 fadd dword ptr [ EDX + 15 * 4]
6836
6837 fxch ST(2)
6838 fstp dword ptr [ EDI + 0 * 4]
6839 fstp dword ptr [ EDI + 1 * 4]
6840 fxch ST(1)
6841 fstp dword ptr [ EDI + 2 * 4]
6842 fstp dword ptr [ EDI + 3 * 4]
6843
6844p3mgv16_skip:
6845 add EDI, 64
6846 add ESI, EAX
6847 dec ECX
6848 jnz p3mgv16_top
6849
6850
6851p3mgv16_finish:
6852 pop EDI
6853 pop ESI
6854 ret
6855
6856
6857 PUBLIC _gl_x86_transform_points3_identity_v16
6858 ALIGN 4
6859_gl_x86_transform_points3_identity_v16:
6860
6861 push ESI
6862 push EDI
6863
6864 push EBX
6865 push EBP
6866
6867 mov ESI, dword ptr [ ESP + 16+12]
6868 mov EDI, dword ptr [ ESP + 16+4]
6869
6870 mov EDX, dword ptr [ ESP + 16+8]
6871 mov ECX, dword ptr [ ESP + 16+20]
6872
6873 test ECX, ECX
6874 jz p3miv16_finish
6875
6876 mov EAX, dword ptr [ ESP + 16+16]
6877
6878
6879 cmp EDI, ESI
6880 je p3miv16_finish
6881
6882 ALIGN 4
6883p3miv16_top:
6884
6885 mov EBX, dword ptr [ ESI + 0 * 4]
6886 mov EBP, dword ptr [ ESI + 1 * 4]
6887 mov EDX, dword ptr [ ESI + 2 * 4]
6888
6889 mov dword ptr [ EDI + 0 * 4], EBX
6890 mov dword ptr [ EDI + 1 * 4], EBP
6891 mov dword ptr [ EDI + 2 * 4], EDX
6892 mov dword ptr [ EDI + 3 * 4], 1065353216
6893p3miv16_skip:
6894 add EDI, 64
6895 add ESI, EAX
6896 dec ECX
6897 jnz p3miv16_top
6898
6899
6900p3miv16_finish:
6901 pop EBP
6902 pop EBX
6903 pop EDI
6904 pop ESI
6905 ret
6906
6907
6908 PUBLIC _gl_x86_transform_points3_2d_v16
6909 ALIGN 4
6910_gl_x86_transform_points3_2d_v16:
6911
6912 push ESI
6913 push EDI
6914
6915 push EBX
6916
6917 mov ESI, dword ptr [ ESP + 12+12]
6918 mov EDI, dword ptr [ ESP + 12+4]
6919
6920 mov EDX, dword ptr [ ESP + 12+8]
6921 mov ECX, dword ptr [ ESP + 12+20]
6922
6923 test ECX, ECX
6924 jz p3m2dv16_finish
6925
6926 mov EAX, dword ptr [ ESP + 12+16]
6927
6928
6929 ALIGN 4
6930p3m2dv16_top:
6931
6932
6933 fld dword ptr [ ESI + 0 * 4]
6934 fmul dword ptr [ EDX + 0 * 4]
6935 fld dword ptr [ ESI + 0 * 4]
6936 fmul dword ptr [ EDX + 1 * 4]
6937
6938 fld dword ptr [ ESI + 1 * 4]
6939 fmul dword ptr [ EDX + 4 * 4]
6940 fld dword ptr [ ESI + 1 * 4]
6941 fmul dword ptr [ EDX + 5 * 4]
6942
6943 fxch ST(1)
6944 faddp ST(3), ST(0)
6945 faddp ST(1), ST(0)
6946
6947 fxch ST(1)
6948 fadd dword ptr [ EDX + 12 * 4]
6949 fxch ST(1)
6950 fadd dword ptr [ EDX + 13 * 4]
6951
6952 mov EBX, dword ptr [ ESI + 2 * 4]
6953
6954 fxch ST(1)
6955 fstp dword ptr [ EDI + 0 * 4]
6956 fstp dword ptr [ EDI + 1 * 4]
6957 mov dword ptr [ EDI + 2 * 4], EBX
6958
6959 mov dword ptr [ EDI + 3 * 4], 1065353216
6960p3m2dv16_skip:
6961 add EDI, 64
6962 add ESI, EAX
6963 dec ECX
6964 jnz p3m2dv16_top
6965
6966
6967p3m2dv16_finish:
6968 pop EBX
6969 pop EDI
6970 pop ESI
6971 ret
6972
6973
6974 PUBLIC _gl_x86_transform_points3_2d_no_rot_v16
6975 ALIGN 4
6976_gl_x86_transform_points3_2d_no_rot_v16:
6977
6978 push ESI
6979 push EDI
6980
6981 push EBX
6982
6983 mov ESI, dword ptr [ ESP + 12+12]
6984 mov EDI, dword ptr [ ESP + 12+4]
6985
6986 mov EDX, dword ptr [ ESP + 12+8]
6987 mov ECX, dword ptr [ ESP + 12+20]
6988
6989 test ECX, ECX
6990 jz p3m2dnrv16_finish
6991
6992 mov EAX, dword ptr [ ESP + 12+16]
6993
6994
6995 ALIGN 4
6996p3m2dnrv16_top:
6997
6998
6999 fld dword ptr [ ESI + 0 * 4]
7000 fmul dword ptr [ EDX + 0 * 4]
7001
7002 fld dword ptr [ ESI + 1 * 4]
7003 fmul dword ptr [ EDX + 5 * 4]
7004
7005 fxch ST(1)
7006 fadd dword ptr [ EDX + 12 * 4]
7007 fld dword ptr [ EDX + 13 * 4]
7008
7009 fxch ST(2)
7010 faddp ST(2), ST(0)
7011
7012 mov EBX, dword ptr [ ESI + 2 * 4]
7013
7014 fstp dword ptr [ EDI + 0 * 4]
7015 fstp dword ptr [ EDI + 1 * 4]
7016 mov dword ptr [ EDI + 2 * 4], EBX
7017
7018 mov dword ptr [ EDI + 3 * 4], 1065353216
7019p3m2dnrv16_skip:
7020 add EDI, 64
7021 add ESI, EAX
7022 dec ECX
7023 jnz p3m2dnrv16_top
7024
7025
7026p3m2dnrv16_finish:
7027 pop EBX
7028 pop EDI
7029 pop ESI
7030 ret
7031
7032
7033 PUBLIC _gl_x86_transform_points3_3d_v16
7034 ALIGN 4
7035_gl_x86_transform_points3_3d_v16:
7036
7037 push ESI
7038 push EDI
7039
7040
7041 mov ESI, dword ptr [ ESP + 8+12]
7042 mov EDI, dword ptr [ ESP + 8+4]
7043
7044 mov EDX, dword ptr [ ESP + 8+8]
7045 mov ECX, dword ptr [ ESP + 8+20]
7046
7047 test ECX, ECX
7048 jz p3m3dv16_finish
7049
7050 mov EAX, dword ptr [ ESP + 8+16]
7051
7052
7053 ALIGN 4
7054p3m3dv16_top:
7055
7056
7057 fld dword ptr [ ESI + 0 * 4]
7058 fmul dword ptr [ EDX + 0 * 4]
7059 fld dword ptr [ ESI + 0 * 4]
7060 fmul dword ptr [ EDX + 1 * 4]
7061 fld dword ptr [ ESI + 0 * 4]
7062 fmul dword ptr [ EDX + 2 * 4]
7063
7064 fld dword ptr [ ESI + 1 * 4]
7065 fmul dword ptr [ EDX + 4 * 4]
7066 fld dword ptr [ ESI + 1 * 4]
7067 fmul dword ptr [ EDX + 5 * 4]
7068 fld dword ptr [ ESI + 1 * 4]
7069 fmul dword ptr [ EDX + 6 * 4]
7070
7071 fxch ST(2)
7072 faddp ST(5), ST(0)
7073 faddp ST(3), ST(0)
7074 faddp ST(1), ST(0)
7075
7076 fld dword ptr [ ESI + 2 * 4]
7077 fmul dword ptr [ EDX + 8 * 4]
7078 fld dword ptr [ ESI + 2 * 4]
7079 fmul dword ptr [ EDX + 9 * 4]
7080 fld dword ptr [ ESI + 2 * 4]
7081 fmul dword ptr [ EDX + 10 * 4]
7082
7083 fxch ST(2)
7084 faddp ST(5), ST(0)
7085 faddp ST(3), ST(0)
7086 faddp ST(1), ST(0)
7087
7088 fxch ST(2)
7089 fadd dword ptr [ EDX + 12 * 4]
7090 fxch ST(1)
7091 fadd dword ptr [ EDX + 13 * 4]
7092 fxch ST(2)
7093 fadd dword ptr [ EDX + 14 * 4]
7094
7095 fxch ST(1)
7096 fstp dword ptr [ EDI + 0 * 4]
7097 fxch ST(1)
7098 fstp dword ptr [ EDI + 1 * 4]
7099 fstp dword ptr [ EDI + 2 * 4]
7100
7101 mov dword ptr [ EDI + 3 * 4], 1065353216
7102p3m3dv16_skip:
7103 add EDI, 64
7104 add ESI, EAX
7105 dec ECX
7106 jnz p3m3dv16_top
7107
7108
7109p3m3dv16_finish:
7110 pop EDI
7111 pop ESI
7112 ret
7113
7114
7115 PUBLIC _gl_x86_transform_points3_3d_no_rot_v16
7116 ALIGN 4
7117_gl_x86_transform_points3_3d_no_rot_v16:
7118
7119 push ESI
7120 push EDI
7121
7122
7123 mov ESI, dword ptr [ ESP + 8+12]
7124 mov EDI, dword ptr [ ESP + 8+4]
7125
7126 mov EDX, dword ptr [ ESP + 8+8]
7127 mov ECX, dword ptr [ ESP + 8+20]
7128
7129 test ECX, ECX
7130 jz p3m3dnrv16_finish
7131
7132 mov EAX, dword ptr [ ESP + 8+16]
7133
7134
7135 ALIGN 4
7136p3m3dnrv16_top:
7137
7138
7139 fld dword ptr [ ESI + 0 * 4]
7140 fmul dword ptr [ EDX + 0 * 4]
7141
7142 fld dword ptr [ ESI + 1 * 4]
7143 fmul dword ptr [ EDX + 5 * 4]
7144
7145 fld dword ptr [ ESI + 2 * 4]
7146 fmul dword ptr [ EDX + 10 * 4]
7147
7148 fxch ST(2)
7149 fadd dword ptr [ EDX + 12 * 4]
7150 fld dword ptr [ EDX + 13 * 4]
7151 fxch ST(2)
7152 faddp ST(2), ST(0)
7153 fld dword ptr [ EDX + 14 * 4]
7154 fxch ST(3)
7155 faddp ST(3), ST(0)
7156
7157 fstp dword ptr [ EDI + 0 * 4]
7158 fstp dword ptr [ EDI + 1 * 4]
7159 fstp dword ptr [ EDI + 2 * 4]
7160
7161 mov dword ptr [ EDI + 3 * 4], 1065353216
7162p3m3dnrv16_skip:
7163 add EDI, 64
7164 add ESI, EAX
7165 dec ECX
7166 jnz p3m3dnrv16_top
7167
7168
7169p3m3dnrv16_finish:
7170 pop EDI
7171 pop ESI
7172 ret
7173
7174
7175 PUBLIC _gl_x86_transform_points3_perspective_v16
7176 ALIGN 4
7177_gl_x86_transform_points3_perspective_v16:
7178
7179 push ESI
7180 push EDI
7181
7182 push EBX
7183
7184 mov ESI, dword ptr [ ESP + 12+12]
7185 mov EDI, dword ptr [ ESP + 12+4]
7186
7187 mov EDX, dword ptr [ ESP + 12+8]
7188 mov ECX, dword ptr [ ESP + 12+20]
7189
7190 test ECX, ECX
7191 jz p3mpv16_finish
7192
7193 mov EAX, dword ptr [ ESP + 12+16]
7194
7195
7196 ALIGN 4
7197p3mpv16_top:
7198
7199
7200 fld dword ptr [ ESI + 0 * 4]
7201 fmul dword ptr [ EDX + 0 * 4]
7202
7203 fld dword ptr [ ESI + 1 * 4]
7204 fmul dword ptr [ EDX + 5 * 4]
7205
7206 fld dword ptr [ ESI + 2 * 4]
7207 fmul dword ptr [ EDX + 8 * 4]
7208 fld dword ptr [ ESI + 2 * 4]
7209 fmul dword ptr [ EDX + 9 * 4]
7210 fld dword ptr [ ESI + 2 * 4]
7211 fmul dword ptr [ EDX + 10 * 4]
7212
7213 fxch ST(2)
7214 faddp ST(4), ST(0)
7215 faddp ST(2), ST(0)
7216 fld dword ptr [ EDX + 14 * 4]
7217 fxch ST(1)
7218 faddp ST(1), ST(0)
7219
7220 mov EBX, dword ptr [ ESI + 2 * 4]
7221 xor EBX, -2147483648
7222
7223 fxch ST(2)
7224 fstp dword ptr [ EDI + 0 * 4]
7225 fstp dword ptr [ EDI + 1 * 4]
7226 fstp dword ptr [ EDI + 2 * 4]
7227 mov dword ptr [ EDI + 3 * 4], EBX
7228
7229p3mpv16_skip:
7230 add EDI, 64
7231 add ESI, EAX
7232 dec ECX
7233 jnz p3mpv16_top
7234
7235
7236p3mpv16_finish:
7237 pop EBX
7238 pop EDI
7239 pop ESI
7240 ret
7241
7242
7243 PUBLIC _gl_x86_transform_points4_general_v16
7244 ALIGN 4
7245_gl_x86_transform_points4_general_v16:
7246
7247 push ESI
7248 push EDI
7249
7250
7251 mov ESI, dword ptr [ ESP + 8+12]
7252 mov EDI, dword ptr [ ESP + 8+4]
7253
7254 mov EDX, dword ptr [ ESP + 8+8]
7255 mov ECX, dword ptr [ ESP + 8+20]
7256
7257 test ECX, ECX
7258 jz p4mgv16_finish
7259
7260 mov EAX, dword ptr [ ESP + 8+16]
7261
7262
7263 ALIGN 4
7264p4mgv16_top:
7265
7266
7267 fld dword ptr [ ESI + 0 * 4]
7268 fmul dword ptr [ EDX + 0 * 4]
7269 fld dword ptr [ ESI + 0 * 4]
7270 fmul dword ptr [ EDX + 1 * 4]
7271 fld dword ptr [ ESI + 0 * 4]
7272 fmul dword ptr [ EDX + 2 * 4]
7273 fld dword ptr [ ESI + 0 * 4]
7274 fmul dword ptr [ EDX + 3 * 4]
7275
7276 fld dword ptr [ ESI + 1 * 4]
7277 fmul dword ptr [ EDX + 4 * 4]
7278 fld dword ptr [ ESI + 1 * 4]
7279 fmul dword ptr [ EDX + 5 * 4]
7280 fld dword ptr [ ESI + 1 * 4]
7281 fmul dword ptr [ EDX + 6 * 4]
7282 fld dword ptr [ ESI + 1 * 4]
7283 fmul dword ptr [ EDX + 7 * 4]
7284
7285 fxch ST(3)
7286 faddp ST(7), ST(0)
7287 fxch ST(1)
7288 faddp ST(5), ST(0)
7289 faddp ST(3), ST(0)
7290 faddp ST(1), ST(0)
7291
7292 fld dword ptr [ ESI + 2 * 4]
7293 fmul dword ptr [ EDX + 8 * 4]
7294 fld dword ptr [ ESI + 2 * 4]
7295 fmul dword ptr [ EDX + 9 * 4]
7296 fld dword ptr [ ESI + 2 * 4]
7297 fmul dword ptr [ EDX + 10 * 4]
7298 fld dword ptr [ ESI + 2 * 4]
7299 fmul dword ptr [ EDX + 11 * 4]
7300
7301 fxch ST(3)
7302 faddp ST(7), ST(0)
7303 fxch ST(1)
7304 faddp ST(5), ST(0)
7305 faddp ST(3), ST(0)
7306 faddp ST(1), ST(0)
7307
7308 fld dword ptr [ ESI + 3 * 4]
7309 fmul dword ptr [ EDX + 12 * 4]
7310 fld dword ptr [ ESI + 3 * 4]
7311 fmul dword ptr [ EDX + 13 * 4]
7312 fld dword ptr [ ESI + 3 * 4]
7313 fmul dword ptr [ EDX + 14 * 4]
7314 fld dword ptr [ ESI + 3 * 4]
7315 fmul dword ptr [ EDX + 15 * 4]
7316
7317 fxch ST(3)
7318 faddp ST(7), ST(0)
7319 fxch ST(1)
7320 faddp ST(5), ST(0)
7321 faddp ST(3), ST(0)
7322 faddp ST(1), ST(0)
7323
7324 fxch ST(3)
7325 fstp dword ptr [ EDI + 0 * 4]
7326 fxch ST(1)
7327 fstp dword ptr [ EDI + 1 * 4]
7328 fstp dword ptr [ EDI + 2 * 4]
7329 fstp dword ptr [ EDI + 3 * 4]
7330
7331p4mgv16_skip:
7332 add EDI, 64
7333 add ESI, EAX
7334 dec ECX
7335 jnz p4mgv16_top
7336
7337
7338p4mgv16_finish:
7339 pop EDI
7340 pop ESI
7341 ret
7342
7343
7344 PUBLIC _gl_x86_transform_points4_identity_v16
7345 ALIGN 4
7346_gl_x86_transform_points4_identity_v16:
7347
7348 push ESI
7349 push EDI
7350
7351 push EBX
7352
7353 mov ESI, dword ptr [ ESP + 12+12]
7354 mov EDI, dword ptr [ ESP + 12+4]
7355
7356 mov EDX, dword ptr [ ESP + 12+8]
7357 mov ECX, dword ptr [ ESP + 12+20]
7358
7359 test ECX, ECX
7360 jz p4miv16_finish
7361
7362 mov EAX, dword ptr [ ESP + 12+16]
7363
7364
7365 cmp EDI, ESI
7366 je p4miv16_finish
7367
7368 ALIGN 4
7369p4miv16_top:
7370
7371 mov EBX, dword ptr [ ESI + 0 * 4]
7372 mov EDX, dword ptr [ ESI + 1 * 4]
7373
7374 mov dword ptr [ EDI + 0 * 4], EBX
7375 mov dword ptr [ EDI + 1 * 4], EDX
7376
7377 mov EBX, dword ptr [ ESI + 2 * 4]
7378 mov EDX, dword ptr [ ESI + 3 * 4]
7379
7380 mov dword ptr [ EDI + 2 * 4], EBX
7381 mov dword ptr [ EDI + 3 * 4], EDX
7382p4miv16_skip:
7383 add EDI, 64
7384 add ESI, EAX
7385 dec ECX
7386 jnz p4miv16_top
7387
7388
7389p4miv16_finish:
7390 pop EBX
7391 pop EDI
7392 pop ESI
7393 ret
7394
7395
7396 PUBLIC _gl_x86_transform_points4_2d_v16
7397 ALIGN 4
7398_gl_x86_transform_points4_2d_v16:
7399
7400 push ESI
7401 push EDI
7402
7403 push EBX
7404 push EBP
7405
7406 mov ESI, dword ptr [ ESP + 16+12]
7407 mov EDI, dword ptr [ ESP + 16+4]
7408
7409 mov EDX, dword ptr [ ESP + 16+8]
7410 mov ECX, dword ptr [ ESP + 16+20]
7411
7412 test ECX, ECX
7413 jz p4m2dv16_finish
7414
7415 mov EAX, dword ptr [ ESP + 16+16]
7416
7417
7418 ALIGN 4
7419p4m2dv16_top:
7420
7421
7422 fld dword ptr [ ESI + 0 * 4]
7423 fmul dword ptr [ EDX + 0 * 4]
7424 fld dword ptr [ ESI + 0 * 4]
7425 fmul dword ptr [ EDX + 1 * 4]
7426
7427 fld dword ptr [ ESI + 1 * 4]
7428 fmul dword ptr [ EDX + 4 * 4]
7429 fld dword ptr [ ESI + 1 * 4]
7430 fmul dword ptr [ EDX + 5 * 4]
7431
7432 fxch ST(1)
7433 faddp ST(3), ST(0)
7434 faddp ST(1), ST(0)
7435
7436 fld dword ptr [ ESI + 3 * 4]
7437 fmul dword ptr [ EDX + 12 * 4]
7438 fld dword ptr [ ESI + 3 * 4]
7439 fmul dword ptr [ EDX + 13 * 4]
7440
7441 fxch ST(1)
7442 faddp ST(3), ST(0)
7443 faddp ST(1), ST(0)
7444
7445 mov EBX, dword ptr [ ESI + 2 * 4]
7446 mov EBP, dword ptr [ ESI + 3 * 4]
7447
7448 fxch ST(1)
7449 fstp dword ptr [ EDI + 0 * 4]
7450 fstp dword ptr [ EDI + 1 * 4]
7451 mov dword ptr [ EDI + 2 * 4], EBX
7452 mov dword ptr [ EDI + 3 * 4], EBP
7453
7454p4m2dv16_skip:
7455 add EDI, 64
7456 add ESI, EAX
7457 dec ECX
7458 jnz p4m2dv16_top
7459
7460
7461p4m2dv16_finish:
7462 pop EBP
7463 pop EBX
7464 pop EDI
7465 pop ESI
7466 ret
7467
7468
7469 PUBLIC _gl_x86_transform_points4_2d_no_rot_v16
7470 ALIGN 4
7471_gl_x86_transform_points4_2d_no_rot_v16:
7472
7473 push ESI
7474 push EDI
7475
7476 push EBX
7477 push EBP
7478
7479 mov ESI, dword ptr [ ESP + 16+12]
7480 mov EDI, dword ptr [ ESP + 16+4]
7481
7482 mov EDX, dword ptr [ ESP + 16+8]
7483 mov ECX, dword ptr [ ESP + 16+20]
7484
7485 test ECX, ECX
7486 jz p4m2dnrv16_finish
7487
7488 mov EAX, dword ptr [ ESP + 16+16]
7489
7490
7491 ALIGN 4
7492p4m2dnrv16_top:
7493
7494
7495 fld dword ptr [ ESI + 0 * 4]
7496 fmul dword ptr [ EDX + 0 * 4]
7497
7498 fld dword ptr [ ESI + 1 * 4]
7499 fmul dword ptr [ EDX + 5 * 4]
7500
7501 fld dword ptr [ ESI + 3 * 4]
7502 fmul dword ptr [ EDX + 12 * 4]
7503 fld dword ptr [ ESI + 3 * 4]
7504 fmul dword ptr [ EDX + 13 * 4]
7505
7506 fxch ST(1)
7507 faddp ST(3), ST(0)
7508 faddp ST(1), ST(0)
7509
7510 mov EBX, dword ptr [ ESI + 2 * 4]
7511 mov EBP, dword ptr [ ESI + 3 * 4]
7512
7513 fxch ST(1)
7514 fstp dword ptr [ EDI + 0 * 4]
7515 fstp dword ptr [ EDI + 1 * 4]
7516 mov dword ptr [ EDI + 2 * 4], EBX
7517 mov dword ptr [ EDI + 3 * 4], EBP
7518
7519p4m2dnrv16_skip:
7520 add EDI, 64
7521 add ESI, EAX
7522 dec ECX
7523 jnz p4m2dnrv16_top
7524
7525
7526p4m2dnrv16_finish:
7527 pop EBP
7528 pop EBX
7529 pop EDI
7530 pop ESI
7531 ret
7532
7533
7534 PUBLIC _gl_x86_transform_points4_3d_v16
7535 ALIGN 4
7536_gl_x86_transform_points4_3d_v16:
7537
7538 push ESI
7539 push EDI
7540
7541 push EBX
7542
7543 mov ESI, dword ptr [ ESP + 12+12]
7544 mov EDI, dword ptr [ ESP + 12+4]
7545
7546 mov EDX, dword ptr [ ESP + 12+8]
7547 mov ECX, dword ptr [ ESP + 12+20]
7548
7549 test ECX, ECX
7550 jz p4m3dv16_finish
7551
7552 mov EAX, dword ptr [ ESP + 12+16]
7553
7554
7555 ALIGN 4
7556p4m3dv16_top:
7557
7558
7559 fld dword ptr [ ESI + 0 * 4]
7560 fmul dword ptr [ EDX + 0 * 4]
7561 fld dword ptr [ ESI + 0 * 4]
7562 fmul dword ptr [ EDX + 1 * 4]
7563 fld dword ptr [ ESI + 0 * 4]
7564 fmul dword ptr [ EDX + 2 * 4]
7565
7566 fld dword ptr [ ESI + 1 * 4]
7567 fmul dword ptr [ EDX + 4 * 4]
7568 fld dword ptr [ ESI + 1 * 4]
7569 fmul dword ptr [ EDX + 5 * 4]
7570 fld dword ptr [ ESI + 1 * 4]
7571 fmul dword ptr [ EDX + 6 * 4]
7572
7573 fxch ST(2)
7574 faddp ST(5), ST(0)
7575 faddp ST(3), ST(0)
7576 faddp ST(1), ST(0)
7577
7578 fld dword ptr [ ESI + 2 * 4]
7579 fmul dword ptr [ EDX + 8 * 4]
7580 fld dword ptr [ ESI + 2 * 4]
7581 fmul dword ptr [ EDX + 9 * 4]
7582 fld dword ptr [ ESI + 2 * 4]
7583 fmul dword ptr [ EDX + 10 * 4]
7584
7585 fxch ST(2)
7586 faddp ST(5), ST(0)
7587 faddp ST(3), ST(0)
7588 faddp ST(1), ST(0)
7589
7590 fld dword ptr [ ESI + 3 * 4]
7591 fmul dword ptr [ EDX + 12 * 4]
7592 fld dword ptr [ ESI + 3 * 4]
7593 fmul dword ptr [ EDX + 13 * 4]
7594 fld dword ptr [ ESI + 3 * 4]
7595 fmul dword ptr [ EDX + 14 * 4]
7596
7597 fxch ST(2)
7598 faddp ST(5), ST(0)
7599 faddp ST(3), ST(0)
7600 faddp ST(1), ST(0)
7601
7602 mov EBX, dword ptr [ ESI + 3 * 4]
7603
7604 fxch ST(2)
7605 fstp dword ptr [ EDI + 0 * 4]
7606 fstp dword ptr [ EDI + 1 * 4]
7607 fstp dword ptr [ EDI + 2 * 4]
7608 mov dword ptr [ EDI + 3 * 4], EBX
7609
7610p4m3dv16_skip:
7611 add EDI, 64
7612 add ESI, EAX
7613 dec ECX
7614 jnz p4m3dv16_top
7615
7616
7617p4m3dv16_finish:
7618 pop EBX
7619 pop EDI
7620 pop ESI
7621 ret
7622
7623
7624 PUBLIC _gl_x86_transform_points4_3d_no_rot_v16
7625 ALIGN 4
7626_gl_x86_transform_points4_3d_no_rot_v16:
7627
7628 push ESI
7629 push EDI
7630
7631 push EBX
7632
7633 mov ESI, dword ptr [ ESP + 12+12]
7634 mov EDI, dword ptr [ ESP + 12+4]
7635
7636 mov EDX, dword ptr [ ESP + 12+8]
7637 mov ECX, dword ptr [ ESP + 12+20]
7638
7639 test ECX, ECX
7640 jz p4m3dnrv16_finish
7641
7642 mov EAX, dword ptr [ ESP + 12+16]
7643
7644
7645 ALIGN 4
7646p4m3dnrv16_top:
7647
7648
7649 fld dword ptr [ ESI + 0 * 4]
7650 fmul dword ptr [ EDX + 0 * 4]
7651
7652 fld dword ptr [ ESI + 1 * 4]
7653 fmul dword ptr [ EDX + 5 * 4]
7654
7655 fld dword ptr [ ESI + 2 * 4]
7656 fmul dword ptr [ EDX + 10 * 4]
7657
7658 fld dword ptr [ ESI + 3 * 4]
7659 fmul dword ptr [ EDX + 12 * 4]
7660 fld dword ptr [ ESI + 3 * 4]
7661 fmul dword ptr [ EDX + 13 * 4]
7662 fld dword ptr [ ESI + 3 * 4]
7663 fmul dword ptr [ EDX + 14 * 4]
7664
7665 fxch ST(2)
7666 faddp ST(5), ST(0)
7667 faddp ST(3), ST(0)
7668 faddp ST(1), ST(0)
7669
7670 mov EBX, dword ptr [ ESI + 3 * 4]
7671
7672 fxch ST(2)
7673 fstp dword ptr [ EDI + 0 * 4]
7674 fstp dword ptr [ EDI + 1 * 4]
7675 fstp dword ptr [ EDI + 2 * 4]
7676 mov dword ptr [ EDI + 3 * 4], EBX
7677
7678p4m3dnrv16_skip:
7679 add EDI, 64
7680 add ESI, EAX
7681 dec ECX
7682 jnz p4m3dnrv16_top
7683
7684
7685p4m3dnrv16_finish:
7686 pop EBX
7687 pop EDI
7688 pop ESI
7689 ret
7690
7691
7692 PUBLIC _gl_x86_transform_points4_perspective_v16
7693 ALIGN 4
7694_gl_x86_transform_points4_perspective_v16:
7695
7696 push ESI
7697 push EDI
7698
7699 push EBX
7700
7701 mov ESI, dword ptr [ ESP + 12+12]
7702 mov EDI, dword ptr [ ESP + 12+4]
7703
7704 mov EDX, dword ptr [ ESP + 12+8]
7705 mov ECX, dword ptr [ ESP + 12+20]
7706
7707 test ECX, ECX
7708 jz p4mpv16_finish
7709
7710 mov EAX, dword ptr [ ESP + 12+16]
7711
7712
7713 ALIGN 4
7714p4mpv16_top:
7715
7716
7717 fld dword ptr [ ESI + 0 * 4]
7718 fmul dword ptr [ EDX + 0 * 4]
7719
7720 fld dword ptr [ ESI + 1 * 4]
7721 fmul dword ptr [ EDX + 5 * 4]
7722
7723 fld dword ptr [ ESI + 2 * 4]
7724 fmul dword ptr [ EDX + 8 * 4]
7725 fld dword ptr [ ESI + 2 * 4]
7726 fmul dword ptr [ EDX + 9 * 4]
7727 fld dword ptr [ ESI + 2 * 4]
7728 fmul dword ptr [ EDX + 10 * 4]
7729
7730 fxch ST(2)
7731 faddp ST(4), ST(0)
7732 faddp ST(2), ST(0)
7733
7734 fld dword ptr [ ESI + 3 * 4]
7735 fmul dword ptr [ EDX + 14 * 4]
7736
7737 faddp ST(1), ST(0)
7738
7739 mov EBX, dword ptr [ ESI + 2 * 4]
7740 xor EBX, -2147483648
7741
7742 fxch ST(2)
7743 fstp dword ptr [ EDI + 0 * 4]
7744 fstp dword ptr [ EDI + 1 * 4]
7745 fstp dword ptr [ EDI + 2 * 4]
7746 mov dword ptr [ EDI + 3 * 4], EBX
7747
7748p4mpv16_skip:
7749 add EDI, 64
7750 add ESI, EAX
7751 dec ECX
7752 jnz p4mpv16_top
7753
7754
7755p4mpv16_finish:
7756 pop EBX
7757 pop EDI
7758 pop ESI
7759 ret
7760
7761CODE32 ENDS
7762
7763DATA32 SEGMENT
7764
7765clip_table:
7766 db 0, 1, 0, 2, 4, 5, 4, 6
7767 db 0, 1, 0, 2, 8, 9, 8, 10
7768 db 32, 33, 32, 34, 36, 37, 36, 38
7769 db 32, 33, 32, 34, 40, 41, 40, 42
7770 db 0, 1, 0, 2, 4, 5, 4, 6
7771 db 0, 1, 0, 2, 8, 9, 8, 10
7772 db 16, 17, 16, 18, 20, 21, 20, 22
7773 db 16, 17, 16, 18, 24, 25, 24, 26
7774 db 63, 61, 63, 62, 55, 53, 55, 54
7775 db 63, 61, 63, 62, 59, 57, 59, 58
7776 db 47, 45, 47, 46, 39, 37, 39, 38
7777 db 47, 45, 47, 46, 43, 41, 43, 42
7778 db 63, 61, 63, 62, 55, 53, 55, 54
7779 db 63, 61, 63, 62, 59, 57, 59, 58
7780 db 31, 29, 31, 30, 23, 21, 23, 22
7781 db 31, 29, 31, 30, 27, 25, 27, 26
7782DATA32 ENDS
7783
7784CODE32 SEGMENT PARA USE32 PUBLIC 'CODE'
7785
7786 PUBLIC _gl_x86_cliptest_points4
7787 ALIGN 4
7788
7789_gl_x86_cliptest_points4:
7790 push ESI
7791 push EDI
7792 push EBP
7793 push EBX
7794
7795
7796 mov ESI, dword ptr [ ESP + 16+4]
7797 mov EDI, dword ptr [ ESP + 16+8]
7798
7799 mov EDX, dword ptr [ ESP + 16+12]
7800 mov EBX, dword ptr [ ESP + 16+16]
7801
7802 mov EBP, dword ptr [ ESP + 16+20]
7803 mov EAX, dword ptr [ ESI + 12]
7804
7805 mov ECX, dword ptr [ ESI + 8]
7806 mov ESI, dword ptr [ ESI + 4]
7807
7808 or dword ptr [ EDI + 20], 15
7809 mov dword ptr [ ESP + 16+4], EAX
7810
7811 mov dword ptr [ EDI + 16], 3
7812 mov dword ptr [ EDI + 8], ECX
7813
7814 mov EDI, dword ptr [ EDI + 4]
7815 add ECX, EDX
7816
7817 mov dword ptr [ ESP + 16+12], ECX
7818 cmp EDX, ECX
7819
7820 mov AL, byte ptr [EBX]
7821 mov AH, byte ptr [EBP]
7822
7823 jz ctp4_finish
7824
7825 ALIGN 4
7826ctp4_top:
7827 fld1
7828 fdiv dword ptr [ ESI + 3 * 4]
7829
7830 mov EBP, dword ptr [ ESI + 3 * 4]
7831 mov EBX, dword ptr [ ESI + 2 * 4]
7832
7833 xor ECX, ECX
7834 add EBP, EBP
7835
7836 adc ECX, ECX
7837 add EBX, EBX
7838
7839 adc ECX, ECX
7840 cmp EBP, EBX
7841
7842 adc ECX, ECX
7843 mov EBX, dword ptr [ ESI + 1 * 4]
7844
7845 add EBX, EBX
7846
7847 adc ECX, ECX
7848 cmp EBP, EBX
7849
7850 adc ECX, ECX
7851 mov EBX, dword ptr [ ESI + 0 * 4]
7852
7853 add EBX, EBX
7854
7855 adc ECX, ECX
7856 cmp EBP, EBX
7857
7858 adc ECX, ECX
7859
7860 mov CL, byte ptr [ECX + clip_table]
7861
7862 or AL, CL
7863 and AH, CL
7864
7865 test CL, CL
7866 mov byte ptr [EDX], CL
7867
7868 jz ctp4_proj
7869
7870 fstp ST(0)
7871 jmp ctp4_next
7872
7873ctp4_proj:
7874 fld dword ptr [ ESI + 0 * 4]
7875 fmul ST(0), ST(1)
7876
7877 fld dword ptr [ ESI + 1 * 4]
7878 fmul ST(0), ST(2)
7879
7880 fld dword ptr [ ESI + 2 * 4]
7881 fmul ST(0), ST(3)
7882
7883 fxch ST(2)
7884 fstp dword ptr [ EDI + 0 * 4]
7885 fstp dword ptr [ EDI + 1 * 4]
7886 fstp dword ptr [ EDI + 2 * 4]
7887 fstp dword ptr [ EDI + 3 * 4]
7888
7889ctp4_next:
7890 inc EDX
7891 add EDI, 16
7892
7893 add ESI, dword ptr [ ESP + 16+4]
7894 cmp dword ptr [ ESP + 16+12], EDX
7895
7896 jnz ctp4_top
7897
7898 mov ECX, dword ptr [ ESP + 16+16]
7899 mov EDX, dword ptr [ ESP + 16+20]
7900
7901 mov byte ptr [ECX], AL
7902 mov byte ptr [EDX], AH
7903
7904ctp4_finish:
7905 mov EAX, dword ptr [ ESP + 16+8]
7906 pop EBX
7907 pop EBP
7908 pop EDI
7909 pop ESI
7910
7911 ret
7912
7913 PUBLIC _gl_v16_x86_cliptest_points4
7914 ALIGN 4
7915
7916_gl_v16_x86_cliptest_points4:
7917 push ESI
7918 push EDI
7919 push EBP
7920 push EBX
7921
7922
7923 mov ESI, dword ptr [ ESP + 16+4]
7924 mov EDX, dword ptr [ ESP + 16+8]
7925 mov EBX, dword ptr [ ESP + 16+12]
7926 mov EBP, dword ptr [ ESP + 16+16]
7927 mov EDI, dword ptr [ ESP + 16+20]
7928
7929 cmp ESI, EDX
7930
7931 mov AL, byte ptr [EBX]
7932 mov AH, byte ptr [EBP]
7933
7934 jz v16_ctp4_finish
7935
7936 ALIGN 4
7937v16_ctp4_top:
7938
7939 mov EBP, dword ptr [ ESI + 3 * 4]
7940 mov EBX, dword ptr [ ESI + 2 * 4]
7941
7942 xor ECX, ECX
7943 add EBP, EBP
7944
7945 adc ECX, ECX
7946 add EBX, EBX
7947
7948 adc ECX, ECX
7949 cmp EBP, EBX
7950
7951 adc ECX, ECX
7952 mov EBX, dword ptr [ ESI + 1 * 4]
7953
7954 add EBX, EBX
7955
7956 adc ECX, ECX
7957 cmp EBP, EBX
7958
7959 adc ECX, ECX
7960 mov EBX, dword ptr [ ESI + 0 * 4]
7961
7962 add EBX, EBX
7963
7964 adc ECX, ECX
7965 cmp EBP, EBX
7966
7967 adc ECX, ECX
7968
7969 mov CL, byte ptr [ECX + clip_table]
7970
7971 or AL, CL
7972 and AH, CL
7973
7974 mov byte ptr [EDI], CL
7975 inc EDI
7976
7977
7978 add ESI, 64
7979
7980 cmp ESI, EDX
7981 jnz v16_ctp4_top
7982
7983 mov ECX, dword ptr [ ESP + 16+12]
7984 mov EDX, dword ptr [ ESP + 16+16]
7985
7986 mov byte ptr [ECX], AL
7987 mov byte ptr [EDX], AH
7988
7989v16_ctp4_finish:
7990
7991 pop EBX
7992 pop EBP
7993 pop EDI
7994 pop ESI
7995
7996 ret
7997
7998CODE32 ENDS
7999
8000end
Note: See TracBrowser for help on using the repository browser.