Subversion Repositories Kolibri OS

Rev

Rev 2192 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2192 Rev 2881
Line 58... Line 58...
58
.y2	equ word[ebp-16]
58
.y2	equ word[ebp-16]
59
.x3	equ word[ebp-18]
59
.x3	equ word[ebp-18]
60
.y3	equ word[ebp-20]
60
.y3	equ word[ebp-20]
61
 
61
 
Line -... Line 62...
-
 
62
if 0 ;Ext <= SSE2
-
 
63
 
-
 
64
.dx12	equ dword[edi-4]
-
 
65
.dz12	equ	 [edi-8]
-
 
66
.dbx12	equ dword[edi-12]
-
 
67
.dby12	equ	 [edi-16]
-
 
68
.dex12	equ dword[edi-20]
-
 
69
.dey12	equ	 [edi-24]
-
 
70
.dtx12	equ dword[edi-28]
-
 
71
.dty12	equ	 [edi-32]
-
 
72
 
-
 
73
.dx13  equ dword[ebp-52-4*1]
-
 
74
.dz13  equ	[ebp-52-4*2]
-
 
75
.dbx13 equ dword[ebp-52-4*3]
-
 
76
.dby13 equ	[ebp-52-4*4]
-
 
77
.dex13 equ dword[ebp-52-4*5]
-
 
78
.dey13 equ	[ebp-52-4*6]
-
 
79
.dtx13 equ dword[ebp-52-4*7]
-
 
80
.dty13 equ	[ebp-52-4*8]
-
 
81
 
-
 
82
 
-
 
83
.dx23  equ dword[ebp-(52+4*9)]
-
 
84
.dz23  equ	[ebp-(52+4*10)]
-
 
85
.dbx23 equ dword[ebp-(52+4*11)]
-
 
86
.dby23 equ	[ebp-(52+4*12)]
-
 
87
.dex23 equ dword[ebp-(52+4*13)]
-
 
88
.dey23 equ	[ebp-(52+4*14)]
-
 
89
.dtx23 equ dword[ebp-(52+4*15)]
-
 
90
.dty23 equ	[ebp-(52+4*16)]
-
 
91
 
-
 
92
else
-
 
93
 
62
.dx12	equ dword[ebp-24]
94
.dx12	equ dword[ebp-24]
63
.dz12	equ	 [ebp-28]
95
.dz12	equ	 [ebp-28]
64
.dbx12	equ dword[ebp-32]
96
.dbx12	equ dword[ebp-32]
65
.dby12	equ	 [ebp-36]
97
.dby12	equ	 [ebp-36]
66
.dex12	equ dword[ebp-40]
98
.dex12	equ dword[ebp-40]
Line 86... Line 118...
86
.dey23 equ	[ebp-(52+4*14)]
118
.dey23 equ	[ebp-(52+4*14)]
87
.dtx23 equ dword[ebp-(52+4*15)]
119
.dtx23 equ dword[ebp-(52+4*15)]
88
.dty23 equ	[ebp-(52+4*16)]
120
.dty23 equ	[ebp-(52+4*16)]
89
 
121
 
Line -... Line 122...
-
 
122
end if
-
 
123
 
90
if Ext < SSE
124
if Ext < SSE
Line 91... Line 125...
91
 
125
 
92
.cx1   equ dword[ebp-(52+4*17)] 	; current variables
126
.cx1   equ dword[ebp-(52+4*17)] 	; current variables
93
.cz1   equ	[ebp-(52+4*18)]
127
.cz1   equ	[ebp-(52+4*18)]
Line 192... Line 226...
192
 
226
 
193
       mov	bx,.y2	     ; calc delta 12
227
       mov	bx,.y2	     ; calc delta 12
194
       sub	bx,.y1
228
       sub	bx,.y1
-
 
229
       jnz	.bt_dx12_make
-
 
230
if 0 ;Ext >= SSE2
-
 
231
       pxor	xmm0,xmm0
-
 
232
       movups	.dty12,xmm0
-
 
233
       movups	.dey12,xmm0
-
 
234
       sub	esp,16
195
       jnz	.bt_dx12_make
