David 11 лет назад
Родитель
Сommit
1ac7730c33
1 измененных файлов с 13 добавлено и 14 удалено
  1. 13 14
      filtros/blur_asm.asm

+ 13 - 14
filtros/blur_asm.asm

@@ -21,9 +21,6 @@ extern convulcion_matrix
 
 
 ; Mascaras y esas cosas
 ; Mascaras y esas cosas
 section .data
 section .data
-	;copiar: db 0,1,2,3,0,1,2,3,3,2,1,0,3,2,1,0;0,1,2,3,0,1,2,3
-	copiar: db 0,1,2,3
-	;copiar: db 3,2,1,0,3,2,1,0,3,2,1,0,3,2,1,0
 
 
 section .text
 section .text
 ;void blur_asm    (
 ;void blur_asm    (
@@ -60,6 +57,7 @@ blur_asm:
 	mov rdi, radius
 	mov rdi, radius
 	call convulcion_matrix
 	call convulcion_matrix
 	mov matriz, rax
 	mov matriz, rax
+	mov r15, matriz ;copio puntero inicial
 
 
 	movdqu  xmm0, [rsp]
 	movdqu  xmm0, [rsp]
 	add     rsp, 16
 	add     rsp, 16
@@ -104,7 +102,7 @@ blur_asm:
 	inc filas_faltan ; 2r+1 filas
 	inc filas_faltan ; 2r+1 filas
 	mov tmp_src, src
 	mov tmp_src, src
 	pxor xmm10,xmm10
 	pxor xmm10,xmm10
-	movdqu xmm11,[copiar]
+	mov matriz, r15
 	.loopInterno:
 	.loopInterno:
 		mov col_faltan, radius
 		mov col_faltan, radius
 		add col_faltan, radius
 		add col_faltan, radius
@@ -137,9 +135,7 @@ blur_asm:
 			pxor xmm6,xmm6
 			pxor xmm6,xmm6
 			pxor xmm7,xmm7
 			pxor xmm7,xmm7
 			pxor xmm8,xmm8
 			pxor xmm8,xmm8
-			pxor xmm11,xmm11
 
 
-			movdqa xmm12, xmm2 ;salvo
 			punpcklbw xmm3, xmm2 ;pix a,b
 			punpcklbw xmm3, xmm2 ;pix a,b
 			punpckhbw xmm4, xmm2 ;pix c,d
 			punpckhbw xmm4, xmm2 ;pix c,d
 
 
@@ -149,11 +145,14 @@ blur_asm:
 			punpckhwd xmm8, xmm4 ;pix d
 			punpckhwd xmm8, xmm4 ;pix d
 
 
 			;cargo 1 elem de matriz como single
 			;cargo 1 elem de matriz como single
-			movd xmm9, [matriz]
-			;pshufb xmm9, xmm11;lo clono con mascara a los 4 elem del xmm
-			pshufd xmm9, xmm9, 0x00
+			movdqu xmm9, [matriz] ;traje 4 float.
 
 
+			pshufd xmm11, xmm9, 0x00
+			pshufd xmm12, xmm9, 0x55
+			pshufd xmm13, xmm9, 0xAA
+			pshufd xmm14, xmm9, 0xFF
 
 
+			;acomodo los registros
 			psrldq xmm5, 3
 			psrldq xmm5, 3
 			psrldq xmm6, 3
 			psrldq xmm6, 3
 			psrldq xmm7, 3
 			psrldq xmm7, 3
@@ -164,10 +163,10 @@ blur_asm:
 			CVTDQ2PS xmm7,xmm7 
 			CVTDQ2PS xmm7,xmm7 
 			CVTDQ2PS xmm8,xmm8 
 			CVTDQ2PS xmm8,xmm8 
 			;multiplico cada pixel por su coeficiente de la matriz(float)
 			;multiplico cada pixel por su coeficiente de la matriz(float)
-			mulps xmm5, xmm9
-			mulps xmm6, xmm9
-			mulps xmm7, xmm9
-			mulps xmm8, xmm9
+			mulps xmm5, xmm11
+			mulps xmm6, xmm12
+			mulps xmm7, xmm13
+			mulps xmm8, xmm14
 
 
 			;acumulo
 			;acumulo
 			addps xmm10, xmm5
 			addps xmm10, xmm5
@@ -187,7 +186,7 @@ blur_asm:
 
 
 
 
     		add src, PIXEL_SIZE*4      ; Incremento 4 pixeles
     		add src, PIXEL_SIZE*4      ; Incremento 4 pixeles
-			
+			add matriz, PIXEL_SIZE*4
 			jmp .loopFila
 			jmp .loopFila
 
 
 		.retroceder:
 		.retroceder: