Subversion Repositories Kolibri OS

Rev

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

Rev 1245 Rev 1776
Line 176... Line 176...
176
       push	edx   ;dword 0
176
       push	edx   ;dword 0
177
       loop	@b
177
       loop	@b
178
       jmp	.bt_dx12_done
178
       jmp	.bt_dx12_done
179
 .bt_dx12_make:
179
 .bt_dx12_make:
180
 
180
       movsx	ebx,bx
-
 
181
 
Line 181... Line 182...
181
       mov	ax,.x2
182
       mov	ax,.x2
182
       sub	ax,.x1
183
       sub	ax,.x1
183
       cwde
184
       cwde
184
       movsx	ebx,bx
-
 
185
       shl	eax,ROUND
185
       shl	eax,ROUND
186
       cdq
186
       cdq
187
       idiv	ebx
187
       idiv	ebx
188
 ;     mov      .dx12,eax
188
 ;     mov      .dx12,eax
189
       push	 eax
189
       push	 eax
Line 190... Line -...
190
 
-
 
191
       mov     ax,.z2
-
 
192
       sub     ax,.z1
-
 
193
       cwde
-
 
194
       shl     eax,CATMULL_SHIFT
-
 
195
       cdq
-
 
196
       idiv    ebx
-
 
197
       push    eax
-
 
198
 
190
 
Line 199... Line 191...
199
if Ext>=SSE
191
if Ext>=SSE
200
 
192
 
201
       sub	 esp,16
193
       sub	 esp,28
202
   ;    mov       eax,256
194
   ;    mov       eax,256
203
       cvtsi2ss  xmm4,[i255d]
195
       cvtsi2ss  xmm4,[i255d]
204
       cvtsi2ss  xmm3,ebx	     ;rcps
196
       cvtsi2ss  xmm3,ebx	     ;rcps
Line 226... Line 218...
226
       divps	 xmm1,xmm3   ;xmm1--> | dby | dbx | dey | dex |
218
       divps	 xmm1,xmm3   ;xmm1--> | dby | dbx | dey | dex |
Line 227... Line 219...
227
 
219
 
228
       shufps	 xmm1,xmm1,10110001b
220
       shufps	 xmm1,xmm1,10110001b
229
			     ;xmm1--> | dbx | dby | dex | dey |
221
			     ;xmm1--> | dbx | dby | dex | dey |
230
       cvtps2pi  mm0,xmm1	   ; mm0 -> 2 delta dwords
222
       cvtps2pi  mm0,xmm1 ;mm0,xmm1          ; mm0 -> 2 delta dwords
231
       movhlps	 xmm1,xmm1
223
       movhlps	 xmm1,xmm1
232
       cvtps2pi  mm1,xmm1
224
       cvtps2pi  mm1,xmm1 ;mm1,xmm1
233
       movq	 .dey12,mm0
225
       movq	 .dey12,mm0
234
       movq	 .dby12,mm1
226
       movq	 .dby12,mm1
-
 
227
;-------------
-
 
228
  ;    pxor      mm0,mm0
-
 
229
  ;    pxor      mm1,mm1
-
 
230
   ;/   pinsrw    mm0,.z1,1
-
 
231
   ;/   pinsrw    mm0,.x1,0
-
 
232
   ;/   pinsrw    mm1,.z2,1
-
 
233
   ;/   pinsrw    mm1,.x2,0
-
 
234
       mov	 ax,.z2
-
 
235
       sub	 ax,.z1
-
 
236
       cwde
-
 
237
   ;/    movd      mm1,eax
-
 
238
 
-
 
239
   ;/    punpcklwd  mm0,mm4
-
 
240
   ;/    punpcklwd  mm1,mm4
-
 
241
 
-
 
242
  ;     cvtpi2ps   xmm1,mm1
-
 
243
  ;     cvtpi2ps   xmm2,mm0
-
 
244
  ;     subps      xmm1,xmm2
-
 
245
 
-
 
246
   ;/   psubd      mm1,mm0
-
 
247
 
-
 
248
       movd	  mm2,[.t_x1]
-
 
249
       movd	  mm3,[.t_x2]
-
 
250
 
-
 
251
       punpcklwd  mm2,mm4
-
 
252
       punpcklwd  mm3,mm4
-
 
253
       psubd	  mm3,mm2
-
 
254
 
-
 
255
   ;/  cvtpi2ps  xmm1,mm1
-
 
256
       cvtsi2ss  xmm1,eax
-
 
257
       movlhps	 xmm1,xmm1
-
 
258
       cvtpi2ps  xmm1,mm3
-
 
