xref: /openbmc/qemu/tests/tcg/openrisc/test_sfgesi.c (revision d3da41e3)
1*d901eff3SJia Liu #include <stdio.h>
main(void)2*d901eff3SJia Liu int main(void)
3*d901eff3SJia Liu {
4*d901eff3SJia Liu     int a, b;
5*d901eff3SJia Liu     int result;
6*d901eff3SJia Liu 
7*d901eff3SJia Liu     a = 0;
8*d901eff3SJia Liu     result = 1;
9*d901eff3SJia Liu     __asm
10*d901eff3SJia Liu     ("1:\n\t"
11*d901eff3SJia Liu      "l.addi   %0, %0, 1\n\t"
12*d901eff3SJia Liu      "l.sfgesi %0, 0x3\n\t"
13*d901eff3SJia Liu      "l.bf 1b\n\t"
14*d901eff3SJia Liu      "l.nop\n\t"
15*d901eff3SJia Liu      : "+r"(a)
16*d901eff3SJia Liu     );
17*d901eff3SJia Liu     if (a != result) {
18*d901eff3SJia Liu         printf("sfgesi error\n");
19*d901eff3SJia Liu         return -1;
20*d901eff3SJia Liu     }
21*d901eff3SJia Liu 
22*d901eff3SJia Liu     a = 0xff;
23*d901eff3SJia Liu     b = 1;
24*d901eff3SJia Liu     result = 2;
25*d901eff3SJia Liu     __asm
26*d901eff3SJia Liu     ("1:\n\t"
27*d901eff3SJia Liu      "l.sub    %0, %0, %1\n\t"
28*d901eff3SJia Liu      "l.sfgesi %0, 0x3\n\t"
29*d901eff3SJia Liu      "l.bf 1b\n\t"
30*d901eff3SJia Liu      "l.nop\n\t"
31*d901eff3SJia Liu      : "+r"(a)
32*d901eff3SJia Liu      : "r"(b)
33*d901eff3SJia Liu     );
34*d901eff3SJia Liu     if (a != result) {
35*d901eff3SJia Liu         printf("sfgesi error\n");
36*d901eff3SJia Liu         return -1;
37*d901eff3SJia Liu     }
38*d901eff3SJia Liu 
39*d901eff3SJia Liu     return 0;
40*d901eff3SJia Liu }
41