1# sh testcase for fmac
2# mach: sh
3# as(sh):	-defsym sim_cpu=0
4
5	.include "testutils.inc"
6
7	start
8fmac_:
9	set_grs_a5a5
10	set_fprs_a5a5
11	# 0.0 * x + y = y.
12
13	fldi0	fr0
14	fldi1	fr1
15	fldi1	fr2
16	fmac	fr0, fr1, fr2
17	# check result.
18	fldi1	fr0
19	fcmp/eq	fr0, fr2
20	bt	.L0
21	fail
22.L0:
23	# x * y + 0.0 = x * y.
24
25	fldi1	fr0
26	fldi1	fr1
27	fldi0	fr2
28	# double it.
29	fadd	fr1, fr2
30	fmac	fr0, fr1, fr2
31	# check result.
32	fldi1	fr0
33	fadd	fr0, fr0
34	fcmp/eq	fr0, fr2
35	bt	.L1
36	fail
37.L1:
38	# x * 0.0 + y = y.
39
40	fldi1	fr0
41	fldi0	fr1
42	fldi1	fr2
43	fadd	fr2, fr2
44	fmac	fr0, fr1, fr2
45	# check result.
46	fldi1	fr0
47	# double fr0.
48	fadd	fr0, fr0
49	fcmp/eq	fr0, fr2
50	bt	.L2
51	fail
52.L2:
53	# x * 0.0 + 0.0 = 0.0
54
55	fldi1	fr0
56	fadd	fr0, fr0
57	fldi0	fr1
58	fldi0	fr2
59	fmac	fr0, fr1, fr2
60	# check result.
61	fldi0	fr0
62	fcmp/eq	fr0, fr2
63	bt	.L3
64	fail
65.L3:
66	# 0.0 * x + 0.0 = 0.0.
67
68	fldi0	fr0
69	fldi1	fr1
70	# double it.
71	fadd	fr1, fr1
72	fldi0	fr2
73	fmac	fr0, fr1, fr2
74	# check result.
75	fldi0	fr0
76	fcmp/eq	fr0, fr2
77	bt	.L4
78	fail
79.L4:
80	test_grs_a5a5
81	assert_fpreg_i	0, fr0
82	assert_fpreg_i	2, fr1
83	assert_fpreg_i	0, fr2
84	test_fpr_a5a5	fr3
85	test_fpr_a5a5	fr4
86	test_fpr_a5a5	fr5
87	test_fpr_a5a5	fr6
88	test_fpr_a5a5	fr7
89	test_fpr_a5a5	fr8
90	test_fpr_a5a5	fr9
91	test_fpr_a5a5	fr10
92	test_fpr_a5a5	fr11
93	test_fpr_a5a5	fr12
94	test_fpr_a5a5	fr13
95	test_fpr_a5a5	fr14
96	test_fpr_a5a5	fr15
97	pass
98	exit 0
99