xref: /qemu/tests/tcg/loongarch64/test_fcsr.c (revision ca5f3d4df1b47d7f66a109cdb504e83dfd7ec433)
1*10dcb08bSRichard Henderson #include <assert.h>
2*10dcb08bSRichard Henderson 
main()3*10dcb08bSRichard Henderson int main()
4*10dcb08bSRichard Henderson {
5*10dcb08bSRichard Henderson     unsigned fcsr;
6*10dcb08bSRichard Henderson 
7*10dcb08bSRichard Henderson     asm("movgr2fcsr $r0,$r0\n\t"
8*10dcb08bSRichard Henderson         "movgr2fr.d $f0,$r0\n\t"
9*10dcb08bSRichard Henderson         "fdiv.d     $f0,$f0,$f0\n\t"
10*10dcb08bSRichard Henderson         "movfcsr2gr %0,$r0"
11*10dcb08bSRichard Henderson         : "=r"(fcsr) : : "f0");
12*10dcb08bSRichard Henderson 
13*10dcb08bSRichard Henderson     assert(fcsr & (16 << 16)); /* Invalid */
14*10dcb08bSRichard Henderson     return 0;
15*10dcb08bSRichard Henderson }
16