OpenCores
URL https://opencores.org/ocsvn/scarts/scarts/trunk

Subversion Repositories scarts

[/] [scarts/] [trunk/] [toolchain/] [scarts-gdb/] [gdb-6.8/] [sim/] [testsuite/] [sim/] [sh/] [fmov.s] - Rev 26

Compare with Previous | Blame | View Log

# sh testcase for all fmov instructions
# mach: sh
# as(sh):	-defsym sim_cpu=0
 
	.include "testutils.inc"
 
	.macro init
	fldi0	fr0
	fldi1	fr1
	fldi1	fr2
	fldi1	fr3
	.endm
 
	start
 
fmov1:	# Test fr -> fr.
	set_grs_a5a5
	set_fprs_a5a5
	init
	single_prec
	sz_32
	fmov	fr0, fr1
	# Ensure fr0 and fr1 are now equal.
	fcmp/eq	fr0, fr1
	bt	fmov2
	fail
 
fmov2:	# Test dr -> dr.
	init
	double_prec
	sz_64
	fmov	dr0, dr2
	# Ensure dr0 and dr2 are now equal.
	fcmp/eq	dr0, dr2
	bt	fmov3
	fail
 
fmov3:	# Test dr -> xd and xd -> dr.
	init
	sz_64
	fmov	dr0, xd0
	# Ensure dr0 and xd0 are now equal.
	fmov	xd0, dr2
	fcmp/eq	dr0, dr2
	bt	fmov4
	fail
 
fmov4:	# Test xd -> xd.
	init
	sz_64
	double_prec
	fmov	dr0, xd0
	fmov	xd0, xd2
	fmov	xd2, dr2
	# Ensure dr0 and dr2 are now equal.
	fcmp/eq	dr0, dr2
	bt	.L0
	fail
 
	# FIXME: test fmov.s fr -> @gr,      fmov dr -> @gr
	# FIXME: test fmov.s @gr -> fr,      fmov @gr -> dr
	# FIXME: test fmov.s @gr+ -> fr,     fmov @gr+ -> dr
	# FIXME: test fmov.s fr -> @-gr,     fmov dr -> @-gr
	# FIXME: test fmov.s @(r0,gr) -> fr, fmov @(r0,gr) -> dr
	# FIXME: test fmov.s fr -> @(r0,gr), fmov dr -> @(r0,gr)
 
.L0:
	test_grs_a5a5
	sz_32
	single_prec
	assert_fpreg_i	0, fr0
	assert_fpreg_i	1, fr1
	assert_fpreg_i	0, fr2
	assert_fpreg_i	1, fr3
	test_fpr_a5a5	fr4
	test_fpr_a5a5	fr5
	test_fpr_a5a5	fr6
	test_fpr_a5a5	fr7
	test_fpr_a5a5	fr8
	test_fpr_a5a5	fr9
	test_fpr_a5a5	fr10
	test_fpr_a5a5	fr11
	test_fpr_a5a5	fr12
	test_fpr_a5a5	fr13
	test_fpr_a5a5	fr14
	test_fpr_a5a5	fr15
 
fmov5:	# Test fr -> @rn and @rn -> fr.
	init
	sz_32
	single_prec
	# FIXME!  Use a reserved memory location!
	mov	#40, r0
	shll8	r0
	fmov	fr0, @r0
	fmov	@r0, fr1
	fcmp/eq	fr0, fr1
	bt	fmov6
	fail
 
fmov6:	# Test dr -> @rn and @rn -> dr.
	init
	sz_64
	double_prec
	mov	#40, r0
	shll8	r0
	fmov	dr0, @r0
	fmov	@r0, dr2
	fcmp/eq	dr0, dr2
	bt	fmov7
	fail
 
fmov7:	# Test xd -> @rn and @rn -> xd.
	init
	sz_64
	double_prec
	mov	#40, r0
	shll8	r0
	fmov	dr0, xd0
	fmov	xd0, @r0
	fmov	@r0, xd2
	fmov	xd2, dr2
	fcmp/eq	dr0, dr2
	bt	fmov8
	fail
 
fmov8:	# Test fr -> @-rn.
	init
	sz_32
	single_prec
	mov	#40, r0
	shll8	r0
	# Preserve.
	mov	r0, r1
	fmov	fr0, @-r0
	fmov	@r0, fr2
	fcmp/eq	fr0, fr2
	bt	f8b
	fail
f8b:	# check pre-dec.
	add	#4, r0
	cmp/eq	r0, r1
	bt	fmov9
	fail
 
