1# sh testcase for fsub
2# mach: sh
3# as(sh):	-defsym sim_cpu=0
4
5	.include "testutils.inc"
6
7	start
8fsub_single:
9	set_grs_a5a5
10	set_fprs_a5a5
11	# 0.0 - 0.0 = 0.0.
12	fldi0	fr0
13	fldi0	fr1
14	fsub	fr0, fr1
15	fldi0	fr2
16	fcmp/eq	fr1, fr2
17	bt	.L0
18	fail
19.L0:
20	# 1.0 - 0.0 = 1.0.
21	fldi0	fr0
22	fldi1	fr1
23	fsub	fr0, fr1
24	fldi1	fr2
25	fcmp/eq	fr1, fr2
26	bt	.L1
27	fail
28.L1:
29	# 1.0 - 1.0 = 0.0.
30	fldi1	fr0
31	fldi1	fr1
32	fsub	fr0, fr1
33	fldi0	fr2
34	fcmp/eq	fr1, fr2
35	bt	.L2
36	fail
37.L2:
38	# 0.0 - 1.0 = -1.0.
39	fldi1	fr0
40	fldi0	fr1
41	fsub	fr0, fr1
42	fldi1	fr2
43	fneg	fr2
44	fcmp/eq	fr1, fr2
45	bt	.L3
46	fail
47.L3:
48	test_grs_a5a5
49	assert_fpreg_i	 1, fr0
50	assert_fpreg_i	-1, fr1
51	assert_fpreg_i	-1, fr2
52	test_fpr_a5a5	fr3
53	test_fpr_a5a5	fr4
54	test_fpr_a5a5	fr5
55	test_fpr_a5a5	fr6
56	test_fpr_a5a5	fr7
57	test_fpr_a5a5	fr8
58	test_fpr_a5a5	fr9
59	test_fpr_a5a5	fr10
60	test_fpr_a5a5	fr11
61	test_fpr_a5a5	fr12
62	test_fpr_a5a5	fr13
63	test_fpr_a5a5	fr14
64	test_fpr_a5a5	fr15
65
66fsub_double:
67	set_grs_a5a5
68	set_fprs_a5a5
69	double_prec
70	# 0.0 - 0.0 = 0.0.
71	fldi0	fr0
72	fldi0	fr2
73	_s2d	fr0, dr0
74	_s2d	fr2, dr2
75	fsub	dr0, dr2
76	fldi0	fr4
77	_s2d	fr4, dr4
78	fcmp/eq	dr2, dr4
79	bt	.L10
80	fail
81.L10:
82	# 1.0 - 0.0 = 1.0.
83	fldi0	fr0
84	fldi1	fr2
85	_s2d	fr0, dr0
86	_s2d	fr2, dr2
87	fsub	dr0, dr2
88	fldi1	fr4
89	_s2d	fr4, dr4
90	fcmp/eq	dr2, dr4
91	bt	.L11
92	fail
93.L11:
94	# 1.0 - 1.0 = 0.0.
95	fldi1	fr0
96	fldi1	fr2
97	_s2d	fr0, dr0
98	_s2d	fr2, dr2
99	fsub	dr0, dr2
100	fldi0	fr4
101	_s2d	fr4, dr4
102	fcmp/eq	dr2, dr4
103	bt	.L12
104	fail
105.L12:
106	# 0.0 - 1.0 = -1.0.
107	fldi1	fr0
108	fldi0	fr2
109	_s2d	fr0, dr0
110	_s2d	fr2, dr2
111	fsub	dr0, dr2
112	fldi1	fr4
113	single_prec
114	fneg	fr4
115	double_prec
116	_s2d	fr4, dr4
117	fcmp/eq	dr2, dr4
118	bt	.L13
119	fail
120.L13:
121	test_grs_a5a5
122	assert_dpreg_i	 1, dr0
123	assert_dpreg_i	-1, dr2
124	assert_dpreg_i	-1, dr4
125	test_fpr_a5a5	fr6
126	test_fpr_a5a5	fr7
127	test_fpr_a5a5	fr8
128	test_fpr_a5a5	fr9
129	test_fpr_a5a5	fr10
130	test_fpr_a5a5	fr11
131	test_fpr_a5a5	fr12
132	test_fpr_a5a5	fr13
133	test_fpr_a5a5	fr14
134	test_fpr_a5a5	fr15
135	pass
136	exit 0
137