[Aporte] Strlen XMM

Iniciado por cpu2, 22 Marzo 2014, 21:21 PM

0 Miembros y 1 Visitante están viendo este tema.

cpu2

Bueno aqui les dejo una implementacion de una strlen en XMM, en teoria tendria que ser muchisimo mas rapida que la strlen normal, pero no esta testeada.

Código (asm) [Seleccionar]
i.section .text
.globl _start

_start:

pushq %r8
pushq %r9
pushq %r12
movq %r8, %r9

pxor %xmm1, %xmm1

_x0:

movdqu (%r8), %xmm0
pcmpeqb %xmm0, %xmm1
pmovmskb %xmm1, %r12d
addq $16, %r8
andl $0xffffffff, %r12d
jz _x0

bsf %r12d, %r12d
subq $16, %r8
subq %r9, %r8
addl %r12d, %r8d

popq %r12
popq %r9
popq %r8


Si tienen una CPU de 32 bits solamente cambien los registros, el puntero a la cadena es %r8.

Un saludo.