fmov9:	# Test dr -> @-rn.
	init
	sz_64
	double_prec
	mov	#40, r0
	shll8	r0
	# Preserve r0.
	mov	r0, r1
	fmov	dr0, @-r0
	fmov	@r0, dr2
	fcmp/eq	dr0, dr2
	bt	f9b
	fail
f9b:	# check pre-dec.
	add	#8, r0
	cmp/eq	r0, r1
	bt	fmov10
	fail
 
fmov10:	# Test xd -> @-rn.
	init
	sz_64
	double_prec
	mov	#40, r0
	shll8	r0
	# Preserve r0.
	mov	r0, r1
	fmov	dr0, xd0
	fmov	xd0, @-r0
	fmov	@r0, xd2
	fmov	xd2, dr2
	fcmp/eq	dr0, dr2
	bt	f10b
	fail
f10b:	# check pre-dec.
	add	#8, r0
	cmp/eq	r0, r1
	bt	fmov11
	fail
 
fmov11:	# Test @rn+ -> fr.
	init
	sz_32
	single_prec
	mov	#40, r0
	shll8	r0
	# Preserve r0.
	mov	r0, r1
	fmov	fr0, @r0
	fmov	@r0+, fr2
	fcmp/eq	fr0, fr2
	bt	f11b
	fail
f11b:	# check post-inc.
	add	#4, r1
	cmp/eq	r0, r1
	bt	fmov12
	fail
 
fmov12:	# Test @rn+ -> dr.
	init
	sz_64
	double_prec
	mov	#40, r0
	shll8	r0
	# preserve r0.
	mov	r0, r1
	fmov	dr0, @r0
	fmov	@r0+, dr2
	fcmp/eq	dr0, dr2
	bt	f12b
	fail
f12b:	# check post-inc.
	add	#8, r1
	cmp/eq	r0, r1
	bt	fmov13
	fail
 
fmov13:	# Test @rn -> xd.
	init
	sz_64
	double_prec
	mov	#40, r0
	shll8	r0
	# Preserve r0.
	mov	r0, r1
	fmov	dr0, xd0
	fmov	xd0, @r0
	fmov	@r0+, xd2
	fmov	xd2, dr2
	fcmp/eq	dr0, dr2
	bt	f13b
	fail
f13b:
	add	#8, r1
	cmp/eq	r0, r1
	bt	fmov14
	fail
 
fmov14:	# Test fr -> @(r0,rn), @(r0, rn) -> fr.
	init
	sz_32
	single_prec
	mov	#40, r0
	shll8	r0
	mov	#0, r1
	fmov	fr0, @(r0, r1)
	fmov	@(r0, r1), fr1
	fcmp/eq	fr0, fr1
	bt	fmov15
	fail
 
fmov15:	# Test dr -> @(r0, rn), @(r0, rn) -> dr.
	init
	sz_64
	double_prec
	mov	#40, r0
	shll8	r0
	mov	#0, r1
	fmov	dr0, @(r0, r1)
	fmov	@(r0, r1), dr2
	fcmp/eq	dr0, dr2
	bt	fmov16
	fail
 
fmov16:	# Test xd -> @(r0, rn), @(r0, rn) -> xd.
	init
	sz_64
	double_prec
	mov	#40, r0
	shll8	r0
	mov	#0, r1
	fmov	dr0, xd0
	fmov	xd0, @(r0, r1)
	fmov	@(r0, r1), xd2
	fmov	xd2, dr2
	fcmp/eq	dr0, dr2
	bt	.L1
	fail
.L1:
	assertreg0	0x2800
	assertreg	0, r1
	test_gr_a5a5	r2
	test_gr_a5a5	r3
	test_gr_a5a5	r4
	test_gr_a5a5	r5
	test_gr_a5a5	r6
	test_gr_a5a5	r7
	test_gr_a5a5	r8
	test_gr_a5a5	r9
	test_gr_a5a5	r10
	test_gr_a5a5	r11
	test_gr_a5a5	r12
	test_gr_a5a5	r13
	test_gr_a5a5	r14
 
	sz_32
	single_prec
	assert_fpreg_i	0, fr0
	assert_fpreg_i	1, fr1
	assert_fpreg_i	0, fr2
	assert_fpreg_i	1, fr3
	test_fpr_a5a5	fr4
	test_fpr_a5a5	fr5
	test_fpr_a5a5	fr6
	test_fpr_a5a5	fr7
	test_fpr_a5a5	fr8
	test_fpr_a5a5	fr9
	test_fpr_a5a5	fr10
	test_fpr_a5a5	fr11
	test_fpr_a5a5	fr12
	test_fpr_a5a5	fr13
	test_fpr_a5a5	fr14
	test_fpr_a5a5	fr15
 
	pass
	exit 0
 

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.