global Four_Byte_Walk
global Eight_Byte_Walk
global Sixteen_Byte_Walk

	section .text

; Params:       rdi = ptr to memory area
;               rsi = length in bytes
;               rdx = loops
;		rcx
; 8 byte stride
Eight_Byte_Walk:
	push r10
	add     rsi, rdi
	sub rsi, 256
.L1:
	mov     r10, rdi
.L2:
;	mov     [8+r10], [r10]
;	mov     rax, [8+r10]
;	mov     rax, [16+r10]
;	mov     rax, [24+r10]
;	mov     rax, [32+r10]
;	mov     rax, [40+r10]
;	mov     rax, [48+r10]
;	mov     rax, [56+r10]
	
;	bt r10, 0
;	bt r10, 32
;	bt r10, 64
;	bt r10, 96
;	bt r10, 128
;	bt r10, 160
;	bt r10, 192
;	bt r10, 224

	mov byte[0+r10], 1
        mov byte[8+r10], 1
        mov byte[16+r10], 1
        mov byte[32+r10], 1
        mov byte[40+r10], 1
        mov byte[48+r10], 1
        mov byte[56+r10], 1
        mov byte[64+r10], 1
        mov byte[72+r10], 1
        mov byte[80+r10], 1
        mov byte[88+r10], 1
        mov byte[96+r10], 1
        mov byte[104+r10], 1
        mov byte[112+r10], 1
        mov byte[120+r10], 1
        mov byte[128+r10], 1
        mov byte[136+r10], 1
        mov byte[144+r10], 1
        mov byte[152+r10], 1
        mov byte[160+r10], 1
        mov byte[168+r10], 1
        mov byte[176+r10], 1
        mov byte[184+r10], 1
        mov byte[192+r10], 1
        mov byte[200+r10], 1
        mov byte[208+r10], 1
        mov byte[216+r10], 1
        mov byte[224+r10], 1
        mov byte[232+r10], 1
        mov byte[240+r10], 1
        mov byte[248+r10], 1
;        inc [256+r16]


;	inc [32+r10]
;	inc [64+r10]
;	inc [96+r10]
;	inc [128+r10]
;	inc [160+r10]
;	inc [192+r10]
;	inc [224+r10]

;	mov bx, [r10]
;	mov cx, [8+r10]
;	mov bx, [16+r10]
;	mov cx, [24+r10]
;	mov bx, [32+r10]
;	mov cx, [40+r10]
;	mov bx, [48+r10]
;	mov cx, [56+r10]

	add     r10, 256
	cmp     r10, rsi
	jb      .L2

	dec     rdx
	jnz     .L1
	
	pop r10
	ret