235
else
196
       mov	ecx,8
236
       mov	ecx,8
197
       xor	edx,edx
237
       xor	edx,edx
198
     @@:
238
     @@:
199
       push	edx   ;dword 0
239
       push	edx   ;dword 0
-
 
240
       loop	@b
200
       loop	@b
241
end if
201
       jmp	.bt_dx12_done
242
       jmp	.bt_dx12_done
202
 .bt_dx12_make:
243
 .bt_dx12_make:
Line 203... Line 244...
203
       movsx	ebx,bx
244
       movsx	ebx,bx
204
 
245
 
205
 
246
 
206
if Ext>=SSE
247
if Ext>=SSE
207
       sub	 esp,32
248
       sub	 esp,32
-
 
249
   ;    mov       eax,256
-
 
250
       cvtsi2ss  xmm4,[i255d]
-
 
251
       cvtsi2ss  xmm3,ebx ;rcps
-
 
252
if 0 ;Ext >= SSE2
-
 
253
       mov	 edi,ebp
208
   ;    mov       eax,256
254
       sub	 edi,512
209
       cvtsi2ss  xmm4,[i255d]
255
       or	 edi,0x0000000f
Line 210... Line 256...
210
       cvtsi2ss  xmm3,ebx	     ;rcps
256
end if
211
       divss	 xmm3,xmm4
257
       divss	 xmm3,xmm4
Line 795... Line 841...
795
       mov	.cty2,edx
841
       mov	.cty2,edx
796
      ; push     edx
842
      ; push     edx
797
      ; push     edx
843
      ; push     edx
798
 
844
 
Line 799... Line 845...
799
;if Ext >= SSE2
845
if Ext >= SSE2
800
;       movups  xmm0,.cby1
846
       movups  xmm0,.cby1
801
;       movups  xmm1,.cty1
847
       movups  xmm1,.cty1
802
;       movups  xmm2,.cby2
848
       movups  xmm2,.cby2
803
;       movups  xmm3,.cty2
849
       movups  xmm3,.cty2
804
;       movups  xmm4,.dby13
850
       movups  xmm4,.dby13
805
;       movups  xmm5,.dty13
851
       movups  xmm5,.dty13
806
;       movups  xmm6,.dby12
852
       movups  xmm6,.dby12
807
;       movups  xmm7,.dty12
853
       movups  xmm7,.dty12
-
 
854
       .scby1  equ [edi]
-
 
855
       .scty1  equ [edi+16]
-
 
856
       .scby2  equ [edi+32]
-
 
857
       .scty2  equ [edi+48]
-
 
858
       .sdby13 equ [edi+64]
-
 
859
       .sdty13 equ [edi+80]
-
 
860
       .sdby12 equ [edi+96]
-
 
861
       .sdty12 equ [edi+128]
-
 
862
       push    edi
-
 
863
       mov     edi,sse_repository
-
 
864
       movaps  .scby1,xmm0
-
 
865
       movaps  .scty1,xmm1
-
 
866
       movaps  .scby2,xmm2
-
 
867
       movaps  .scty2,xmm3
-
 
868
       movaps  .sdby13,xmm4
-
 
869
       movaps  .sdty13,xmm5
-
 
870
       movaps  .sdby12,xmm6
-
 
871
       movaps  .sdty12,xmm7
-
 
872
       pop     edi
-
 
873
 
808
;end if
874
end if
809
       movsx	ecx,.y1
875
       movsx	ecx,.y1
810
       cmp	cx,.y2
876
       cmp	cx,.y2
811
       jge	.loop12_done
877
       jge	.loop12_done
812
  .loop12:
878
  .loop12:
813
;if Ext >= SSE2
879
;if Ext >= SSE2
Line 819... Line 885...
819
       movups  xmm0,.cby1
885
       movups  xmm0,.cby1
820
       movups  xmm1,.cty1
886
       movups  xmm1,.cty1
821
       movups  xmm2,.cby2
887
       movups  xmm2,.cby2
822
       movups  xmm3,.cty2
888
       movups  xmm3,.cty2
823
       movups  xmm4,.dby13
889
    ;   movups  xmm4,.dby13
