[2962] | 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
|
---|