259
 
-
 
260
       divps	 xmm1,xmm3   ; xmm1--> | xxx | dz | dty | dtx |
-
 
261
 
-
 
262
       shufps	 xmm1,xmm1,11100001b
-
 
263
			     ; xmm1--> | xxx | dz | dtx | dty |
-
 
264
       cvtps2pi  mm0,xmm1    ; mm0 -> 2 delta dwords  | dtx | dty |
-
 
265
       movhlps	 xmm1,xmm1
-
 
266
       cvtss2si  eax,xmm1    ; eax --> 1 delta dword | dz |
-
 
267
       movq	 .dty12,mm0
-
 
268
       mov	 .dz12,eax
235
;-------------
269
;----
236
;       mov       ax,.z2
270
;       mov       ax,.z2
237
;       sub       ax,.z1
271
;       sub       ax,.z1
238
;       cwde
272
;       cwde
239
;       mov       bx,.x2
273
;       mov       bx,.x2
240
;       sub       bx,.x1
274
;       sub       bx,.x1
241
;       movsx     ebx,bx
275
;       movsx     ebx,bx
242
;       movd      mm1,eax
276
;       movd      mm1,eax
243
;       psllq     mm1,32
277
;       psllq     mm1,32
-
 
278
;       movd      mm1,ebx
244
;       movd      mm1,ebx
279
 
245
;;       push      ebx
280
;;       push      ebx
246
;;       push      eax
281
;;       push      eax
247
;;       movq      mm1,[esp]
282
;;       movq      mm1,[esp]
248
;;       add       esp,8
283
;;       add       esp,8
Line 280... Line 315...
280
;       cvtps2pi  mm1,xmm1    ; mm1 --> 2 delta dwords | dx | dz |
315
;       cvtps2pi  mm1,xmm1    ; mm1 --> 2 delta dwords | dx | dz |
281
;       movq      .dty12,mm0
316
;       movq      .dty12,mm0
282
;       movq      .dz12,mm1
317
;       movq      .dz12,mm1
283
else
318
else
284
 
319
       mov     ax,.z2
-
 
320
       sub     ax,.z1
-
 
321
       cwde
-
 
322
       shl     eax,CATMULL_SHIFT
-
 
323
       cdq
-
 
324
       idiv    ebx
-
 
325
       push    eax
-
 
326
 
Line 285... Line 327...
285
       mov	ax,word[.b_x2]
327
       mov	ax,word[.b_x2]
286
       sub	ax,word[.b_x1]
328
       sub	ax,word[.b_x1]
287
       cwde
329
       cwde
288
       shl	eax,ROUND
330
       shl	eax,ROUND
Line 317... Line 359...
317
       idiv	ebx
359
       idiv	ebx
318
 ;     mov      .dey12,eax
360
 ;     mov      .dey12,eax
319
       push	 eax
361
       push	 eax
320
 
362
 
Line 321... Line 363...
321
end if
363
;end if
Line 322... Line 364...
322
 
364
 
323
       mov	ax,word[.t_x2]
365
       mov	ax,word[.t_x2]
324
       sub	ax,word[.t_x1]
366
       sub	ax,word[.t_x1]
325
       cwde
367
       cwde
Line 336... Line 378...
336
       cdq
378
       cdq
337
       idiv	ebx
379
       idiv	ebx
338
 ;     mov      .dty12,eax
380
 ;     mov      .dty12,eax
339
       push	 eax
381
       push	 eax
340
 
382
end if
341
   .bt_dx12_done:
383
   .bt_dx12_done:
342
 
384
 
Line 343... Line 385...
343
       mov	bx,.y3	     ; calc delta13
385
       mov	bx,.y3	     ; calc delta13
344
       sub	bx,.y1
386
       sub	bx,.y1
345
       jnz	.bt_dx13_make
387
       jnz	.bt_dx13_make
Line 359... Line 401...
359
       idiv	ebx
401
       idiv	ebx
360
 ;     mov      .dx13,eax
402
 ;     mov      .dx13,eax
361
       push	 eax
403
       push	 eax
362
 
404
 
Line 363... Line -...
363
       mov     ax,.z3
-
 
364
       sub     ax,.z1
-
 
365
       cwde
-
 
366
       shl     eax,CATMULL_SHIFT
-
 
367
       cdq
-
 
368
       idiv    ebx
-
 
369
  ;    mov    .dz13,eax
-
 
370
       push    eax
-
 
371
 
-
 
372
if Ext>=SSE
405
if Ext>=SSE
Line 373... Line 406...
373
 
406
 
374
       sub	 esp,16
