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