xref: /openbmc/qemu/tests/tcg/xtensa/test_fp0_arith.S (revision 44423107e7b5731ef40c5c8632a5bad8b49d0838)
19d012e8eSMax Filippov#include "macros.inc"
2e95ef431SMax Filippov#include "fpu.h"
39d012e8eSMax Filippov
49d012e8eSMax Filippovtest_suite fp0_arith
59d012e8eSMax Filippov
69d012e8eSMax Filippov#if XCHAL_HAVE_FP
79d012e8eSMax Filippov
89d012e8eSMax Filippov.macro movfp fr, v
99d012e8eSMax Filippov    movi    a2, \v
109d012e8eSMax Filippov    wfr     \fr, a2
119d012e8eSMax Filippov.endm
129d012e8eSMax Filippov
13e95ef431SMax Filippov.macro check_res fr, r, sr
149d012e8eSMax Filippov    rfr     a2, \fr
159d012e8eSMax Filippov    dump    a2
169d012e8eSMax Filippov    movi    a3, \r
179d012e8eSMax Filippov    assert  eq, a2, a3
189d012e8eSMax Filippov    rur     a2, fsr
19e95ef431SMax Filippov#if DFPU
20e95ef431SMax Filippov    movi    a3, \sr
21e95ef431SMax Filippov    assert  eq, a2, a3
22e95ef431SMax Filippov#else
239d012e8eSMax Filippov    assert  eqi, a2, 0
24e95ef431SMax Filippov#endif
259d012e8eSMax Filippov.endm
269d012e8eSMax Filippov
279d012e8eSMax Filippovtest add_s
289d012e8eSMax Filippov    movi    a2, 1
299d012e8eSMax Filippov    wsr     a2, cpenable
309d012e8eSMax Filippov
319d012e8eSMax Filippov    test_op2 add.s, f0, f1, f2, 0x3fc00000, 0x34400000, \
32e95ef431SMax Filippov        0x3fc00002, 0x3fc00001, 0x3fc00002, 0x3fc00001, \
33e95ef431SMax Filippov             FSR_I,      FSR_I,      FSR_I,      FSR_I
349d012e8eSMax Filippov    test_op2 add.s, f3, f4, f5, 0x3fc00000, 0x34a00000, \
35e95ef431SMax Filippov        0x3fc00002, 0x3fc00002, 0x3fc00003, 0x3fc00002, \
36e95ef431SMax Filippov             FSR_I,      FSR_I,      FSR_I,      FSR_I
379d012e8eSMax Filippov
389d012e8eSMax Filippov    /* MAX_FLOAT + MAX_FLOAT = +inf/MAX_FLOAT  */
399d012e8eSMax Filippov    test_op2 add.s, f6, f7, f8, 0x7f7fffff, 0x7f7fffff, \
40e95ef431SMax Filippov        0x7f800000, 0x7f7fffff, 0x7f800000, 0x7f7fffff, \
41e95ef431SMax Filippov            FSR_OI,     FSR_OI,     FSR_OI,     FSR_OI
429d012e8eSMax Filippovtest_end
439d012e8eSMax Filippov
449d012e8eSMax Filippovtest add_s_inf
459d012e8eSMax Filippov    /* 1 + +inf = +inf  */
469d012e8eSMax Filippov    test_op2 add.s, f6, f7, f8, 0x3fc00000, 0x7f800000, \
47e95ef431SMax Filippov        0x7f800000, 0x7f800000, 0x7f800000, 0x7f800000, \
48e95ef431SMax Filippov             FSR__,      FSR__,      FSR__,      FSR__
499d012e8eSMax Filippov
509d012e8eSMax Filippov    /* +inf + -inf = default NaN */
519d012e8eSMax Filippov    test_op2 add.s, f0, f1, f2, 0x7f800000, 0xff800000, \
52e95ef431SMax Filippov        0x7fc00000, 0x7fc00000, 0x7fc00000, 0x7fc00000, \
53e95ef431SMax Filippov             FSR_V,      FSR_V,      FSR_V,      FSR_V
549d012e8eSMax Filippovtest_end
559d012e8eSMax Filippov
56e95ef431SMax Filippov#if DFPU
57e95ef431SMax Filippovtest add_s_nan_dfpu
58e95ef431SMax Filippov    /* 1 + QNaN = QNaN  */
599d012e8eSMax Filippov    test_op2 add.s, f9, f10, f11, 0x3fc00000, 0x7fc00001, \
60e95ef431SMax Filippov        0x7fc00001, 0x7fc00001, 0x7fc00001, 0x7fc00001, \
61e95ef431SMax Filippov             FSR__,      FSR__,      FSR__,      FSR__
62e95ef431SMax Filippov    /* 1 + SNaN = QNaN  */
639d012e8eSMax Filippov    test_op2 add.s, f12, f13, f14, 0x3fc00000, 0x7f800001, \
64e95ef431SMax Filippov        0x7fc00001, 0x7fc00001, 0x7fc00001, 0x7fc00001, \
65e95ef431SMax Filippov             FSR_V,      FSR_V,      FSR_V,      FSR_V
669d012e8eSMax Filippov
67e95ef431SMax Filippov    /* SNaN1 + SNaN2 = QNaN2 */
689d012e8eSMax Filippov    test_op2 add.s, f15, f0, f1, 0x7f800001, 0x7fbfffff, \
69e95ef431SMax Filippov        0x7fffffff, 0x7fffffff, 0x7fffffff, 0x7fffffff, \
70e95ef431SMax Filippov             FSR_V,      FSR_V,      FSR_V,      FSR_V
719d012e8eSMax Filippov    test_op2 add.s, f2, f3, f4, 0x7fbfffff, 0x7f800001, \
72e95ef431SMax Filippov        0x7fc00001, 0x7fc00001, 0x7fc00001, 0x7fc00001, \
73e95ef431SMax Filippov             FSR_V,      FSR_V,      FSR_V,      FSR_V
74e95ef431SMax Filippov    /* QNaN1 + SNaN2 = QNaN2 */
759d012e8eSMax Filippov    test_op2 add.s, f5, f6, f7, 0x7fc00001, 0x7fbfffff, \
76e95ef431SMax Filippov        0x7fffffff, 0x7fffffff, 0x7fffffff, 0x7fffffff, \
77e95ef431SMax Filippov             FSR_V,      FSR_V,      FSR_V,      FSR_V
78e95ef431SMax Filippov    /* SNaN1 + QNaN2 = QNaN2 */
799d012e8eSMax Filippov    test_op2 add.s, f8, f9, f10, 0x7fbfffff, 0x7fc00001, \
80e95ef431SMax Filippov        0x7fc00001, 0x7fc00001, 0x7fc00001, 0x7fc00001, \
81e95ef431SMax Filippov             FSR_V,      FSR_V,      FSR_V,      FSR_V
829d012e8eSMax Filippovtest_end
83e95ef431SMax Filippov#else
84e95ef431SMax Filippovtest add_s_nan_fpu2k
85e95ef431SMax Filippov    /* 1 + QNaN = QNaN  */
86e95ef431SMax Filippov    test_op2 add.s, f9, f10, f11, 0x3fc00000, 0x7fc00001, \
87e95ef431SMax Filippov        0x7fc00001, 0x7fc00001, 0x7fc00001, 0x7fc00001, \
88e95ef431SMax Filippov             FSR__,      FSR__,      FSR__,      FSR__
89e95ef431SMax Filippov    /* 1 + SNaN = SNaN  */
90e95ef431SMax Filippov    test_op2 add.s, f12, f13, f14, 0x3fc00000, 0x7f800001, \
91e95ef431SMax Filippov        0x7f800001, 0x7f800001, 0x7f800001, 0x7f800001, \
92e95ef431SMax Filippov             FSR__,      FSR__,      FSR__,      FSR__
93e95ef431SMax Filippov    /* SNaN1 + SNaN2 = SNaN1 */
94e95ef431SMax Filippov    test_op2 add.s, f15, f0, f1, 0x7f800001, 0x7fbfffff, \
95e95ef431SMax Filippov        0x7f800001, 0x7f800001, 0x7f800001, 0x7f800001, \
96e95ef431SMax Filippov             FSR__,      FSR__,      FSR__,      FSR__
97e95ef431SMax Filippov    test_op2 add.s, f2, f3, f4, 0x7fbfffff, 0x7f800001, \
98e95ef431SMax Filippov        0x7fbfffff, 0x7fbfffff, 0x7fbfffff, 0x7fbfffff, \
99e95ef431SMax Filippov             FSR__,      FSR__,      FSR__,      FSR__
100e95ef431SMax Filippov    /* QNaN1 + SNaN2 = QNaN1 */
101e95ef431SMax Filippov    test_op2 add.s, f5, f6, f7, 0x7fc00001, 0x7fbfffff, \
102e95ef431SMax Filippov        0x7fc00001, 0x7fc00001, 0x7fc00001, 0x7fc00001, \
103e95ef431SMax Filippov             FSR__,      FSR__,      FSR__,      FSR__
104e95ef431SMax Filippov    /* SNaN1 + QNaN2 = SNaN1 */
105e95ef431SMax Filippov    test_op2 add.s, f8, f9, f10, 0x7fbfffff, 0x7fc00001, \
106e95ef431SMax Filippov        0x7fbfffff, 0x7fbfffff, 0x7fbfffff, 0x7fbfffff, \
107e95ef431SMax Filippov             FSR__,      FSR__,      FSR__,      FSR__
108e95ef431SMax Filippovtest_end
109e95ef431SMax Filippov#endif
1109d012e8eSMax Filippov
1119d012e8eSMax Filippovtest sub_s
1129d012e8eSMax Filippov    test_op2 sub.s, f0, f1, f0, 0x3f800001, 0x33800000, \
113e95ef431SMax Filippov        0x3f800000, 0x3f800000, 0x3f800001, 0x3f800000, \
114e95ef431SMax Filippov             FSR_I,      FSR_I,      FSR_I,      FSR_I
1159d012e8eSMax Filippov    test_op2 sub.s, f0, f1, f1, 0x3f800002, 0x33800000, \
116e95ef431SMax Filippov        0x3f800002, 0x3f800001, 0x3f800002, 0x3f800001, \
117e95ef431SMax Filippov             FSR_I,      FSR_I,      FSR_I,      FSR_I
1189d012e8eSMax Filippov
1199d012e8eSMax Filippov    /* norm - norm = denorm */
1209d012e8eSMax Filippov    test_op2 sub.s, f6, f7, f8, 0x00800001, 0x00800000, \
121e95ef431SMax Filippov        0x00000001, 0x00000001, 0x00000001, 0x00000001, \
122e95ef431SMax Filippov             FSR__,      FSR__,      FSR__,      FSR__
1239d012e8eSMax Filippovtest_end
1249d012e8eSMax Filippov
1259d012e8eSMax Filippovtest mul_s
1269d012e8eSMax Filippov    test_op2 mul.s, f0, f1, f2, 0x3f800001, 0x3f800001, \
127e95ef431SMax Filippov        0x3f800002, 0x3f800002, 0x3f800003, 0x3f800002, \
128e95ef431SMax Filippov             FSR_I,      FSR_I,      FSR_I,      FSR_I
1299d012e8eSMax Filippov    /* MAX_FLOAT/2 * MAX_FLOAT/2 = +inf/MAX_FLOAT  */
1309d012e8eSMax Filippov    test_op2 mul.s, f6, f7, f8, 0x7f000000, 0x7f000000, \
131e95ef431SMax Filippov        0x7f800000, 0x7f7fffff, 0x7f800000, 0x7f7fffff, \
132e95ef431SMax Filippov            FSR_OI,     FSR_OI,     FSR_OI,     FSR_OI
1339d012e8eSMax Filippov    /* min norm * min norm = 0/denorm */
1349d012e8eSMax Filippov    test_op2 mul.s, f6, f7, f8, 0x00800001, 0x00800000, \
135e95ef431SMax Filippov        0x00000000, 0x00000000, 0x00000001, 0x00000000, \
136e95ef431SMax Filippov            FSR_UI,     FSR_UI,     FSR_UI,     FSR_UI
1379d012e8eSMax Filippov    /* inf * 0 = default NaN */
1389d012e8eSMax Filippov    test_op2 mul.s, f6, f7, f8, 0x7f800000, 0x00000000, \
139e95ef431SMax Filippov        0x7fc00000, 0x7fc00000, 0x7fc00000, 0x7fc00000, \
140e95ef431SMax Filippov             FSR_V,      FSR_V,      FSR_V,      FSR_V
1419d012e8eSMax Filippovtest_end
1429d012e8eSMax Filippov
1439d012e8eSMax Filippovtest madd_s
1449d012e8eSMax Filippov    test_op3 madd.s, f0, f1, f2, f0, 0, 0x3f800001, 0x3f800001, \
145e95ef431SMax Filippov        0x3f800002, 0x3f800002, 0x3f800003, 0x3f800002, \
146e95ef431SMax Filippov             FSR_I,      FSR_I,      FSR_I,      FSR_I
1479d012e8eSMax Filippovtest_end
1489d012e8eSMax Filippov
149*ac81ff22SMax Filippovtest madd_s_precision
150*ac81ff22SMax Filippov    test_op3 madd.s, f0, f1, f2, f0, 0xbf800002, 0x3f800001, 0x3f800001, \
151*ac81ff22SMax Filippov        0x28800000, 0x28800000, 0x28800000, 0x28800000, \
152*ac81ff22SMax Filippov             FSR__,      FSR__,      FSR__,      FSR__
153*ac81ff22SMax Filippovtest_end
154*ac81ff22SMax Filippov
155*ac81ff22SMax Filippov#if DFPU
156*ac81ff22SMax Filippovtest madd_s_nan_dfpu
157*ac81ff22SMax Filippov    /* DFPU madd/msub NaN1, NaN2, NaN3 priority: NaN1, NaN3, NaN2 */
158*ac81ff22SMax Filippov    test_op3 madd.s, f0, f1, f2, f0, F32_QNAN(1), F32_1, F32_1, \
159*ac81ff22SMax Filippov        F32_QNAN(1), F32_QNAN(1), F32_QNAN(1), F32_QNAN(1), \
160*ac81ff22SMax Filippov              FSR__,       FSR__,       FSR__,       FSR__
161*ac81ff22SMax Filippov    test_op3 madd.s, f0, f1, f2, f0, F32_1, F32_QNAN(2), F32_1, \
162*ac81ff22SMax Filippov        F32_QNAN(2), F32_QNAN(2), F32_QNAN(2), F32_QNAN(2), \
163*ac81ff22SMax Filippov              FSR__,       FSR__,       FSR__,       FSR__
164*ac81ff22SMax Filippov    test_op3 madd.s, f0, f1, f2, f0, F32_1, F32_1, F32_QNAN(3), \
165*ac81ff22SMax Filippov        F32_QNAN(3), F32_QNAN(3), F32_QNAN(3), F32_QNAN(3), \
166*ac81ff22SMax Filippov              FSR__,       FSR__,       FSR__,       FSR__
167*ac81ff22SMax Filippov
168*ac81ff22SMax Filippov    test_op3 madd.s, f0, f1, f2, f0, F32_QNAN(1), F32_QNAN(2), F32_1, \
169*ac81ff22SMax Filippov        F32_QNAN(1), F32_QNAN(1), F32_QNAN(1), F32_QNAN(1), \
170*ac81ff22SMax Filippov              FSR__,       FSR__,       FSR__,       FSR__
171*ac81ff22SMax Filippov    test_op3 madd.s, f0, f1, f2, f0, F32_QNAN(1), F32_1, F32_QNAN(3), \
172*ac81ff22SMax Filippov        F32_QNAN(1), F32_QNAN(1), F32_QNAN(1), F32_QNAN(1), \
173*ac81ff22SMax Filippov              FSR__,       FSR__,       FSR__,       FSR__
174*ac81ff22SMax Filippov    test_op3 madd.s, f0, f1, f2, f0, F32_1, F32_QNAN(2), F32_QNAN(3), \
175*ac81ff22SMax Filippov        F32_QNAN(3), F32_QNAN(3), F32_QNAN(3), F32_QNAN(3), \
176*ac81ff22SMax Filippov              FSR__,       FSR__,       FSR__,       FSR__
177*ac81ff22SMax Filippov
178*ac81ff22SMax Filippov    test_op3 madd.s, f0, f1, f2, f0, F32_QNAN(1), F32_QNAN(2), F32_QNAN(3), \
179*ac81ff22SMax Filippov        F32_QNAN(1), F32_QNAN(1), F32_QNAN(1), F32_QNAN(1), \
180*ac81ff22SMax Filippov              FSR__,       FSR__,       FSR__,       FSR__
181*ac81ff22SMax Filippov
182*ac81ff22SMax Filippov    /* inf * 0 = default NaN */
183*ac81ff22SMax Filippov    test_op3 madd.s, f0, f1, f2, f0, F32_1, F32_PINF, F32_0, \
184*ac81ff22SMax Filippov        F32_DNAN, F32_DNAN, F32_DNAN, F32_DNAN, \
185*ac81ff22SMax Filippov           FSR_V,    FSR_V,    FSR_V,    FSR_V
186*ac81ff22SMax Filippov    /* inf * 0 + SNaN1 = QNaN1 */
187*ac81ff22SMax Filippov    test_op3 madd.s, f0, f1, f2, f0, F32_SNAN(1), F32_PINF, F32_0, \
188*ac81ff22SMax Filippov        F32_QNAN(1), F32_QNAN(1), F32_QNAN(1), F32_QNAN(1), \
189*ac81ff22SMax Filippov              FSR_V,       FSR_V,       FSR_V,       FSR_V
190*ac81ff22SMax Filippov    /* inf * 0 + QNaN1 = QNaN1 */
191*ac81ff22SMax Filippov    test_op3 madd.s, f0, f1, f2, f0, F32_QNAN(1), F32_PINF, F32_0, \
192*ac81ff22SMax Filippov        F32_QNAN(1), F32_QNAN(1), F32_QNAN(1), F32_QNAN(1), \
193*ac81ff22SMax Filippov              FSR_V,       FSR_V,       FSR_V,       FSR_V
194*ac81ff22SMax Filippov
195*ac81ff22SMax Filippov    /* madd/msub SNaN turns to QNaN and sets Invalid flag */
196*ac81ff22SMax Filippov    test_op3 madd.s, f0, f1, f2, f0, F32_SNAN(1), F32_1, F32_1, \
197*ac81ff22SMax Filippov        F32_QNAN(1), F32_QNAN(1), F32_QNAN(1), F32_QNAN(1), \
198*ac81ff22SMax Filippov              FSR_V,       FSR_V,       FSR_V,       FSR_V
199*ac81ff22SMax Filippov    test_op3 madd.s, f0, f1, f2, f0, F32_QNAN(1), F32_SNAN(2), F32_1, \
200*ac81ff22SMax Filippov        F32_QNAN(1), F32_QNAN(1), F32_QNAN(1), F32_QNAN(1), \
201*ac81ff22SMax Filippov              FSR_V,       FSR_V,       FSR_V,       FSR_V
202*ac81ff22SMax Filippovtest_end
203*ac81ff22SMax Filippov#else
204*ac81ff22SMax Filippovtest madd_s_nan_fpu2k
205*ac81ff22SMax Filippov    /* FPU2000 madd/msub NaN1, NaN2, NaN3 priority: NaN2, NaN3, NaN1 */
206*ac81ff22SMax Filippov    test_op3 madd.s, f0, f1, f2, f0, F32_QNAN(1), F32_1, F32_1, \
207*ac81ff22SMax Filippov        F32_QNAN(1), F32_QNAN(1), F32_QNAN(1), F32_QNAN(1), \
208*ac81ff22SMax Filippov              FSR__,       FSR__,       FSR__,       FSR__
209*ac81ff22SMax Filippov    test_op3 madd.s, f0, f1, f2, f0, F32_1, F32_QNAN(2), F32_1, \
210*ac81ff22SMax Filippov        F32_QNAN(2), F32_QNAN(2), F32_QNAN(2), F32_QNAN(2), \
211*ac81ff22SMax Filippov              FSR__,       FSR__,       FSR__,       FSR__
212*ac81ff22SMax Filippov    test_op3 madd.s, f0, f1, f2, f0, F32_1, F32_1, F32_QNAN(3), \
213*ac81ff22SMax Filippov        F32_QNAN(3), F32_QNAN(3), F32_QNAN(3), F32_QNAN(3), \
214*ac81ff22SMax Filippov              FSR__,       FSR__,       FSR__,       FSR__
215*ac81ff22SMax Filippov
216*ac81ff22SMax Filippov    test_op3 madd.s, f0, f1, f2, f0, F32_QNAN(1), F32_QNAN(2), F32_1, \
217*ac81ff22SMax Filippov        F32_QNAN(2), F32_QNAN(2), F32_QNAN(2), F32_QNAN(2), \
218*ac81ff22SMax Filippov              FSR__,       FSR__,       FSR__,       FSR__
219*ac81ff22SMax Filippov    test_op3 madd.s, f0, f1, f2, f0, F32_QNAN(1), F32_1, F32_QNAN(3), \
220*ac81ff22SMax Filippov        F32_QNAN(3), F32_QNAN(3), F32_QNAN(3), F32_QNAN(3), \
221*ac81ff22SMax Filippov              FSR__,       FSR__,       FSR__,       FSR__
222*ac81ff22SMax Filippov    test_op3 madd.s, f0, f1, f2, f0, F32_1, F32_QNAN(2), F32_QNAN(3), \
223*ac81ff22SMax Filippov        F32_QNAN(2), F32_QNAN(2), F32_QNAN(2), F32_QNAN(2), \
224*ac81ff22SMax Filippov              FSR__,       FSR__,       FSR__,       FSR__
225*ac81ff22SMax Filippov
226*ac81ff22SMax Filippov    test_op3 madd.s, f0, f1, f2, f0, F32_QNAN(1), F32_QNAN(2), F32_QNAN(3), \
227*ac81ff22SMax Filippov        F32_QNAN(2), F32_QNAN(2), F32_QNAN(2), F32_QNAN(2), \
228*ac81ff22SMax Filippov              FSR__,       FSR__,       FSR__,       FSR__
229*ac81ff22SMax Filippov
230*ac81ff22SMax Filippov    /* inf * 0 = default NaN */
231*ac81ff22SMax Filippov    test_op3 madd.s, f0, f1, f2, f0, F32_1, F32_PINF, F32_0, \
232*ac81ff22SMax Filippov        F32_DNAN, F32_DNAN, F32_DNAN, F32_DNAN, \
233*ac81ff22SMax Filippov           FSR__,    FSR__,    FSR__,    FSR__
234*ac81ff22SMax Filippov    /* inf * 0 + SNaN1 = SNaN1 */
235*ac81ff22SMax Filippov    test_op3 madd.s, f0, f1, f2, f0, F32_SNAN(1), F32_PINF, F32_0, \
236*ac81ff22SMax Filippov        F32_SNAN(1), F32_SNAN(1), F32_SNAN(1), F32_SNAN(1), \
237*ac81ff22SMax Filippov              FSR__,       FSR__,       FSR__,       FSR__
238*ac81ff22SMax Filippov    /* inf * 0 + QNaN1 = QNaN1 */
239*ac81ff22SMax Filippov    test_op3 madd.s, f0, f1, f2, f0, F32_QNAN(1), F32_PINF, F32_0, \
240*ac81ff22SMax Filippov        F32_QNAN(1), F32_QNAN(1), F32_QNAN(1), F32_QNAN(1), \
241*ac81ff22SMax Filippov              FSR__,       FSR__,       FSR__,       FSR__
242*ac81ff22SMax Filippov
243*ac81ff22SMax Filippov    /* madd/msub SNaN is preserved */
244*ac81ff22SMax Filippov    test_op3 madd.s, f0, f1, f2, f0, F32_SNAN(1), F32_1, F32_1, \
245*ac81ff22SMax Filippov        F32_SNAN(1), F32_SNAN(1), F32_SNAN(1), F32_SNAN(1), \
246*ac81ff22SMax Filippov              FSR__,       FSR__,       FSR__,       FSR__
247*ac81ff22SMax Filippov    test_op3 madd.s, f0, f1, f2, f0, F32_QNAN(1), F32_SNAN(2), F32_1, \
248*ac81ff22SMax Filippov        F32_SNAN(2), F32_SNAN(2), F32_SNAN(2), F32_SNAN(2), \
249*ac81ff22SMax Filippov              FSR__,       FSR__,       FSR__,       FSR__
250*ac81ff22SMax Filippovtest_end
251*ac81ff22SMax Filippov#endif
252*ac81ff22SMax Filippov
2539d012e8eSMax Filippovtest msub_s
2549d012e8eSMax Filippov    test_op3 msub.s, f0, f1, f2, f0, 0x3f800000, 0x3f800001, 0x3f800001, \
255e95ef431SMax Filippov        0xb4800000, 0xb4800000, 0xb4800000, 0xb4800001, \
256e95ef431SMax Filippov             FSR_I,      FSR_I,      FSR_I,      FSR_I
2579d012e8eSMax Filippovtest_end
2589d012e8eSMax Filippov
2599d012e8eSMax Filippov#endif
2609d012e8eSMax Filippov
2619d012e8eSMax Filippovtest_suite_end
262