/examples/bench/memcpy.asm
	name memcpy
	public _tb_memcpy_mov, _tb_memcpy_mov16, _tb_memcpy_xfer, _tb_memcpy_xfer16

IOP	SEGMENT

_tb_memcpy_mov:
	lpd ga, [pp].4  ; source
	lpd gb, [pp].8  ; dest
	mov gc, [pp].12 ; len
	movi ix, 0
loop1:  movb [gb+ix+], [ga+ix]
	dec gc
	jnz gc, loop1
	hlt

_tb_memcpy_mov16:
	lpd ga, [pp].4  ; source
	lpd gb, [pp].8  ; dest
	mov gc, [pp].12 ; len
	movi ix, 0
loop2:  mov [gb+ix+], [ga+ix]
	dec gc
	jnz gc, loop2
	hlt

_tb_memcpy_xfer:
	lpd ga, [pp].4  ; source
	lpd gb, [pp].8  ; dest
	movi cc, 0C00Ch ; mem-mem, byte count termination
	wid 8, 8
	xfer
	mov bc, [pp].12 ; len
	hlt

_tb_memcpy_xfer16:
	lpd ga, [pp].4  ; source
	lpd gb, [pp].8  ; dest
	movi cc, 0C00Ch ; mem-mem, byte count termination
	wid 16, 16
	xfer
	mov bc, [pp].12 ; len
	hlt

IOP	ENDS