xref: /netbsd-src/external/gpl3/gdb/dist/sim/testsuite/sh/prnd.s (revision 4b169a6ba595ae283ca507b26b15fdff40495b1c)
1*4b169a6bSchristos# sh testcase for prnd
2*4b169a6bSchristos# mach:	 shdsp
3*4b169a6bSchristos# as(shdsp):	-defsym sim_cpu=1 -dsp
4*4b169a6bSchristos
5*4b169a6bSchristos	# FIXME: opcode table ambiguity in ignored bits 4-7.
6*4b169a6bSchristos
7*4b169a6bSchristos	.include "testutils.inc"
8*4b169a6bSchristos
9*4b169a6bSchristos	start
10*4b169a6bSchristos	set_grs_a5a5
11*4b169a6bSchristos	lds	r0, a0
12*4b169a6bSchristos	pcopy	a0, a1
13*4b169a6bSchristos	lds	r0, x0
14*4b169a6bSchristos	lds	r0, x1
15*4b169a6bSchristos	lds	r0, y0
16*4b169a6bSchristos	lds	r0, y1
17*4b169a6bSchristos	pcopy	x0, m0
18*4b169a6bSchristos	pcopy	y1, m1
19*4b169a6bSchristos
20*4b169a6bSchristos	# prnd(0xa5a5a5a5) = 0xa5a60000
21*4b169a6bSchristos	prnd	x0, x0
22*4b169a6bSchristos	prnd	y0, y0
23*4b169a6bSchristos	assert_sreg	0xa5a60000, x0
24*4b169a6bSchristos	assert_sreg	0xa5a60000, y0
25*4b169a6bSchristos
26*4b169a6bSchristos	# prnd(1) = 1
27*4b169a6bSchristos	mov	#1, r0
28*4b169a6bSchristos	shll16	r0
29*4b169a6bSchristos	lds	r0, x0
30*4b169a6bSchristos	pcopy	x0, y0
31*4b169a6bSchristos	prnd	x0, x0
32*4b169a6bSchristos	prnd	y0, y0
33*4b169a6bSchristos	assert_sreg	0x10000, x0
34*4b169a6bSchristos	assert_sreg	0x10000, y0
35*4b169a6bSchristos
36*4b169a6bSchristos	# prnd(1.4999999) = 1
37*4b169a6bSchristos	mov	#1, r0
38*4b169a6bSchristos	shll8	r0
39*4b169a6bSchristos	or	#0x7f, r0
40*4b169a6bSchristos	shll8	r0
41*4b169a6bSchristos	or	#0xff, r0
42*4b169a6bSchristos	lds	r0, x0
43*4b169a6bSchristos	pcopy	x0, y0
44*4b169a6bSchristos	prnd	x0, x0
45*4b169a6bSchristos	prnd	y0, y0
46*4b169a6bSchristos	assert_sreg	0x10000, x0
47*4b169a6bSchristos	assert_sreg	0x10000, y0
48*4b169a6bSchristos
49*4b169a6bSchristos	# prnd(1.5) = 2
50*4b169a6bSchristos	mov	#1, r0
51*4b169a6bSchristos	shll8	r0
52*4b169a6bSchristos	or	#0x80, r0
53*4b169a6bSchristos	shll8	r0
54*4b169a6bSchristos	lds	r0, x0
55*4b169a6bSchristos	pcopy	x0, y0
56*4b169a6bSchristos	prnd	x0, x0
57*4b169a6bSchristos	prnd	y0, y0
58*4b169a6bSchristos	assert_sreg	0x20000, x0
59*4b169a6bSchristos	assert_sreg	0x20000, y0
60*4b169a6bSchristos
61*4b169a6bSchristos	# dct prnd
62*4b169a6bSchristos	set_dcfalse
63*4b169a6bSchristos	dct	prnd	x0, x1
64*4b169a6bSchristos	dct	prnd	y0, y1
65*4b169a6bSchristos	assert_sreg2	0xa5a5a5a5, x1
66*4b169a6bSchristos	assert_sreg2	0xa5a5a5a5, y1
67*4b169a6bSchristos	set_dctrue
68*4b169a6bSchristos	dct	prnd	x0, x1
69*4b169a6bSchristos	dct	prnd	y0, y1
70*4b169a6bSchristos	assert_sreg2	0x20000, x1
71*4b169a6bSchristos	assert_sreg2	0x20000, y1
72*4b169a6bSchristos
73*4b169a6bSchristos	# dcf prnd
74*4b169a6bSchristos	set_dctrue
75*4b169a6bSchristos	dcf	prnd	x0, m0
76*4b169a6bSchristos	dcf	prnd	y0, m1
77*4b169a6bSchristos	assert_sreg2	0xa5a5a5a5, m0
78*4b169a6bSchristos	assert_sreg2	0xa5a5a5a5, m1
79*4b169a6bSchristos	set_dcfalse
80*4b169a6bSchristos	dcf	prnd	x0, m0
81*4b169a6bSchristos	dcf	prnd	y0, m1
82*4b169a6bSchristos	assert_sreg2	0x20000, m0
83*4b169a6bSchristos	assert_sreg2	0x20000, m1
84*4b169a6bSchristos
85*4b169a6bSchristos	set_greg	0xa5a5a5a5, r0
86*4b169a6bSchristos	test_grs_a5a5
87*4b169a6bSchristos	assert_sreg	0xa5a5a5a5, a0
88*4b169a6bSchristos	assert_sreg2	0xa5a5a5a5, a1
89*4b169a6bSchristos	pass
90*4b169a6bSchristos	exit 0
91