xref: /qemu/tests/tcg/openrisc/test_and_or.c (revision d901eff3e6da96d34be33b307aa6cea75098c180)
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, c;
6*d901eff3SJia Liu     int result;
7*d901eff3SJia Liu 
8*d901eff3SJia Liu     b = 0x2;
9*d901eff3SJia Liu     c = 0x1;
10*d901eff3SJia Liu     result = 0;
11*d901eff3SJia Liu     __asm
12*d901eff3SJia Liu     ("l.and  %0, %1, %2\n\t"
13*d901eff3SJia Liu      : "=r"(a)
14*d901eff3SJia Liu      : "r"(b), "r"(c)
15*d901eff3SJia Liu     );
16*d901eff3SJia Liu     if (a != result) {
17*d901eff3SJia Liu         printf("and error\n");
18*d901eff3SJia Liu         return -1;
19*d901eff3SJia Liu     }
20*d901eff3SJia Liu 
21*d901eff3SJia Liu     result = 0x2;
22*d901eff3SJia Liu     __asm
23*d901eff3SJia Liu     ("l.andi  %0, %1, 0x3\n\t"
24*d901eff3SJia Liu      : "=r"(a)
25*d901eff3SJia Liu      : "r"(b)
26*d901eff3SJia Liu     );
27*d901eff3SJia Liu     if (a != result) {
28*d901eff3SJia Liu         printf("andi error %x\n", a);
29*d901eff3SJia Liu         return -1;
30*d901eff3SJia Liu     }
31*d901eff3SJia Liu 
32*d901eff3SJia Liu     result = 0x3;
33*d901eff3SJia Liu     __asm
34*d901eff3SJia Liu     ("l.or   %0, %1, %2\n\t"
35*d901eff3SJia Liu      : "=r"(a)
36*d901eff3SJia Liu      : "r"(b), "r"(c)
37*d901eff3SJia Liu     );
38*d901eff3SJia Liu     if (a != result) {
39*d901eff3SJia Liu         printf("or error\n");
40*d901eff3SJia Liu         return -1;
41*d901eff3SJia Liu     }
42*d901eff3SJia Liu 
43*d901eff3SJia Liu     result = 0x3;
44*d901eff3SJia Liu     __asm
45*d901eff3SJia Liu     ("l.xor  %0, %1, %2\n\t"
46*d901eff3SJia Liu      : "=r"(a)
47*d901eff3SJia Liu      : "r"(b), "r"(c)
48*d901eff3SJia Liu     );
49*d901eff3SJia Liu     if (a != result) {
50*d901eff3SJia Liu         printf("xor error\n");
51*d901eff3SJia Liu         return -1;
52*d901eff3SJia Liu     }
53*d901eff3SJia Liu 
54*d901eff3SJia Liu     __asm
55*d901eff3SJia Liu     ("l.xori  %0, %1, 0x1\n\t"
56*d901eff3SJia Liu      : "=r"(a)
57*d901eff3SJia Liu      : "r"(b)
58*d901eff3SJia Liu     );
59*d901eff3SJia Liu     if (a != result) {
60*d901eff3SJia Liu         printf("xori error\n");
61*d901eff3SJia Liu         return -1;
62*d901eff3SJia Liu     }
63*d901eff3SJia Liu 
64*d901eff3SJia Liu     return 0;
65*d901eff3SJia Liu }
66