1 | ; $Id: vertex.asm,v 1.1 2000-03-01 18:49:39 jeroen Exp $
|
---|
2 | ;
|
---|
3 | ; Assembly versions of the general vertex transform
|
---|
4 | ;
|
---|
5 |
|
---|
6 | .586p
|
---|
7 |
|
---|
8 | CODE32 SEGMENT DWORD USE32 PUBLIC 'CODE'
|
---|
9 | CODE32 ENDS
|
---|
10 | DATA32 SEGMENT DWORD USE32 PUBLIC 'DATA'
|
---|
11 | ASSUME DS:FLAT, SS:FLAT, ES:FLAT
|
---|
12 | DATA32 ENDS
|
---|
13 |
|
---|
14 | CODE32 SEGMENT
|
---|
15 |
|
---|
16 | PUBLIC _gl_v16_x86_general_xform
|
---|
17 | _gl_v16_x86_general_xform:
|
---|
18 |
|
---|
19 |
|
---|
20 | push EDI
|
---|
21 | push ESI
|
---|
22 |
|
---|
23 | mov EAX, dword ptr [ESP + 12]
|
---|
24 | mov ESI, dword ptr [ESP + 16]
|
---|
25 | mov EDX, dword ptr [ESP + 20]
|
---|
26 | mov EDI, dword ptr [ESP + 24]
|
---|
27 | mov ECX, dword ptr [ESP + 28]
|
---|
28 |
|
---|
29 |
|
---|
30 | v16x86_loop:
|
---|
31 | fld dword ptr [EDX + 0h]
|
---|
32 | fmul dword ptr [ESI + 0h]
|
---|
33 | fld dword ptr [EDX + 0h]
|
---|
34 | fmul dword ptr [ESI + 4h]
|
---|
35 | fld dword ptr [EDX + 0h]
|
---|
36 | fmul dword ptr [ESI + 8h]
|
---|
37 | fld dword ptr [EDX + 0h]
|
---|
38 | fmul dword ptr [ESI + 0ch]
|
---|
39 | fld dword ptr [EDX + 04h]
|
---|
40 | fmul dword ptr [ESI + 010h]
|
---|
41 | fld dword ptr [EDX + 04h]
|
---|
42 | fmul dword ptr [ESI + 014h]
|
---|
43 | fld dword ptr [EDX + 04h]
|
---|
44 | fmul dword ptr [ESI + 018h]
|
---|
45 | fld dword ptr [EDX + 04h]
|
---|
46 | fmul dword ptr [ESI + 1ch]
|
---|
47 | fxch ST(3)
|
---|
48 | faddp ST(7), ST(0)
|
---|
49 | fxch ST(1)
|
---|
50 | faddp ST(5), ST(0)
|
---|
51 | faddp ST(3), ST(0)
|
---|
52 | faddp ST(1), ST(0)
|
---|
53 | fld dword ptr [EDX + 08h]
|
---|
54 | fmul dword ptr [ESI + 20h]
|
---|
55 | fld dword ptr [EDX + 8h]
|
---|
56 | fmul dword ptr [ESI + 24h]
|
---|
57 | fld dword ptr [EDX + 8h]
|
---|
58 | fmul dword ptr [ESI + 28h]
|
---|
59 | fld dword ptr [EDX + 8h]
|
---|
60 | fmul dword ptr [ESI + 2ch]
|
---|
61 | fxch ST(3)
|
---|
62 | faddp ST(7), ST(0)
|
---|
63 | fxch ST(1)
|
---|
64 | faddp ST(5), ST(0)
|
---|
65 | faddp ST(3), ST(0)
|
---|
66 | faddp ST(1), ST(0)
|
---|
67 | fxch ST(3)
|
---|
68 | fadd dword ptr [ESI + 30h]
|
---|
69 | fxch ST(2)
|
---|
70 | fadd dword ptr [ESI + 34h]
|
---|
71 | fxch ST(1)
|
---|
72 | fadd dword ptr [ESI + 38h]
|
---|
73 | fxch ST(3)
|
---|
74 | fadd dword ptr [ESI + 3ch]
|
---|
75 | fxch ST(2)
|
---|
76 | fstp dword ptr [EAX + 00h]
|
---|
77 | fstp dword ptr [EAX + 04h]
|
---|
78 | fxch ST(1)
|
---|
79 | fstp dword ptr [EAX + 08h]
|
---|
80 | fstp dword ptr [EAX + 0ch]
|
---|
81 | add EAX, 64
|
---|
82 | add EDX, EDI
|
---|
83 | dec ECX
|
---|
84 | jne v16x86_loop
|
---|
85 |
|
---|
86 | pop ESI
|
---|
87 | pop EDI
|
---|
88 | ret
|
---|
89 |
|
---|
90 | CODE32 ENDS
|
---|
91 |
|
---|
92 | end
|
---|