xref: /openbmc/qemu/tests/tcg/xtensa/test_lsc.S (revision adbb3df08e8cef46d8a9a77eab097125efeb1968)
1#include "macros.inc"
2#include "fpu.h"
3
4test_suite lsc
5
6#if XCHAL_HAVE_FP
7
8test lsi
9    movi    a2, 1
10    wsr     a2, cpenable
11
12    movi    a2, 1f
13    lsi     f1, a2, 4
14#if DFPU
15    lsi     f2, a2, 8
16    lsip    f0, a2, 8
17#else
18    lsi     f0, a2, 0
19    lsiu    f2, a2, 8
20#endif
21    movi    a3, 1f + 8
22    assert  eq, a2, a3
23    rfr     a2, f0
24    movi    a3, 0x3f800000
25    assert  eq, a2, a3
26    rfr     a2, f1
27    movi    a3, 0x40000000
28    assert  eq, a2, a3
29    rfr     a2, f2
30    movi    a3, 0x40400000
31    assert  eq, a2, a3
32.data
33    .align  4
341:
35.float 1, 2, 3
36.text
37test_end
38
39test ssi
40    movi    a2, 1f
41    movi    a3, 0x40800000
42    wfr     f3, a3
43    movi    a3, 0x40a00000
44    wfr     f4, a3
45    movi    a3, 0x40c00000
46    wfr     f5, a3
47    ssi     f4, a2, 4
48#if DFPU
49    ssi     f5, a2, 8
50    ssip    f3, a2, 8
51#else
52    ssi     f3, a2, 0
53    ssiu    f5, a2, 8
54#endif
55    movi    a3, 1f + 8
56    assert  eq, a2, a3
57    l32i    a4, a2, -8
58    movi    a3, 0x40800000
59    assert  eq, a4, a3
60    l32i    a4, a2, -4
61    movi    a3, 0x40a00000
62    assert  eq, a4, a3
63    l32i    a4, a2, 0
64    movi    a3, 0x40c00000
65    assert  eq, a4, a3
66.data
67    .align  4
681:
69.float 0, 0, 0
70.text
71test_end
72
73test lsx
74    movi    a2, 1f
75    movi    a3, 0
76    movi    a4, 4
77    movi    a5, 8
78    lsx     f7, a2, a4
79#if DFPU
80    lsx     f8, a2, a5
81    lsxp    f6, a2, a5
82#else
83    lsx     f6, a2, a3
84    lsxu    f8, a2, a5
85#endif
86    movi    a3, 1f + 8
87    assert  eq, a2, a3
88    rfr     a2, f6
89    movi    a3, 0x40e00000
90    assert  eq, a2, a3
91    rfr     a2, f7
92    movi    a3, 0x41000000
93    assert  eq, a2, a3
94    rfr     a2, f8
95    movi    a3, 0x41100000
96    assert  eq, a2, a3
97.data
98    .align  4
991:
100.float 7, 8, 9
101.text
102test_end
103
104test ssx
105    movi    a2, 1f
106    movi    a4, 0x41200000
107    wfr     f9, a4
108    movi    a4, 0x41300000
109    wfr     f10, a4
110    movi    a4, 0x41400000
111    wfr     f11, a4
112    movi    a3, 0
113    movi    a4, 4
114    movi    a5, 8
115    ssx     f10, a2, a4
116#if DFPU
117    ssx     f11, a2, a5
118    ssxp    f9, a2, a5
119#else
120    ssx     f9, a2, a3
121    ssxu    f11, a2, a5
122#endif
123    movi    a3, 1f + 8
124    assert  eq, a2, a3
125    l32i    a4, a2, -8
126    movi    a3, 0x41200000
127    assert  eq, a4, a3
128    l32i    a4, a2, -4
129    movi    a3, 0x41300000
130    assert  eq, a4, a3
131    l32i    a4, a2, 0
132    movi    a3, 0x41400000
133    assert  eq, a4, a3
134.data
135    .align  4
1361:
137.float 0, 0, 0
138.text
139test_end
140
141#endif
142
143test_suite_end
144