xref: /openbmc/qemu/tests/tcg/openrisc/test_mul.c (revision ad1a706f)
1 #include <stdio.h>
2 
3 int main(void)
4 {
5     int a, b, c;
6     int result;
7 
8     b = 0x4;
9     c = 0x1;
10     result = 0x4;
11     __asm
12     ("l.mul    %0, %1, %2\n\t"
13      : "=r"(a)
14      : "r"(b), "r"(c)
15     );
16     if (a != result) {
17         printf("mul error\n");
18         return -1;
19     }
20 
21     b = 0x1;
22     c = 0x0;
23     result = 0x0;
24     __asm
25     ("l.mul    %0, %1, %2\n\t"
26      : "=r"(a)
27      : "r"(b), "r"(c)
28     );
29     if (a != result) {
30         printf("mul error\n");
31         return -1;
32     }
33 
34     b = 0x1;
35     c = 0xff;
36     result = 0xff;
37     __asm
38     ("l.mul    %0, %1, %2\n\t"
39      : "=r"(a)
40      : "r"(b), "r"(c)
41     );
42     if (a != result) {
43         printf("mul error\n");
44         return -1;
45     }
46 
47     b = 0x7fffffff;
48     c = 0x2;
49     result = 0xfffffffe;
50     __asm
51     ("l.mul    %0, %1, %2\n\t"
52      : "=r"(a)
53      : "r"(b), "r"(c)
54     );
55     if (a != result) {
56         printf("mul error\n");
57         return -1;
58     }
59 
60     return 0;
61 }
62