1 #include <stdio.h>
2
main(void)3 int main(void)
4 {
5 int a, b, c;
6 int result;
7
8 b = 0x9743;
9 c = 0x2;
10 result = 0x25d0c;
11 __asm
12 ("l.sll %0, %1, %2\n\t"
13 : "=r"(a)
14 : "r"(b), "r"(c)
15 );
16 if (a != result) {
17 printf("sll error\n");
18 return -1;
19 }
20
21 b = 0x9743;
22 result = 0x25d0c;
23 __asm
24 ("l.slli %0, %1, 0x2\n\t"
25 : "=r"(a)
26 : "r"(b)
27 );
28 if (a != result) {
29 printf("slli error\n");
30 return -1;
31 }
32
33 b = 0x7654;
34 c = 0x03;
35 result = 0xeca;
36 __asm
37 ("l.srl %0, %1, %2\n\t"
38 : "=r"(a)
39 : "r"(b), "r"(c)
40 );
41
42 b = 0x7654;
43 result = 0xeca;
44 __asm
45 ("l.srli %0, %1, 0x3\n\t"
46 : "=r"(a)
47 : "r"(b)
48 );
49 if (a != result) {
50 printf("srli error\n");
51 return -1;
52 }
53
54 b = 0x80000001;
55 c = 0x4;
56 result = 0x18000000;
57 __asm
58 ("l.ror %0, %1, %2\n\t"
59 : "=r"(a)
60 : "r"(b), "r"(c)
61 );
62 if (a != result) {
63 printf("ror error\n");
64 return -1;
65 }
66
67 b = 0x80000001;
68 result = 0x18000000;
69 __asm
70 ("l.rori %0, %1, 0x4\n\t"
71 : "=r"(a)
72 : "r"(b)
73 );
74 if (a != result) {
75 printf("rori error\n");
76 return -1;
77 }
78
79 b = 0x80000001;
80 c = 0x03;
81 result = 0xf0000000;
82 __asm
83 ("l.sra %0, %1, %2\n\t"
84 : "=r"(a)
85 : "r"(b), "r"(c)
86 );
87 if (a != result) {
88 printf("sra error\n");
89 return -1;
90 }
91
92 b = 0x80000001;
93 result = 0xf0000000;
94 __asm
95 ("l.srai %0, %1, 0x3\n\t"
96 : "=r"(a)
97 : "r"(b)
98 );
99 if (a != result) {
100 printf("srai error\n");
101 return -1;
102 }
103
104 return 0;
105 }
106