xref: /openbmc/qemu/tests/tcg/openrisc/test_addic.c (revision c0caec17)
1d901eff3SJia Liu #include <stdio.h>
2d901eff3SJia Liu 
main(void)3d901eff3SJia Liu int main(void)
4d901eff3SJia Liu {
5d901eff3SJia Liu     int a, b, c;
6d901eff3SJia Liu     int result;
7d901eff3SJia Liu 
8d901eff3SJia Liu     a = 1;
9*14a650ecSSebastian Macke     result = 0x0;
10d901eff3SJia Liu     __asm
11*14a650ecSSebastian Macke     ("l.add r1, r1, r0\n\t" /* clear carry */
12*14a650ecSSebastian Macke      "l.addic %0, %0, 0xffff\n\t"
13d901eff3SJia Liu      : "+r"(a)
14d901eff3SJia Liu     );
15d901eff3SJia Liu     if (a != result) {
16d901eff3SJia Liu         printf("first addic error\n");
17d901eff3SJia Liu         return -1;
18d901eff3SJia Liu    }
19d901eff3SJia Liu 
20*14a650ecSSebastian Macke     a = -1;
21d901eff3SJia Liu     result = 0x201;
22d901eff3SJia Liu     __asm
23*14a650ecSSebastian Macke     ("l.add r1, r1, r0\n\t"  /* clear carry */
24*14a650ecSSebastian Macke      "l.addic %0, %0, 0x1\n\t"
25d901eff3SJia Liu      "l.ori   %0, r0, 0x100\n\t"
26d901eff3SJia Liu      "l.addic %0, %0, 0x100\n\t"
27d901eff3SJia Liu      : "+r"(a)
28d901eff3SJia Liu     );
29d901eff3SJia Liu     if (a != result) {
30d901eff3SJia Liu         printf("second addic error\n");
31d901eff3SJia Liu         return -1;
32d901eff3SJia Liu     }
33d901eff3SJia Liu 
34d901eff3SJia Liu     return 0;
35d901eff3SJia Liu }
36