| 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 | 
|---|