824
       movups  xmm5,.dty13
890
    ;   movups  xmm5,.dty13
825
       movups  xmm6,.dby12
891
    ;   movups  xmm6,.dby12
826
       movups  xmm7,.dty12
892
    ;   movups  xmm7,.dty12
827
       paddd   xmm0,xmm4
893
    ;   paddd   xmm0,xmm4
828
       paddd   xmm1,xmm5
894
    ;   paddd   xmm1,xmm5
829
       paddd   xmm2,xmm6
895
    ;   paddd   xmm2,xmm6
830
       paddd   xmm3,xmm7
896
    ;   paddd   xmm3,xmm7
831
       movups  .cby1,xmm0
897
       push    edi
-
 
898
       mov     edi,sse_repository
-
 
899
       paddd   xmm0,.sdby13
-
 
900
       paddd   xmm1,.sdty13
-
 
901
       paddd   xmm2,.sdby12
-
 
902
       paddd   xmm3,.sdty12
-
 
903
       pop     edi
-
 
904
       movups  .cby1,xmm0
832
       movups  .cty1,xmm1
905
       movups  .cty1,xmm1
833
       movups  .cby2,xmm2
906
       movups  .cby2,xmm2
834
       movups  .cty2,xmm3
907
       movups  .cty2,xmm3
835
end if
908
end if
836
 
909
 
Line 937... Line 1010...
937
 
1010
 
Line 938... Line 1011...
938
       movzx	ebx,word[.t_y2]
1011
       movzx	ebx,word[.t_y2]
939
       shl	ebx,ROUND
1012
       shl	ebx,ROUND
940
       mov	.cty2,ebx
1013
       mov	.cty2,ebx
941
;if Ext >= SSE2
1014
if Ext >= SSE2
942
;       movups  xmm0,.cby1
-
 
943
;       movups  xmm1,.cty1
-
 
944
;       movups  xmm2,.cby2
1015
       movups  xmm2,.cby2
945
;       movups  xmm3,.cty2
1016
       movups  xmm3,.cty2
946
;       movups  xmm4,.dby13
1017
   ;    movups  xmm4,.dby13
947
;       movups  xmm5,.dty13
1018
   ;    movups  xmm5,.dty13
948
;       movups  xmm6,.dby23
1019
       movups  xmm6,.dby23
949
;       movups  xmm7,.dty23
1020
       movups  xmm7,.dty23
-
 
1021
;       .scby1  equ [edi]
-
 
1022
;       .scty1  equ [edi+16]
-
 
1023
;       .scby2  equ [edi+32]
-
 
1024
;       .scty2  equ [edi+48]
-
 
1025
;       .sdby13 equ [edi+64]
-
 
1026
;       .sdty13 equ [edi+80]
-
 
1027
       .sdby23 equ [edi+160]
-
 
1028
       .sdty23 equ [edi+192]
-
 
1029
       push    edi
-
 
1030
       mov     edi,sse_repository
-
 
1031
;       movaps  .scby1,xmm0
-
 
1032
;       movaps  .scty1,xmm1
-
 
1033
       movaps  .scby2,xmm2
-
 
1034
       movaps  .scty2,xmm3
-
 
1035
;       movaps  .sdby13,xmm4
-
 
1036
;       movaps  .sdty13,xmm5
-
 
1037
       movaps  .sdby23,xmm6
-
 
1038
       movaps  .sdty23,xmm7
-
 
1039
       pop     edi
-
 
1040
 
950
;end if
1041
end if
-
 
1042
 
951
     .loop23:
1043
     .loop23:
952
;if Ext >= SSE2
1044
;if Ext >= SSE2
953
;       fxsave  [sse_repository]
1045
;       fxsave  [sse_repository]
954
;end if
1046
;end if
955
       call	.call_line
1047
       call	.call_line
Line 956... Line 1048...
956
 
1048
 
957
if Ext >= SSE2
-
 
-
 
1049
if Ext >= SSE2
958
;       fxrstor [sse_repository]
1050
 
959
       movups  xmm0,.cby1
1051
       movups  xmm0,.cby1
960
       movups  xmm1,.cty1
