|
|
@@ -1,7 +1,7 @@
|
|
|
default rel global _blur_asm
|
|
|
global blur_asm
|
|
|
|
|
|
-extern convulcion_matriz
|
|
|
+extern convulcion_matrix
|
|
|
|
|
|
; Alias para no volverme loco con los registros
|
|
|
%define src rdi
|
|
|
@@ -43,6 +43,28 @@ blur_asm:
|
|
|
push r14
|
|
|
push r15
|
|
|
.init:
|
|
|
+
|
|
|
+ push src
|
|
|
+ push dst
|
|
|
+ push cols
|
|
|
+ push filas
|
|
|
+ push radius
|
|
|
+
|
|
|
+ sub rsp, 16
|
|
|
+ movdqu [rsp],xmm0
|
|
|
+
|
|
|
+ mov rdi, radius
|
|
|
+ call convulcion_matrix
|
|
|
+
|
|
|
+ movdqu xmm0, [rsp]
|
|
|
+ add rsp, 16
|
|
|
+
|
|
|
+ pop radius
|
|
|
+ pop filas
|
|
|
+ pop cols
|
|
|
+ pop dst
|
|
|
+ pop src
|
|
|
+
|
|
|
mov r14,rcx ;guardo rcx para loop
|
|
|
mov r9, rdx ;salvo rdx por los mul
|
|
|
mov rax, PIXEL_SIZE
|
|
|
@@ -105,9 +127,8 @@ blur_asm:
|
|
|
punpckhwd xmm4, xmm8
|
|
|
|
|
|
;cargo 1 elem de matriz como single
|
|
|
- ;FIXME esto carga 4
|
|
|
- movdqu xmm9, [matriz]
|
|
|
- ;lo clono con mascara a los 4 elem del xmm
|
|
|
+ movd xmm9, [matriz]
|
|
|
+ ;TODO lo clono con mascara a los 4 elem del xmm
|
|
|
|
|
|
;multiplico cada pixel por su coeficiente de la matriz(float)
|
|
|
mulps xmm5, xmm9
|