407
       sub	 esp,28
375
   ;    mov       eax,255
408
   ;    mov       eax,255
376
       cvtsi2ss  xmm4,[i255d]
409
       cvtsi2ss  xmm4,[i255d]
377
       cvtsi2ss  xmm3,ebx	     ;rcps
410
       cvtsi2ss  xmm3,ebx	     ;rcps
378
       divss	 xmm3,xmm4
411
       divss	 xmm3,xmm4
Line 404... Line 437...
404
       movhlps	 xmm1,xmm1
437
       movhlps	 xmm1,xmm1
405
       cvtps2pi  mm1,xmm1
438
       cvtps2pi  mm1,xmm1
406
       movq	 .dey13,mm0
439
       movq	 .dey13,mm0
407
       movq	 .dby13,mm1
440
       movq	 .dby13,mm1
408
else
441
;----------
-
 
442
       mov	 ax,.z3
-
 
443
       sub	 ax,.z1
-
 
444
       cwde
-
 
445
 
-
 
446
       movd	  mm2,[.t_x1]
-
 
447
       movd	  mm3,[.t_x3]
-
 
448
 
-
 
449
       punpcklwd  mm2,mm4
-
 
450
       punpcklwd  mm3,mm4
-
 
451
       psubd	  mm3,mm2
-
 
452
 
-
 
453
       cvtsi2ss  xmm1,eax
-
 
454
       movlhps	 xmm1,xmm1
-
 
455
       cvtpi2ps  xmm1,mm3
-
 
456
 
-
 
457
       divps	 xmm1,xmm3   ; xmm1--> | xxx | dz | dty | dtx |
-
 
458
 
-
 
459
       shufps	 xmm1,xmm1,11100001b
-
 
460
			     ; xmm1--> | xxx | dz | dtx | dty |
-
 
461
       cvtps2pi  mm0,xmm1    ; mm0 -> 2 delta dwords  | dtx | dty |
-
 
462
       movhlps	 xmm1,xmm1
-
 
463
       cvtss2si  eax,xmm1    ; eax --> 1 delta dword | dz |
-
 
464
       movq	 .dty13,mm0
-
 
465
       mov	 .dz13,eax
-
 
466
else
409
       mov	ax,word[.b_x3]
467
       mov     ax,.z3
-
 
468
       sub     ax,.z1
-
 
469
       cwde
-
 
470
       shl     eax,CATMULL_SHIFT
-
 
471
       cdq
-
 
472
       idiv    ebx
-
 
473
  ;    mov    .dz13,eax
-
 
474
       push    eax
-
 
475
 
-
 
476
 
-
 
477
       mov	ax,word[.b_x3]
410
       sub	ax,word[.b_x1]
478
       sub	ax,word[.b_x1]
411
       cwde
479
       cwde
412
       shl	eax,ROUND
480
       shl	eax,ROUND
413
       cdq
481
       cdq
414
       idiv	ebx
482
       idiv	ebx
Line 440... Line 508...
440
       cdq
508
       cdq
441
       idiv	ebx
509
       idiv	ebx
442
 ;     mov      .dey13,eax
510
 ;     mov      .dey13,eax
443
       push	 eax
511
       push	 eax
444
end if
512
 
445
 
-
 
Line 446... Line 513...
446
       mov	ax,word[.t_x3]
513
       mov	ax,word[.t_x3]
447
       sub	ax,word[.t_x1]
514
       sub	ax,word[.t_x1]
448
       cwde
515
       cwde
449
       shl	eax,ROUND
516
       shl	eax,ROUND
Line 459... Line 526...
459
       cdq
526
       cdq
460
       idiv	ebx
527
       idiv	ebx
461
 ;     mov      .dty13,eax
528
 ;     mov      .dty13,eax
462
       push	 eax
529
       push	 eax
463
 
530
end if
464
   .bt_dx13_done:
531
   .bt_dx13_done:
465
 
532
 
Line 466... Line 533...
466
       mov	bx,.y3	     ; calc delta23
533
       mov	bx,.y3	     ; calc delta23
467
       sub	bx,.y2
534
       sub	bx,.y2
468
       jnz	.bt_dx23_make
535
       jnz	.bt_dx23_make
Line 482... Line 549...
482
       idiv	ebx
549
       idiv	ebx
483
 ;     mov      .dx23,eax
550
 ;     mov      .dx23,eax
484
       push	 eax
551
       push	 eax
485
 
552
 
Line 486... Line -...
486
       mov     ax,.z3
-
 
487
       sub     ax,.z2
-
 
488
       cwde
-
 