1052
       movups  xmm1,.cty1
961
       movups  xmm2,.cby2
1053
       movups  xmm2,.cby2
-
 
1054
       movups  xmm3,.cty2
-
 
1055
 
962
       movups  xmm3,.cty2
1056
 
963
       movups  xmm4,.dby13
1057
       push    edi
964
       movups  xmm5,.dty13
1058
       mov     edi,sse_repository
965
       movups  xmm6,.dby23
-
 
966
       movups  xmm7,.dty23
1059
       paddd   xmm0,.sdby13
967
       paddd   xmm0,xmm4
1060
       paddd   xmm1,.sdty13
968
       paddd   xmm1,xmm5
1061
       paddd   xmm2,.sdby23
969
       paddd   xmm2,xmm6
1062
       paddd   xmm3,.sdty23
970
       paddd   xmm3,xmm7
1063
       pop     edi
971
       movups  .cby1,xmm0
1064
       movups  .cby1,xmm0
972
       movups  .cty1,xmm1
1065
       movups  .cty1,xmm1
973
       movups  .cby2,xmm2
1066
       movups  .cby2,xmm2
-
 
1067
       movups  .cty2,xmm3
-
 
1068
 
-
 
1069
 
-
 
1070
 
-
 
1071
 
-
 
1072
;       fxrstor [sse_repository]
-
 
1073
;       movups  xmm0,.cby1
-
 
1074
;       movups  xmm1,.cty1
-
 
1075
;       movups  xmm2,.cby2
-
 
1076
;       movups  xmm3,.cty2
-
 
1077
;       movups  xmm4,.dby13
-
 
1078
;       movups  xmm5,.dty13
-
 
1079
;       movups  xmm6,.dby23
-
 
1080
;       movups  xmm7,.dty23
-
 
1081
;       paddd   xmm0,xmm4
-
 
1082
;       paddd   xmm1,xmm5
-
 
1083
;       paddd   xmm2,xmm6
-
 
1084
 ;      paddd   xmm3,xmm7
-
 
1085
 ;      movups  .cby1,xmm0
-
 
1086
 ;      movups  .cty1,xmm1
-
 
1087
 ;      movups  .cby2,xmm2
974
       movups  .cty2,xmm3
1088
 ;      movups  .cty2,xmm3
975
;
1089
;
976
end if
1090
end if
977
if (Ext = MMX) | (Ext = SSE)
1091
if (Ext = MMX) | (Ext = SSE)
978
       movq	mm0,.cby2
1092
       movq	mm0,.cby2
Line 1047... Line 1161...
1047
 
1161
 
Line 1048... Line 1162...
1048
.call_line:
1162
.call_line:
Line 1049... Line 1163...
1049
 
1163
 
-
 
1164
       pushad
-
 
1165
       ; xmm0= cby1,cbx1,cz1,cx1
-
 
1166
       ; xmm1= cty1,ctx1,cey1,cex1
1050
       pushad
1167
if Ext >= SSE2
-
 
1168
       sub	esp,8
-
 
1169
       shufps	xmm1,xmm1,10110001b
-
 
1170
       shufps	xmm3,xmm3,10110001b
-
 
1171
       movlps	[esp],xmm1
1051
       push	.tex_ptr
1172
else
1052
       push	dword .cty1
1173
       push	dword .cty1
-
 
1174
       push	.ctx1
1053
       push	.ctx1
1175
end if
-
 
1176
       push	dword .cz1
-
 
1177
if Ext>=SSE2
-
 
1178
       sub	esp,8
-
 
1179
       movlps	[esp],xmm3
1054
       push	dword .cz1
1180
else
1055
       push	dword .cty2
1181
       push	dword .cty2
-
 
1182
       push	.ctx2
1056
       push	.ctx2
1183
end if
-
 
1184
       push	dword .cz2
1057
       push	dword .cz2
1185
if Ext>=SSE2
-
 
1186
       sub	esp,32
-
 
1187
       movhps	[esp+24],xmm3
1058
       push	.z_buff
1188
       shufps	xmm2,xmm2,10110001b
1059
       push	.t_emap
1189
       movlps	[esp+16],xmm2
