xref: /netbsd-src/external/gpl3/gdb/dist/sim/testsuite/sh/psub.s (revision 4b169a6ba595ae283ca507b26b15fdff40495b1c)
1# sh testcase for psub
2# mach:	 shdsp
3# as(shdsp):	-defsym sim_cpu=1 -dsp
4
5	.include "testutils.inc"
6
7	start
8	set_grs_a5a5
9	lds	r0, a0
10	pcopy	a0, a1
11	lds	r0, x0
12	lds	r0, x1
13	lds	r0, y0
14	lds	r0, y1
15	pcopy	x0, m0
16	pcopy	y1, m1
17
18psub_sx_sy:
19	# 0xa5a5a5a5 minus 0xa5a5a5a5 equals zero
20	psub	x0, y0, a0
21	assert_sreg	0, a0
22
23psub_sy_sx:
24	# 100 - 25 = 75
25	mov	#100, r0
26	mov	#25, r1
27	lds	r0, y1
28	lds	r1, x1
29	psub	y1, x1, a0
30	assert_sreg	75, a0
31
32dct_psub:
33	# 100 - 25 = 75
34	set_dcfalse
35	dct	psub	y1, x1, a1
36	assert_sreg2	0xa5a5a5a5, a1
37	set_dctrue
38	dct	psub	y1, x1, a1
39	assert_sreg2	75, a1
40
41dcf_psub:
42	# 25 - 100 = -75
43	set_dctrue
44	dcf	psub	x1, y1, m1
45	assert_sreg2	0xa5a5a5a5, m1
46	set_dcfalse
47	dcf	psub	x1, y1, m1
48	assert_sreg2	-75, m1
49
50psub_pmuls:
51	# 25 - 100 = -75, and 2 x 2 = 8 (yes, eight, not four)
52	mov	#2, r0
53	shll16	r0
54	lds	r0, x0
55	lds	r0, y0
56	psub	x1, y1, a1	pmuls	x0, y0, a0
57	assert_sreg	8, a0
58	assert_sreg2	-75, a1
59
60	set_greg	0xa5a5a5a5, r0
61	set_greg	0xa5a5a5a5, r1
62	test_grs_a5a5
63	pass
64	exit 0
65