1436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#include <stdio.h>
2436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#include "const.h"
3436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#include "macro_int.h"
4436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
5436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovtypedef enum {
6436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    DROTR=0,  DROTR32,   DROTRV,    DSLL,
7436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    DSLL32,   DSLLV,     DSRA,      DSRA32,
8436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    DSRAV,    DSRL,      DSRL32,    DSRLV,
9436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    ROTR,     ROTRV,     SLL,       SLLV,
10436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    SRA,      SRAV,      SRL,       SRLV
11436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov} logical_op;
12436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
13436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovint main()
14436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov{
15436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov   logical_op op;
16436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov   int i;
17436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov   init_reg_val2();
18436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov   for (op = DROTR; op <= SRLV; op++) {
19436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov      for (i = 0; i < N; i++) {
20436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov         switch(op) {
21436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov            case DROTR:
22436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               /* Release 2 Only */
23436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#if (__mips == 64) && (__mips_isa_rev >= 2)
24436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("drotr $t0, $t1, 0x00", reg_val1[i], 0x00, t0, t1);
25436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("drotr $t2, $t3, 0x1f", reg_val1[i], 0x1f, t2, t3);
26436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("drotr $a0, $a1, 0x0f", reg_val1[i], 0x0f, a0, a1);
27436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("drotr $s0, $s1, 0x03", reg_val1[i], 0x03, s0, s1);
28436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("drotr $t0, $t1, 0x00", reg_val2[i], 0x00, t0, t1);
29436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("drotr $t2, $t3, 0x1f", reg_val2[i], 0x1f, t2, t3);
30436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("drotr $a0, $a1, 0x0f", reg_val2[i], 0x0f, a0, a1);
31436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("drotr $s0, $s1, 0x03", reg_val2[i], 0x03, s0, s1);
32436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#endif
33436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               break;
34436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov            case DROTR32:
35436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               /* Release 2 Only */
36436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#if (__mips == 64) && (__mips_isa_rev >= 2)
37436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("drotr32 $t0, $t1, 0x00", reg_val1[i], 0x00, t0, t1);
38436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("drotr32 $t2, $t3, 0x1f", reg_val1[i], 0x1f, t2, t3);
39436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("drotr32 $a0, $a1, 0x0f", reg_val1[i], 0x0f, a0, a1);
40436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("drotr32 $s0, $s1, 0x03", reg_val1[i], 0x03, s0, s1);
41436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("drotr32 $t0, $t1, 0x00", reg_val2[i], 0x00, t0, t1);
42436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("drotr32 $t2, $t3, 0x1f", reg_val2[i], 0x1f, t2, t3);
43436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("drotr32 $a0, $a1, 0x0f", reg_val2[i], 0x0f, a0, a1);
44436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("drotr32 $s0, $s1, 0x03", reg_val2[i], 0x03, s0, s1);
45436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#endif
46436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               break;
47436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov            case DROTRV:
48436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               /* Release 2 Only */
49436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#if (__mips == 64) && (__mips_isa_rev >= 2)
50436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST1("drotrv $t0, $t1, $t2", reg_val1[i], reg_val1[N-i-1],
51436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                                             t0, t1, t2);
52436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST1("drotrv $s0, $s1, $s2", reg_val2[i], reg_val2[N-i-1],
53436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                                             s0, s1, s2);
54436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#endif
55436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               break;
56436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov            case DSLL:
57436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("dsll $t0, $t1, 0x00", reg_val1[i], 0x00, t0, t1);
58436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("dsll $t2, $t3, 0x1f", reg_val1[i], 0x1f, t2, t3);
59436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("dsll $a0, $a1, 0x0f", reg_val1[i], 0x0f, a0, a1);
60436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("dsll $s0, $s1, 0x03", reg_val1[i], 0x03, s0, s1);
61436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("dsll $t0, $t1, 0x00", reg_val2[i], 0x00, t0, t1);
62436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("dsll $t2, $t3, 0x1f", reg_val2[i], 0x1f, t2, t3);
63436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("dsll $a0, $a1, 0x0f", reg_val2[i], 0x0f, a0, a1);
64436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("dsll $s0, $s1, 0x03", reg_val2[i], 0x03, s0, s1);
65436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               break;
66436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
67436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov            case DSLL32:
68436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("dsll32 $t0, $t1, 0x00", reg_val1[i], 0x00, t0, t1);
69436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("dsll32 $t2, $t3, 0x1f", reg_val1[i], 0x1f, t2, t3);
70436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("dsll32 $a0, $a1, 0x0f", reg_val1[i], 0x0f, a0, a1);
71436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("dsll32 $s0, $s1, 0x03", reg_val1[i], 0x03, s0, s1);
72436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("dsll32 $t0, $t1, 0x00", reg_val2[i], 0x00, t0, t1);
73436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("dsll32 $t2, $t3, 0x1f", reg_val2[i], 0x1f, t2, t3);
74436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("dsll32 $a0, $a1, 0x0f", reg_val2[i], 0x0f, a0, a1);
75436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("dsll32 $s0, $s1, 0x03", reg_val2[i], 0x03, s0, s1);
76436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               break;
77436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
78436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov            case DSLLV:
79436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST1("dsllv $t0, $t1, $t2", reg_val1[i], reg_val1[N-i-1],
80436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                                            t0, t1, t2);
81436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST1("dsllv $s0, $s1, $s2", reg_val2[i], reg_val2[N-i-1],
82436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                                            s0, s1, s2);
83436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               break;
84436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
85436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov            case DSRA:
86436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("dsra $t0, $t1, 0x00", reg_val1[i], 0x00, t0, t1);
87436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("dsra $t2, $t3, 0x1f", reg_val1[i], 0x1f, t2, t3);
88436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("dsra $a0, $a1, 0x0f", reg_val1[i], 0x0f, a0, a1);
89436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("dsra $s0, $s1, 0x03", reg_val1[i], 0x03, s0, s1);
90436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("dsra $t0, $t1, 0x00", reg_val2[i], 0x00, t0, t1);
91436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("dsra $t2, $t3, 0x1f", reg_val2[i], 0x1f, t2, t3);
92436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("dsra $a0, $a1, 0x0f", reg_val2[i], 0x0f, a0, a1);
93436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("dsra $s0, $s1, 0x03", reg_val2[i], 0x03, s0, s1);
94436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               break;
95436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
96436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov            case DSRA32:
97436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("dsra32 $t0, $t1, 0x00", reg_val1[i], 0x00, t0, t1);
98436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("dsra32 $t2, $t3, 0x1f", reg_val1[i], 0x1f, t2, t3);
99436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("dsra32 $a0, $a1, 0x0f", reg_val1[i], 0x0f, a0, a1);
100436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("dsra32 $s0, $s1, 0x03", reg_val1[i], 0x03, s0, s1);
101436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("dsra32 $t0, $t1, 0x00", reg_val2[i], 0x00, t0, t1);
102436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("dsra32 $t2, $t3, 0x1f", reg_val2[i], 0x1f, t2, t3);
103436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("dsra32 $a0, $a1, 0x0f", reg_val2[i], 0x0f, a0, a1);
104436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("dsra32 $s0, $s1, 0x03", reg_val2[i], 0x03, s0, s1);
105436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               break;
106436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
107436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov            case DSRAV:
108436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST1("dsrav $t0, $t1, $t2", reg_val1[i], reg_val1[N-i-1],
109436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                                            t0, t1, t2);
110436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST1("dsrav $s0, $s1, $s2", reg_val2[i], reg_val2[N-i-1],
111436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                                            s0, s1, s2);
112436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               break;
113436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
114436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov            case DSRL:
115436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("dsrl $t0, $t1, 0x00", reg_val1[i], 0x00, t0, t1);
116436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("dsrl $t2, $t3, 0x1f", reg_val1[i], 0x1f, t2, t3);
117436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("dsrl $a0, $a1, 0x0f", reg_val1[i], 0x0f, a0, a1);
118436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("dsrl $s0, $s1, 0x03", reg_val1[i], 0x03, s0, s1);
119436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("dsrl $t0, $t1, 0x00", reg_val2[i], 0x00, t0, t1);
120436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("dsrl $t2, $t3, 0x1f", reg_val2[i], 0x1f, t2, t3);
121436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("dsrl $a0, $a1, 0x0f", reg_val2[i], 0x0f, a0, a1);
122436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("dsrl $s0, $s1, 0x03", reg_val2[i], 0x03, s0, s1);
123436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               break;
124436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
125436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov            case DSRL32:
126436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("dsrl32 $t0, $t1, 0x00", reg_val1[i], 0x00, t0, t1);
127436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("dsrl32 $t2, $t3, 0x1f", reg_val1[i], 0x1f, t2, t3);
128436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("dsrl32 $a0, $a1, 0x0f", reg_val1[i], 0x0f, a0, a1);
129436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("dsrl32 $s0, $s1, 0x03", reg_val1[i], 0x03, s0, s1);
130436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("dsrl32 $t0, $t1, 0x00", reg_val2[i], 0x00, t0, t1);
131436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("dsrl32 $t2, $t3, 0x1f", reg_val2[i], 0x1f, t2, t3);
132436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("dsrl32 $a0, $a1, 0x0f", reg_val2[i], 0x0f, a0, a1);
133436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("dsrl32 $s0, $s1, 0x03", reg_val2[i], 0x03, s0, s1);
134436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               break;
135436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
136436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov            case DSRLV:
137436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST1("dsrlv $t0, $t1, $t2", reg_val1[i], reg_val1[N-i-1],
138436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                                            t0, t1, t2);
139436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST1("dsrlv $s0, $s1, $s2", reg_val2[i], reg_val2[N-i-1],
140436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                                            s0, s1, s2);
141436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               break;
142436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
143436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov            case ROTR:
144436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               /* Release 2 Only */
145436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#if (__mips == 64) && (__mips_isa_rev >= 2)
146436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("rotr $t0, $t1, 0x00", reg_val1[i], 0x00, t0, t1);
147436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("rotr $t2, $t3, 0x1f", reg_val1[i], 0x1f, t2, t3);
148436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("rotr $a0, $a1, 0x0f", reg_val1[i], 0x0f, a0, a1);
149436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("rotr $s0, $s1, 0x03", reg_val1[i], 0x03, s0, s1);
150436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#endif
151436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               break;
152436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov            case ROTRV:
153436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               /* Release 2 Only */
154436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#if (__mips == 64) && (__mips_isa_rev >= 2)
155436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST1("rotrv $t0, $t1, $t2", reg_val1[i], reg_val1[N-i-1],
156436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                                            t0, t1, t2);
157436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#endif
158436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               break;
159436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov            case SLL:
160436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("sll $t0, $t1, 0x00", reg_val1[i], 0x00, t0, t1);
161436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("sll $t2, $t3, 0x1f", reg_val1[i], 0x1f, t2, t3);
162436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("sll $a0, $a1, 0x0f", reg_val1[i], 0x0f, a0, a1);
163436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("sll $s0, $s1, 0x03", reg_val1[i], 0x03, s0, s1);
164436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("sll $t0, $t1, 0x00", reg_val2[i], 0x00, t0, t1);
165436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("sll $t2, $t3, 0x1f", reg_val2[i], 0x1f, t2, t3);
166436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("sll $a0, $a1, 0x0f", reg_val2[i], 0x0f, a0, a1);
167436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("sll $s0, $s1, 0x03", reg_val2[i], 0x03, s0, s1);
168436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               break;
169436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
170436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov            case SLLV:
171436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST1("sllv $t0, $t1, $t2", reg_val1[i], reg_val1[N-i-1],
172436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                                           t0, t1, t2);
173436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST1("sllv $s0, $s1, $s2", reg_val2[i], reg_val2[N-i-1],
174436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                                           s0, s1, s2);
175436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               break;
176436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
177436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov            case SRA:
178436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("sra $t0, $t1, 0x00", reg_val1[i], 0x00, t0, t1);
179436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("sra $t2, $t3, 0x1f", reg_val1[i], 0x1f, t2, t3);
180436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("sra $a0, $a1, 0x0f", reg_val1[i], 0x0f, a0, a1);
181436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("sra $s0, $s1, 0x03", reg_val1[i], 0x03, s0, s1);
182436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               break;
183436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
184436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov            case SRAV:
185436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST1("srav $t0, $t1, $t2", reg_val1[i], reg_val1[N-i-1],
186436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                                           t0, t1, t2);
187436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               break;
188436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
189436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov            case SRL:
190436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("srl $t0, $t1, 0x00", reg_val1[i], 0x00, t0, t1);
191436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("srl $t2, $t3, 0x1f", reg_val1[i], 0x1f, t2, t3);
192436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("srl $a0, $a1, 0x0f", reg_val1[i], 0x0f, a0, a1);
193436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST2("srl $s0, $s1, 0x03", reg_val1[i], 0x03, s0, s1);
194436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               break;
195436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
196436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov            case SRLV:
197436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               TEST1("srlv $t0, $t1, $t2", reg_val1[i], reg_val1[N-i-1],
198436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                                           t0, t1, t2);
199436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov               break;
200436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
201436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov         }
202436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov      }
203436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov   }
204436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov   return 0;
205436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov}
206