-
 
1190
       movhps	[esp+8],xmm1
-
 
1191
       shufps	xmm0,xmm0,10110001b
-
 
1192
       movlps	[esp],xmm0 ;================================
-
 
1193
 
1060
       push	.t_bmap
1194
else
1061
       push	dword .cey2
1195
       push	dword .cey2
1062
       push	.cex2
1196
       push	.cex2
1063
       push	dword .cby2
1197
       push	dword .cby2
1064
       push	.cbx2
1198
       push	.cbx2
1065
       push	dword .cey1
1199
       push	dword .cey1
1066
       push	.cex1
-
 
1067
;if Ext >= SSE2
-
 
1068
;       sub      esp,8
-
 
1069
;       shufps   xmm0,xmm0,10110100b
-
 
1070
;       movhps   [esp],xmm0 ;================================
-
 
1071
;else
-
 
1072
 
1200
       push	.cex1
1073
       push	dword .cby1
1201
       push	dword .cby1
1074
       push	.cbx1
1202
       push	.cbx1
-
 
1203
end if
-
 
1204
 
-
 
1205
       push	.tex_ptr
-
 
1206
       push	.z_buff
-
 
1207
       push	.t_emap
Line 1075... Line 1208...
1075
;end if
1208
       push	.t_bmap
Line 1076... Line 1209...
1076
 
1209
 
1077
       push	ecx
1210
       push	ecx
Line 1091... Line 1224...
1091
;--------------    ebx - x2
1224
;--------------    ebx - x2
1092
;--------------    edi - pointer to screen buffer
1225
;--------------    edi - pointer to screen buffer
1093
;stack - another parameters :
1226
;stack - another parameters :
1094
.y	equ dword [ebp+4]
1227
.y	equ dword [ebp+4]
1095
 
1228
.bmap	equ dword [ebp+8]	 ; bump map pointer
-
 
1229
.emap	equ dword [ebp+12]	 ; env map pointer
-
 
1230
.z_buff equ dword [ebp+16]	 ; z buffer
-
 
1231
.tex_map equ dword [ebp+20]	 ; texture pointer
-
 
1232
 
-
 
1233
.bx1	equ  [ebp+24]	;   ---
-
 
1234
.by1	equ  [ebp+28]  ;       |
-
 
1235
.ex1	equ  [ebp+32]  ;       |
-
 
1236
.ey1	equ  [ebp+36]  ;       |
-
 
1237
.bx2	equ  [ebp+40]  ;       |
-
 
1238
.by2	equ  [ebp+44]  ;       |>   b. map and e. map coords
-
 
1239
.ex2	equ  [ebp+48]  ;       |>   shifted shl ROUND
-
 
1240
.ey2	equ  [ebp+52]  ;   ---
-
 
1241
.z2	equ  [ebp+56]
-
 
1242
.tx2	equ  [ebp+60]
-
 
1243
.ty2	equ  [ebp+64]
-
 
1244
.z1	equ  [ebp+68]
-
 
1245
.tx1	equ  [ebp+72]
-
 
1246
.ty1	equ  [ebp+76]
-
 
1247
 
Line 1096... Line -...
1096
.bx1	equ  [ebp+8]   ;   ---
-
 
1097
.by1	equ  [ebp+12]  ;       |
-
 
1098
.ex1	equ  [ebp+16]  ;       |
-
 
1099
.ey1	equ  [ebp+20]  ;       |
-
 
1100
.bx2	equ  [ebp+24]  ;       |
-
 
1101
.by2	equ  [ebp+28]  ;       |>   b. map and e. map coords
-
 
1102
.ex2	equ  [ebp+32]  ;       |>   shifted shl ROUND
-
 
1103
.ey2	equ  [ebp+36]  ;   ---
-
 
1104
.bmap	equ  [ebp+40]  ; bump map offset
-
 
1105
.emap	equ  [ebp+44]  ; env map offset
-
 
1106
.z_buff equ  [ebp+48]
-
 
1107
.z2	equ  [ebp+52]
-
 
1108
.tx2	equ  [ebp+56]
-
 
1109
.ty2	equ  [ebp+60]
-
 
