arm: Support pac_key_* register operand for MRS/MSR in Armv8.1-M Mainline
[binutils-gdb.git] / sim / testsuite / sh / fipr.s
blob6a949aa6ec7f88fef654236057f85511331af1ad
1 # sh testcase for fipr $fvm, $fvn
2 # mach: sh
3 # as(sh): -defsym sim_cpu=0
5 .include "testutils.inc"
7 start
8 initv0:
9 set_grs_a5a5
10 set_fprs_a5a5
11 # Load 1 into fr0.
12 fldi1 fr0
13 # Load 2 into fr1.
14 fldi1 fr1
15 fadd fr1, fr1
16 # Load 4 into fr2.
17 fldi1 fr2
18 fadd fr2, fr2
19 fadd fr2, fr2
20 # Load 8 into fr3.
21 fmov fr2, fr3
22 fadd fr2, fr3
24 initv8:
25 fldi1 fr8
26 fldi0 fr9
27 fldi1 fr10
28 fldi0 fr11
30 fipr fv0, fv8
31 test1:
32 # Result will be in fr11.
33 assert_fpreg_i 1, fr0
34 assert_fpreg_i 2, fr1
35 assert_fpreg_i 4, fr2
36 assert_fpreg_i 8, fr3
37 assert_fpreg_x 0xa5a5a5a5, fr4
38 assert_fpreg_x 0xa5a5a5a5, fr5
39 assert_fpreg_x 0xa5a5a5a5, fr6
40 assert_fpreg_x 0xa5a5a5a5, fr7
41 assert_fpreg_i 1, fr8
42 assert_fpreg_i 0, fr9
43 assert_fpreg_i 1, fr10
44 assert_fpreg_i 5, fr11
45 assert_fpreg_x 0xa5a5a5a5, fr12
46 assert_fpreg_x 0xa5a5a5a5, fr13
47 assert_fpreg_x 0xa5a5a5a5, fr14
48 assert_fpreg_x 0xa5a5a5a5, fr15
50 test_grs_a5a5
51 test_infp:
52 # Test positive infinity
53 fldi0 fr11
54 mov.l infp, r0
55 lds r0, fpul
56 fsts fpul, fr0
57 fipr fv0, fv8
58 # fr11 should be plus infinity
59 assert_fpreg_x 0x7f800000, fr11
60 test_infm:
61 # Test negitive infinity
62 fldi0 fr11
63 mov.l infm, r0
64 lds r0, fpul
65 fsts fpul, fr0
66 fipr fv0, fv8
67 # fr11 should be plus infinity
68 assert_fpreg_x 0xff800000, fr11
69 test_qnanp:
70 # Test positive qnan
71 fldi0 fr11
72 mov.l qnanp, r0
73 lds r0, fpul
74 fsts fpul, fr0
75 fipr fv0, fv8
76 # fr11 should be plus qnan (or greater)
77 flds fr11, fpul
78 sts fpul, r1
79 cmp/ge r0, r1
80 bt .L0
81 fail
82 .L0:
83 test_snanp:
84 # Test positive snan
85 fldi0 fr11
86 mov.l snanp, r0
87 lds r0, fpul
88 fsts fpul, fr0
89 fipr fv0, fv8
90 # fr11 should be plus snan (or greater)
91 flds fr11, fpul
92 sts fpul, r1
93 cmp/ge r0, r1
94 bt .L1
95 fail
96 .L1:
97 .if 0
98 # Handling of nan and inf not implemented yet.
99 test_qnanm:
100 # Test negantive qnan
101 fldi0 fr11
102 mov.l qnanm, r0
103 lds r0, fpul
104 fsts fpul, fr0
105 fipr fv0, fv8
106 # fr11 should be minus qnan (or less)
107 flds fr11, fpul
108 sts fpul, r1
109 cmp/ge r1, r0
110 bt .L2
111 fail
112 .L2:
113 test_snanm:
114 # Test negative snan
115 fldi0 fr11
116 mov.l snanm, r0
117 lds r0, fpul
118 fsts fpul, fr0
119 fipr fv0, fv8
120 # fr11 should be minus snan (or less)
121 flds fr11, fpul
122 sts fpul, r1
123 cmp/ge r1, r0
124 bt .L3
125 fail
126 .L3:
127 .endif
128 pass
129 exit 0
131 .align 2
132 qnanp: .long 0x7f800001
133 qnanm: .long 0xff800001
134 snanp: .long 0x7fc00000
135 snanm: .long 0xffc00000
136 infp: .long 0x7f800000
137 infm: .long 0xff800000