489
       shl     eax,CATMULL_SHIFT
-
 
490
       cdq
-
 
491
       idiv    ebx
-
 
492
     ; mov     .dz23,eax
-
 
493
       push    eax
-
 
494
 
-
 
495
if Ext>=SSE
553
if Ext>=SSE
Line 496... Line 554...
496
 
554
 
497
       sub	 esp,16
555
       sub	 esp,28
498
    ;   mov       eax,255
556
    ;   mov       eax,255
499
       cvtsi2ss  xmm4,[i255d]
557
       cvtsi2ss  xmm4,[i255d]
500
       cvtsi2ss  xmm3,ebx	     ;rcps
558
       cvtsi2ss  xmm3,ebx	     ;rcps
501
       divss	 xmm3,xmm4
559
       divss	 xmm3,xmm4
Line 527... Line 585...
527
       movhlps	 xmm1,xmm1
585
       movhlps	 xmm1,xmm1
528
       cvtps2pi  mm1,xmm1
586
       cvtps2pi  mm1,xmm1
529
       movq	 .dey23,mm0
587
       movq	 .dey23,mm0
530
       movq	 .dby23,mm1
588
       movq	 .dby23,mm1
531
else
589
;----------
-
 
590
       mov	 ax,.z3
-
 
591
       sub	 ax,.z2
-
 
592
       cwde
-
 
593
 
-
 
594
       movd	  mm2,[.t_x2]
-
 
595
       movd	  mm3,[.t_x3]
-
 
596
 
-
 
597
       punpcklwd  mm2,mm4
-
 
598
       punpcklwd  mm3,mm4
-
 
599
       psubd	  mm3,mm2
-
 
600
 
-
 
601
       cvtsi2ss  xmm1,eax
-
 
602
       movlhps	 xmm1,xmm1
-
 
603
       cvtpi2ps  xmm1,mm3
-
 
604
 
-
 
605
       divps	 xmm1,xmm3   ; xmm1--> | xxx | dz | dty | dtx |
-
 
606
 
-
 
607
       shufps	 xmm1,xmm1,11100001b
-
 
608
			     ; xmm1--> | xxx | dz | dtx | dty |
-
 
609
       cvtps2pi  mm0,xmm1    ; mm0 -> 2 delta dwords  | dtx | dty |
-
 
610
       movhlps	 xmm1,xmm1
-
 
611
       cvtss2si  eax,xmm1    ; eax --> 1 delta dword | dz |
-
 
612
       movq	 .dty23,mm0
-
 
613
       mov	 .dz23,eax
-
 
614
else
532
       mov	ax,word[.b_x3]
615
 
-
 
616
       mov     ax,.z3
-
 
617
       sub     ax,.z2
-
 
618
       cwde
-
 
619
       shl     eax,CATMULL_SHIFT
-
 
620
       cdq
-
 
621
       idiv    ebx
-
 
622
     ; mov     .dz23,eax
-
 
623
       push    eax
-
 
624
 
-
 
625
       mov	ax,word[.b_x3]
533
       sub	ax,word[.b_x2]
626
       sub	ax,word[.b_x2]
534
       cwde
627
       cwde
535
       shl	eax,ROUND
628
       shl	eax,ROUND
536
       cdq
629
       cdq
537
       idiv	ebx
630
       idiv	ebx
Line 563... Line 656...
563
       cdq
656
       cdq
564
       idiv	ebx
657
       idiv	ebx
565
 ;     mov      .dey23,eax
658
 ;     mov      .dey23,eax
566
       push	 eax
659
       push	 eax
567
end if
660
 
568
 
661
 
Line 569... Line 662...
569
       mov	ax,word[.t_x3]
662
       mov	ax,word[.t_x3]
570
       sub	ax,word[.t_x2]
663
       sub	ax,word[.t_x2]
571
       cwde
664
       cwde
572
       shl	eax,ROUND
665
       shl	eax,ROUND
Line 582... Line 675...
582
       cdq
675
       cdq
583
       idiv	ebx
676
       idiv	ebx
584
 ;     mov      .dty23,eax
677
 ;     mov      .dty23,eax
585
       push	 eax
678
       push	 eax
586
 
679
end if
587
      ;  sub     esp,40
680
      ;  sub     esp,40
588
   .bt_dx23_done:
681
   .bt_dx23_done:
589
       sub	 esp,64
682
       sub	 esp,64
590
       movsx	eax,.x1
683
       movsx	eax,.x1
591
       shl	eax,ROUND
684
       shl	eax,ROUND
592
       mov	.cx1,eax
685
       mov	.cx1,eax