1110
.z1	equ  [ebp+64]
-
 
1111
.tx1	equ  [ebp+68]
-
 
1112
.ty1	equ  [ebp+72]
-
 
1113
.tex_map equ dword [ebp+76]  ; texture offset  ( pointer )
-
 
Line 1114... Line 1248...
1114
 
1248
 
1115
 
1249
 
1116
.x1	equ [ebp-4]
1250
.x1	equ [ebp-4]
Line 1150... Line 1284...
1150
	cmp	eax,ebx
1284
	cmp	eax,ebx
1151
	jl	.bl_ok
1285
	jl	.bl_ok
1152
	je	.bl_end
1286
	je	.bl_end
Line 1153... Line 1287...
1153
 
1287
 
1154
	xchg	eax,ebx
1288
 
1155
if Ext=NON
1289
if Ext=NON
1156
	mov	edx,.bx1
1290
	mov	edx,.bx1
1157
	xchg	edx,.bx2
1291
	xchg	edx,.bx2
1158
	mov	.bx1,edx
1292
	mov	.bx1,edx
Line 1197... Line 1331...
1197
	movq	mm1,.tx2
1331
	movq	mm1,.tx2
1198
	movq	.tx1,mm1
1332
	movq	.tx1,mm1
1199
	movq	.tx2,mm0
1333
	movq	.tx2,mm0
1200
end if
1334
end if
1201
 
1335
;if Ext>=SSE2
-
 
1336
;        movaps  xmm4,xmm0
-
 
1337
;        movaps  xmm0,xmm2
-
 
1338
;        movaps  xmm2,xmm4
-
 
1339
;        movaps  xmm5,xmm1
-
 
1340
;        movaps  xmm1,xmm3
-
 
1341
;        movaps  xmm3,xmm5
-
 
1342
;else
-
 
1343
 
Line -... Line 1344...
-
 
1344
	xchg	eax,ebx
1202
	mov	edx,.z1
1345
	mov	edx,.z1
1203
	xchg	edx,.z2
1346
	xchg	edx,.z2
1204
	mov	.z1,edx
1347
	mov	.z1,edx
-
 
1348
;end if
1205
  .bl_ok:
1349
  .bl_ok:
-
 
1350
;if Ext >= SSE2
-
 
1351
;        shufps  xmm0,xmm0,11100001b
-
 
1352
;        shufps  xmm2,xmm2,11100001b
-
 
1353
;        movlps  .bx1,xmm0
-
 
1354
;        movlps  .bx2,xmm2
-
 
1355
 
-
 
1356
 
-
 
1357
;        shufps  xmm0,xmm0,00011011b
-
 
1358
;        shufps  xmm2,xmm2,00011011b
-
 
1359
;        movd    eax,xmm0
-
 
1360
;        movd    ebx,xmm2
-
 
1361
;        shufps  xmm0,xmm0,11000110b
-
 
1362
;        shufps  xmm2,xmm2,11000110b
-
 
1363
;        movd    .z1,xmm0
-
 
1364
;        movd    .z2,xmm2
-
 
1365
;        shufps  xmm1,xmm1,10110001b
-
 
1366
;        shufps  xmm3,xmm3,10110001b
-
 
1367
;        movlps  .ex1,xmm1
-
 
1368
;        movlps  .ex2,xmm2
-
 
1369
;        movhps  .tx1,xmm1
-
 
1370
;        movhps  .tx2,xmm2
-
 
1371
 
-
 
1372
;        xchg    eax,ebx
-
 
1373
;        mov     edx,.z1
-
 
1374
;        xchg    edx,.z2
-
 
1375
;        mov     .z1,edx
-
 
1376
 
-
 
1377
 
-
 
1378
;end if
-
 
1379
 
1206
	push	eax
1380
	push	eax
1207
	push	ebx	      ;store x1, x2
1381
	push	ebx	      ;store x1, x2
1208
	cmp	dword .x1,SIZE_X
1382
	cmp	dword .x1,SIZE_X
1209
	jge	.bl_end
1383
	jge	.bl_end
1210
	cmp	dword .x2,0
1384
	cmp	dword .x2,0