xref: /qemu/tests/tcg/openrisc/test_add.c (revision d901eff3)
1*d901eff3SJia Liu #include <stdio.h>
2*d901eff3SJia Liu 
main(void)3*d901eff3SJia Liu int main(void)
4*d901eff3SJia Liu {
5*d901eff3SJia Liu     int a, b, d;
6*d901eff3SJia Liu     int result;
7*d901eff3SJia Liu 
8*d901eff3SJia Liu     a = 0x100;
9*d901eff3SJia Liu     b = 0x100;
10*d901eff3SJia Liu     result = 0x200;
11*d901eff3SJia Liu     __asm
12*d901eff3SJia Liu     ("l.add %0, %0, %1\n\t"
13*d901eff3SJia Liu      : "+r"(a)
14*d901eff3SJia Liu      : "r"(b)
15*d901eff3SJia Liu     );
16*d901eff3SJia Liu     if (a != result) {
17*d901eff3SJia Liu         printf("add error\n");
18*d901eff3SJia Liu         return -1;
19*d901eff3SJia Liu     }
20*d901eff3SJia Liu 
21*d901eff3SJia Liu     a = 0xffff;
22*d901eff3SJia Liu     b = 0x1;
23*d901eff3SJia Liu     result = 0x10000;
24*d901eff3SJia Liu     __asm
25*d901eff3SJia Liu     ("l.add %0, %0, %1\n\t"
26*d901eff3SJia Liu      : "+r"(a)
27*d901eff3SJia Liu      : "r"(b)
28*d901eff3SJia Liu     );
29*d901eff3SJia Liu     if (a != result) {
30*d901eff3SJia Liu         printf("add error\n");
31*d901eff3SJia Liu         return -1;
32*d901eff3SJia Liu     }
33*d901eff3SJia Liu 
34*d901eff3SJia Liu     a = 0x7fffffff;
35*d901eff3SJia Liu     b = 0x1;
36*d901eff3SJia Liu     __asm
37*d901eff3SJia Liu     ("l.add %0, %1, %2\n\t"
38*d901eff3SJia Liu      : "=r"(d)
39*d901eff3SJia Liu      : "r"(b), "r"(a)
40*d901eff3SJia Liu     );
41*d901eff3SJia Liu 
42*d901eff3SJia Liu     return 0;
43*d901eff3SJia Liu }
44