xref: /openbmc/qemu/tests/tcg/xtensa/test_lsc.S (revision adbb3df0)
15e33b037SMax Filippov#include "macros.inc"
2*adbb3df0SMax Filippov#include "fpu.h"
35e33b037SMax Filippov
45e33b037SMax Filippovtest_suite lsc
55e33b037SMax Filippov
65e33b037SMax Filippov#if XCHAL_HAVE_FP
75e33b037SMax Filippov
85e33b037SMax Filippovtest lsi
95e33b037SMax Filippov    movi    a2, 1
105e33b037SMax Filippov    wsr     a2, cpenable
115e33b037SMax Filippov
125e33b037SMax Filippov    movi    a2, 1f
135e33b037SMax Filippov    lsi     f1, a2, 4
14*adbb3df0SMax Filippov#if DFPU
15*adbb3df0SMax Filippov    lsi     f2, a2, 8
16*adbb3df0SMax Filippov    lsip    f0, a2, 8
17*adbb3df0SMax Filippov#else
18*adbb3df0SMax Filippov    lsi     f0, a2, 0
195e33b037SMax Filippov    lsiu    f2, a2, 8
20*adbb3df0SMax Filippov#endif
215e33b037SMax Filippov    movi    a3, 1f + 8
225e33b037SMax Filippov    assert  eq, a2, a3
235e33b037SMax Filippov    rfr     a2, f0
245e33b037SMax Filippov    movi    a3, 0x3f800000
255e33b037SMax Filippov    assert  eq, a2, a3
265e33b037SMax Filippov    rfr     a2, f1
275e33b037SMax Filippov    movi    a3, 0x40000000
285e33b037SMax Filippov    assert  eq, a2, a3
295e33b037SMax Filippov    rfr     a2, f2
305e33b037SMax Filippov    movi    a3, 0x40400000
315e33b037SMax Filippov    assert  eq, a2, a3
325e33b037SMax Filippov.data
335e33b037SMax Filippov    .align  4
345e33b037SMax Filippov1:
355e33b037SMax Filippov.float 1, 2, 3
365e33b037SMax Filippov.text
375e33b037SMax Filippovtest_end
385e33b037SMax Filippov
395e33b037SMax Filippovtest ssi
405e33b037SMax Filippov    movi    a2, 1f
415e33b037SMax Filippov    movi    a3, 0x40800000
425e33b037SMax Filippov    wfr     f3, a3
435e33b037SMax Filippov    movi    a3, 0x40a00000
445e33b037SMax Filippov    wfr     f4, a3
455e33b037SMax Filippov    movi    a3, 0x40c00000
465e33b037SMax Filippov    wfr     f5, a3
47*adbb3df0SMax Filippov    ssi     f4, a2, 4
48*adbb3df0SMax Filippov#if DFPU
49*adbb3df0SMax Filippov    ssi     f5, a2, 8
50*adbb3df0SMax Filippov    ssip    f3, a2, 8
51*adbb3df0SMax Filippov#else
52*adbb3df0SMax Filippov    ssi     f3, a2, 0
535e33b037SMax Filippov    ssiu    f5, a2, 8
54*adbb3df0SMax Filippov#endif
555e33b037SMax Filippov    movi    a3, 1f + 8
565e33b037SMax Filippov    assert  eq, a2, a3
575e33b037SMax Filippov    l32i    a4, a2, -8
585e33b037SMax Filippov    movi    a3, 0x40800000
595e33b037SMax Filippov    assert  eq, a4, a3
605e33b037SMax Filippov    l32i    a4, a2, -4
615e33b037SMax Filippov    movi    a3, 0x40a00000
625e33b037SMax Filippov    assert  eq, a4, a3
635e33b037SMax Filippov    l32i    a4, a2, 0
645e33b037SMax Filippov    movi    a3, 0x40c00000
655e33b037SMax Filippov    assert  eq, a4, a3
665e33b037SMax Filippov.data
675e33b037SMax Filippov    .align  4
685e33b037SMax Filippov1:
695e33b037SMax Filippov.float 0, 0, 0
705e33b037SMax Filippov.text
715e33b037SMax Filippovtest_end
725e33b037SMax Filippov
735e33b037SMax Filippovtest lsx
745e33b037SMax Filippov    movi    a2, 1f
755e33b037SMax Filippov    movi    a3, 0
76*adbb3df0SMax Filippov    movi    a4, 4
77*adbb3df0SMax Filippov    movi    a5, 8
78*adbb3df0SMax Filippov    lsx     f7, a2, a4
79*adbb3df0SMax Filippov#if DFPU
80*adbb3df0SMax Filippov    lsx     f8, a2, a5
81*adbb3df0SMax Filippov    lsxp    f6, a2, a5
82*adbb3df0SMax Filippov#else
835e33b037SMax Filippov    lsx     f6, a2, a3
84*adbb3df0SMax Filippov    lsxu    f8, a2, a5
85*adbb3df0SMax Filippov#endif
865e33b037SMax Filippov    movi    a3, 1f + 8
875e33b037SMax Filippov    assert  eq, a2, a3
885e33b037SMax Filippov    rfr     a2, f6
895e33b037SMax Filippov    movi    a3, 0x40e00000
905e33b037SMax Filippov    assert  eq, a2, a3
915e33b037SMax Filippov    rfr     a2, f7
925e33b037SMax Filippov    movi    a3, 0x41000000
935e33b037SMax Filippov    assert  eq, a2, a3
945e33b037SMax Filippov    rfr     a2, f8
955e33b037SMax Filippov    movi    a3, 0x41100000
965e33b037SMax Filippov    assert  eq, a2, a3
975e33b037SMax Filippov.data
985e33b037SMax Filippov    .align  4
995e33b037SMax Filippov1:
1005e33b037SMax Filippov.float 7, 8, 9
1015e33b037SMax Filippov.text
1025e33b037SMax Filippovtest_end
1035e33b037SMax Filippov
1045e33b037SMax Filippovtest ssx
1055e33b037SMax Filippov    movi    a2, 1f
1065e33b037SMax Filippov    movi    a4, 0x41200000
1075e33b037SMax Filippov    wfr     f9, a4
1085e33b037SMax Filippov    movi    a4, 0x41300000
1095e33b037SMax Filippov    wfr     f10, a4
1105e33b037SMax Filippov    movi    a4, 0x41400000
1115e33b037SMax Filippov    wfr     f11, a4
112*adbb3df0SMax Filippov    movi    a3, 0
113*adbb3df0SMax Filippov    movi    a4, 4
114*adbb3df0SMax Filippov    movi    a5, 8
115*adbb3df0SMax Filippov    ssx     f10, a2, a4
116*adbb3df0SMax Filippov#if DFPU
117*adbb3df0SMax Filippov    ssx     f11, a2, a5
118*adbb3df0SMax Filippov    ssxp    f9, a2, a5
119*adbb3df0SMax Filippov#else
120*adbb3df0SMax Filippov    ssx     f9, a2, a3
121*adbb3df0SMax Filippov    ssxu    f11, a2, a5
122*adbb3df0SMax Filippov#endif
1235e33b037SMax Filippov    movi    a3, 1f + 8
1245e33b037SMax Filippov    assert  eq, a2, a3
1255e33b037SMax Filippov    l32i    a4, a2, -8
1265e33b037SMax Filippov    movi    a3, 0x41200000
1275e33b037SMax Filippov    assert  eq, a4, a3
1285e33b037SMax Filippov    l32i    a4, a2, -4
1295e33b037SMax Filippov    movi    a3, 0x41300000
1305e33b037SMax Filippov    assert  eq, a4, a3
1315e33b037SMax Filippov    l32i    a4, a2, 0
1325e33b037SMax Filippov    movi    a3, 0x41400000
1335e33b037SMax Filippov    assert  eq, a4, a3
1345e33b037SMax Filippov.data
1355e33b037SMax Filippov    .align  4
1365e33b037SMax Filippov1:
1375e33b037SMax Filippov.float 0, 0, 0
1385e33b037SMax Filippov.text
1395e33b037SMax Filippovtest_end
1405e33b037SMax Filippov
1415e33b037SMax Filippov#endif
1425e33b037SMax Filippov
1435e33b037SMax Filippovtest_suite_end
144