1663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#include <stdio.h>
2663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
3663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengconst float fs_f[] = {
4663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   0, 456.2489562, 3, -1,
5663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   1384.6, -7.2945676, 1000000000, -5786.47,
6663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   1752, 0.0024575, 0.00000001, -248562.76,
7663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   -45786.476, 456.2489562, 34.00046, 45786.476,
8663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   1752065, 107, -45667.24, -7.2945676,
9663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   -347856.475, 356047.56, -1.0, 23.04
10663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng};
11663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
12663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengunsigned int mem[] = {
13663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   0x4095A266, 0x66666666,
14663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   0xBFF00000, 0x00000000,
15663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   0x3FF00000, 0x00000000,
16663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   0x252a2e2b, 0x262d2d2a,
17663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   0xFFFFFFFF, 0xFFFFFFFF,
18663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   0x41D26580, 0xB487E5C9,
19663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   0x42026580, 0xB750E388,
20663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   0x3E45798E, 0xE2308C3A,
21663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   0x3FBF9ADD, 0x3746F65F
22663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng};
23663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
24663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// mfc1 rt, fs
25663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define TESTINSNMOVE(instruction, offset, FS, RT) \
26663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng{ \
27663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng    float out; \
28663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng    int out1; \
29663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   __asm__ volatile( \
30663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     "move $t0, %2\n\t" \
31663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     "lwc1 $" #FS ", "#offset"($t0)\n\t" \
32663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     instruction "\n\t" \
33663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     "mov.s %0, $" #FS"\n\t" \
34663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     "move %1, $" #RT "\n\t" \
35663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     : "=&f" (out), "=&r" (out1) \
36663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	 : "r" (mem) \
37663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	 : #RT, "cc", "memory" \
38663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	 ); \
39663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   printf("%s :: fs %f, rt 0x%x\n", \
40663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng          instruction, out, out1); \
41663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng}
42663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
43663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// mfhc1 rt, fs
44663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define TESTINSNMOVEd(instruction, offset, FS, RT) \
45663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng{ \
46663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng    double out; \
47663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng    int out1; \
48663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   __asm__ volatile( \
49663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     "move $t0, %2\n\t" \
50663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     "ldc1 $" #FS ", "#offset"($t0)\n\t" \
51663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     instruction "\n\t" \
52663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     "mov.d %0, $" #FS"\n\t" \
53663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     "move %1, $" #RT "\n\t" \
54663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     : "=&f" (out), "=&r" (out1) \
55663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	 : "r" (mem) \
56663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	 : #RT, "cc", "memory" \
57663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	 ); \
58663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   printf("%s :: fs %lf, rt 0x%x\n", \
59663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng          instruction, out, out1); \
60663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng}
61663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
62663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// mtc1 rt, fs
63663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define TESTINSNMOVEt(instruction, offset, FS, RT) \
64663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng{ \
65663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng    float out; \
66663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng    int out1; \
67663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   __asm__ volatile( \
68663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     "move $t0, %2\n\t" \
69663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     "lw $" #RT ", "#offset"($t0)\n\t" \
70663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     instruction "\n\t" \
71663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     "mov.s %0, $" #FS"\n\t" \
72663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     "move %1, $" #RT "\n\t" \
73663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     : "=&f" (out), "=&r" (out1) \
74663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	 : "r" (mem) \
75663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	 : #RT, "cc", "memory" \
76663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	 ); \
77663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   printf("%s :: fs %f, rt 0x%x\n", \
78663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng          instruction, out, out1); \
79663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng}
80663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
81663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// mthc1 rt, fs
82663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define TESTINSNMOVEtd(instruction, offset, FS, RT) \
83663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng{ \
84663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng    double out; \
85663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng    int out1; \
86663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   __asm__ volatile( \
87663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     "move $t0, %2\n\t" \
88663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     "lw $" #RT ", "#offset"($t0)\n\t" \
89663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     instruction "\n\t" \
90663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     "mov.d %0, $" #FS"\n\t" \
91663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     "move %1, $" #RT "\n\t" \
92663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     : "=&f" (out), "=&r" (out1) \
93663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	 : "r" (mem) \
94663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	 : #RT, "cc", "memory" \
95663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	 ); \
96663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   printf("%s :: fs %lf, rt 0x%x\n", \
97663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng          instruction, out, out1); \
98663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng}
99663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
100663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// mov.s fd, fs
101663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define TESTINSNMOVE1s(instruction, offset, FD, FS) \
102663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng{ \
103663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng    float out; \
104663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng    int out1; \
105663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   __asm__ volatile( \
106663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     "move $t0, %2\n\t" \
107663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     "lwc1 $" #FS ", "#offset"($t0)\n\t" \
108663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     instruction "\n\t" \
109663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     "mov.s %0, $" #FD"\n\t" \
110663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     "mfc1 %1, $" #FD"\n\t" \
111663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     : "=&f" (out), "=&r" (out1) \
112663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	 : "r" (fs_f) \
113663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	 : "cc", "memory" \
114663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	 ); \
115663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   printf("%s :: fs %f, rt 0x%x\n", \
116663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng          instruction, out, out1); \
117663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng}
118663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
119663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// mov.d fd, fs
120663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define TESTINSNMOVE1d(instruction, offset, FD, FS) \
121663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng{ \
122663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng    double out; \
123663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng    int out1; \
124663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   __asm__ volatile( \
125663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     "move $t0, %2\n\t" \
126663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     "ldc1 $" #FS ", "#offset"($t0)\n\t" \
127663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     instruction "\n\t" \
128663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     "mov.d %0, $" #FD"\n\t" \
129663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     "mfc1 %1, $" #FD"\n\t" \
130663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     : "=&f" (out), "=&r" (out1) \
131663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	 : "r" (fs_f) \
132663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	 : "cc", "memory" \
133663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	 ); \
134663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   printf("%s ::fs %f, rt 0x%x\n", \
135663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng          instruction, out, out1); \
136663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng}
137663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
138663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// movf rd, rs
139663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define TESTINSNMOVE2(instruction, RDval, RSval, RD, RS, cc) \
140663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng{ \
141663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng    int out; \
142663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   __asm__ volatile( \
143663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     "li $t0, 1\n\t" \
144663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     "move $t1, %3\n\t" \
145663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     "mtc1 $t0, $f0\n\t" \
146663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     "mtc1 $t1, $f2\n\t" \
147663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     "c.eq.s $f0, $f2\n\t" \
148663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     "move $" #RS ", %1\n\t" \
149663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     "move $" #RD ", %2\n\t" \
150663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     instruction "\n\t" \
151663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     "move %0, $" #RD "\n\t" \
152663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     : "=&r" (out) \
153663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	 : "r" (RSval), "r" (RDval), "r" (cc) \
154663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	 : "t0", "t1", #RD, #RS, "cc", "memory" \
155663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	 ); \
156663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   printf("%s :: out: 0x%x, RDval: 0x%x, RSval: 0x%x, cc: %d\n", \
157663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng          instruction, out, RDval, RSval, cc); \
158663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng}
159663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
160663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// movf.s fd, fs
161663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define TESTINSNMOVE2s(instruction, FD, FS, cc, offset) \
162663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng{ \
163663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   float out; \
164663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   __asm__ volatile( \
165663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     "li $t0, 1\n\t" \
166663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     "move $t1, %1\n\t" \
167663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     "mtc1 $t0, $f0\n\t" \
168663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     "mtc1 $t1, $f2\n\t" \
169663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     "c.eq.s $f0, $f2\n\t" \
170663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     "move $t0, %2\n\t" \
171663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     "lwc1 $" #FS ", "#offset"($t0)\n\t" \
172663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     instruction "\n\t" \
173663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     "mov.s %0, $" #FD"\n\t" \
174663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     : "=&f" (out) \
175663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	 : "r" (cc), "r" (fs_f) \
176663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	 : "t0", "t1", "cc", "memory" \
177663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	 ); \
178663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   printf("%s :: out: %f, cc: %d\n", \
179663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng          instruction, out, cc); \
180663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng}
181663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
182663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// movf.d fd, fs
183663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define TESTINSNMOVE2d(instruction, FD, FS, cc, offset) \
184663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng{ \
185663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   double out; \
186663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   int out1; \
187663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   int out2; \
188663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   __asm__ volatile( \
189663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     "li $t0, 1\n\t" \
190663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     "move $t1, %3\n\t" \
191663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     "mtc1 $t0, $f0\n\t" \
192663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     "mtc1 $t1, $f2\n\t" \
193663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     "c.eq.s $f0, $f2\n\t" \
194663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     "move $t0, %4\n\t" \
195663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     "ldc1 $" #FS ", "#offset"($t0)\n\t" \
196663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     instruction "\n\t" \
197663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     "mov.d %0, $" #FD"\n\t" \
198663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     "mfc1 %1, $f4\n\t" \
199663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     "mfc1 %2, $f5\n\t" \
200663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     : "=&f" (out), "=&r" (out1), "=&r" (out2) \
201663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	 : "r" (cc), "r" (mem) \
202663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	 : "t0", "t1", "cc", "memory" \
203663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	 ); \
204663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   printf("%s :: out: 0x%x 0x%x, cc: %d\n", \
205663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng          instruction, out1, out2, cc); \
206663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng}
207663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
208663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// movn.s fd, fs, rt
209663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define TESTINSNMOVEN1s(instruction, offset, RTval, FD, FS, RT) \
210663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng{ \
211663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng    float out; \
212663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng    int out1; \
213663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   __asm__ volatile( \
214663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     "move $" #RT ", %3\n\t" \
215663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     "move $t0, %2\n\t" \
216663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     "lwc1 $" #FS ", "#offset"($t0)\n\t" \
217663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     "mtc1 $0, $" #FD "\n\t" \
218663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     instruction "\n\t" \
219663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     "mov.s %0, $" #FD"\n\t" \
220663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     "mfc1 %1, $" #FD"\n\t" \
221663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     : "=&f" (out), "=&r" (out1) \
222663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	 : "r" (fs_f), "r" (RTval) \
223663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	 : #RT, "cc", "memory" \
224663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	 ); \
225663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   printf("%s :: fs rt 0x%x\n", \
226663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng          instruction, out1); \
227663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng}
228663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
229663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng// movn.d fd, fs, rt
230663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define TESTINSNMOVEN1d(instruction, offset, RTval, FD, FS, RT) \
231663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng{ \
232663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng    double out; \
233663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng    int out1; \
234663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   __asm__ volatile( \
235663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     "move $" #RT ", %3\n\t" \
236663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     "move $t0, %2\n\t" \
237663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     "ldc1 $" #FS ", "#offset"($t0)\n\t" \
238663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     "mtc1 $0, $" #FD "\n\t" \
239663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     "mtc1 $0, $" #FD + 1"\n\t" \
240663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     instruction "\n\t" \
241663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     "mov.d %0, $" #FD"\n\t" \
242663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     "mfc1 %1, $" #FD"\n\t" \
243663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng     : "=&f" (out), "=&r" (out1) \
244663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	 : "r" (fs_f), "r" (RTval) \
245663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	 : #RT, "cc", "memory" \
246663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng	 ); \
247663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   printf("%s :: fs %lf, rt 0x%x\n", \
248663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng          instruction, out, out1); \
249663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng}
250663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
251663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengint main()
252663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng{
253663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   printf("MFC1\n");
254663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE("mfc1 $t1, $f0",  0, f0, t1);
255663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE("mfc1 $t2, $f1", 4, f1, t2);
256663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE("mfc1 $t3, $f2",  8, f2, t3);
257663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE("mfc1 $t4, $f3", 12, f3, t4);
258663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE("mfc1 $t5, $f4", 16, f4, t5);
259663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE("mfc1 $t6, $f5", 20, f5, t6);
260663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE("mfc1 $t7, $f6", 24, f6, t7);
261663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE("mfc1 $v0, $f7", 28, f7, v0);
262663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE("mfc1 $v1, $f8", 32, f8, v1);
263663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE("mfc1 $s0, $f9", 36, f9, s0);
264663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE("mfc1 $s1, $f10", 40, f10, s1);
265663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE("mfc1 $s2, $f11", 44, f11, s2);
266663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE("mfc1 $s3, $f12", 48, f12, s3);
267663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE("mfc1 $s4, $f13", 52, f13, s4);
268663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE("mfc1 $s5, $f14", 56, f14, s5);
269663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE("mfc1 $s6, $f15", 60, f15, s6);
270663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE("mfc1 $s7, $f16", 64, f16, s7);
271663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE("mfc1 $a0, $f17", 0, f17, a0);
272663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE("mfc1 $a1, $f18", 4, f18, a1);
273663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE("mfc1 $a2, $f19", 8, f19, a2);
274663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE("mfc1 $a3, $f20", 12, f20, a3);
275663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE("mfc1 $v0, $f21", 16, f21, v0);
276663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE("mfc1 $v1, $f22", 20, f22, v1);
277663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE("mfc1 $t8, $f23", 24, f23, t8);
278663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE("mfc1 $t9, $f24", 28, f24, t9);
279663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE("mfc1 $t1, $f25", 32, f25, t1);
280663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE("mfc1 $t2, $f26", 36, f26, t2);
281663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
282663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   printf("MTC1\n");
283663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEt("mtc1 $t1, $f0",  0, f0, t1);
284663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEt("mtc1 $t2, $f1", 4, f1, t2);
285663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEt("mtc1 $t3, $f2",  8, f2, t3);
286663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEt("mtc1 $t4, $f3", 12, f3, t4);
287663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEt("mtc1 $t5, $f4", 16, f4, t5);
288663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEt("mtc1 $t6, $f5", 20, f5, t6);
289663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEt("mtc1 $t7, $f6", 24, f6, t7);
290663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEt("mtc1 $v0, $f7", 28, f7, v0);
291663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEt("mtc1 $v1, $f8", 32, f8, v1);
292663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEt("mtc1 $s0, $f9", 36, f9, s0);
293663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEt("mtc1 $s1, $f10", 40, f10, s1);
294663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEt("mtc1 $s2, $f11", 44, f11, s2);
295663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEt("mtc1 $s3, $f12", 48, f12, s3);
296663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEt("mtc1 $s4, $f13", 52, f13, s4);
297663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEt("mtc1 $s5, $f14", 56, f14, s5);
298663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEt("mtc1 $s6, $f15", 60, f15, s6);
299663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEt("mtc1 $s7, $f16", 64, f16, s7);
300663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEt("mtc1 $a0, $f17", 2, f17, a0);
301663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEt("mtc1 $a1, $f18", 6, f18, a1);
302663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEt("mtc1 $a2, $f19", 10, f19, a2);
303663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEt("mtc1 $a3, $f20", 14, f20, a3);
304663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEt("mtc1 $v0, $f21", 18, f21, v0);
305663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEt("mtc1 $v1, $f22", 22, f22, v1);
306663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEt("mtc1 $t8, $f23", 26, f23, t8);
307663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEt("mtc1 $t9, $f24", 30, f24, t9);
308663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEt("mtc1 $t1, $f25", 34, f25, t1);
309663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEt("mtc1 $t2, $f26", 38, f26, t2);
310663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
311663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   printf("MOV.S\n");
312663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE1s("mov.s $f0, $f0",  0, f0, f0);
313663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE1s("mov.s $f0, $f1", 4, f0, f1);
314663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE1s("mov.s $f1, $f2",  8, f1, f2);
315663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE1s("mov.s $f2, $f3", 12, f2, f3);
316663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE1s("mov.s $f3, $f4", 16, f3, f4);
317663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE1s("mov.s $f4, $f5", 20, f4, f5);
318663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE1s("mov.s $f5, $f6", 24, f5, f6);
319663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE1s("mov.s $f6, $f7", 28, f6, f7);
320663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE1s("mov.s $f7, $f8", 32, f7, f8);
321663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE1s("mov.s $f8, $f9", 36, f8, f9);
322663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE1s("mov.s $f9, $f10", 40, f9, f10);
323663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE1s("mov.s $f10, $f11", 44, f10, f11);
324663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE1s("mov.s $f11, $f12", 48, f11, f12);
325663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE1s("mov.s $f12, $f13", 52, f12, f13);
326663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE1s("mov.s $f13, $f14", 56, f13, f14);
327663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE1s("mov.s $f14, $f15", 60, f14, f15);
328663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE1s("mov.s $f15, $f16", 64, f15, f16);
329663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE1s("mov.s $f16, $f17", 0, f16, f17);
330663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE1s("mov.s $f17, $f18", 4, f17, f18);
331663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE1s("mov.s $f18, $f19", 8, f18, f19);
332663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE1s("mov.s $f19, $f20", 12, f19, f20);
333663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE1s("mov.s $f20, $f21", 16, f20, f21);
334663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE1s("mov.s $f21, $f22", 20, f21, f22);
335663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE1s("mov.s $f22, $f23", 24, f22, f23);
336663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE1s("mov.s $f23, $f24", 28, f23, f24);
337663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE1s("mov.s $f24, $f25", 32, f24, f25);
338663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE1s("mov.s $f25, $f26", 36, f25, f26);
339663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
340663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   printf("MOV.D\n");
341663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE1d("mov.d $f0, $f0",  0, f0, f0);
342663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE1d("mov.d $f0, $f0", 8, f0, f0);
343663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE1d("mov.d $f0, $f2",  16, f0, f2);
344663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE1d("mov.d $f2, $f4", 24, f2, f4);
345663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE1d("mov.d $f2, $f4", 32, f2, f4);
346663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE1d("mov.d $f4, $f6", 40, f4, f6);
347663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE1d("mov.d $f4, $f6", 48, f4, f6);
348663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE1d("mov.d $f6, $f8", 56, f6, f8);
349663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE1d("mov.d $f6, $f8", 64, f6, f8);
350663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE1d("mov.d $f8, $f10", 0, f8, f10);
351663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE1d("mov.d $f8, $f10", 8, f8, f10);
352663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE1d("mov.d $f10, $f12", 16, f10, f12);
353663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE1d("mov.d $f10, $f12", 24, f10, f12);
354663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE1d("mov.d $f12, $f14", 32, f12, f14);
355663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE1d("mov.d $f12, $f14", 40, f12, f14);
356663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE1d("mov.d $f14, $f16", 48, f14, f16);
357663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE1d("mov.d $f14, $f16", 56, f14, f16);
358663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE1d("mov.d $f16, $f18", 64, f16, f18);
359663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE1d("mov.d $f16, $f18", 0, f16, f18);
360663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE1d("mov.d $f18, $f20", 8, f18, f20);
361663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE1d("mov.d $f18, $f20", 16, f18, f20);
362663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE1d("mov.d $f20, $f22", 24, f20, f22);
363663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE1d("mov.d $f20, $f22", 32, f20, f22);
364663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE1d("mov.d $f22, $f24", 40, f22, f24);
365663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE1d("mov.d $f22, $f24", 48, f22, f24);
366663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE1d("mov.d $f24, $f26", 56, f24, f26);
367663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE1d("mov.d $f24, $f26", 64, f24, f26);
368663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
369663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   printf("MOVF\n");
370663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2("movf $t0, $t1, $fcc0",  0, 0xffffffff, t0, t1, 1);
371663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2("movf $t0, $t1, $fcc0",  0xffffffff, 0xffffffff, t0, t1, 0);
372663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2("movf $t0, $t1, $fcc0",  555, 0xffffffff, t0, t1, 1);
373663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2("movf $t0, $t1, $fcc0",  0, 5, t0, t1, 0);
374663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2("movf $t0, $t1, $fcc0",  0, -1, t0, t1, 1);
375663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2("movf $t0, $t1, $fcc0",  0xffffffff, 25, t0, t1, 0);
376663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2("movf $t0, $t1, $fcc0",  0xffffffff, 0, t0, t1, 1);
377663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2("movf $t0, $t1, $fcc0",  0xffffffff, 66, t0, t1, 0);
378663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2("movf $t0, $t1, $fcc4",  0, 0xffffffff, t0, t1, 1);
379663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2("movf $t0, $t1, $fcc4",  0xffffffff, 0xffffffff, t0, t1, 0);
380663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2("movf $t0, $t1, $fcc4",  555, 0xffffffff, t0, t1, 1);
381663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2("movf $t0, $t1, $fcc4",  0, 5, t0, t1, 0);
382663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2("movf $t0, $t1, $fcc4",  0, -1, t0, t1, 1);
383663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2("movf $t0, $t1, $fcc4",  0xffffffff, 25, t0, t1, 0);
384663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2("movf $t0, $t1, $fcc4",  0xffffffff, 0, t0, t1, 1);
385663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2("movf $t0, $t1, $fcc4",  0xffffffff, 66, t0, t1, 0);
386663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
387663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   printf("MOVF.S\n");
388663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2s("movf.s $f4, $f6, $fcc0", f4, f6, 1, 0);
389663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2s("movf.s $f4, $f6, $fcc0", f4, f6, 1, 4);
390663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2s("movf.s $f4, $f6, $fcc0", f4, f6, 1, 8);
391663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2s("movf.s $f4, $f6, $fcc0", f4, f6, 1, 12);
392663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2s("movf.s $f4, $f6, $fcc0", f4, f6, 1, 16);
393663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2s("movf.s $f4, $f6, $fcc0", f4, f6, 1, 20);
394663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2s("movf.s $f4, $f6, $fcc0", f4, f6, 1, 24);
395663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2s("movf.s $f4, $f6, $fcc0", f4, f6, 1, 28);
396663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2s("movf.s $f4, $f6, $fcc0", f4, f6, 1, 32);
397663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2s("movf.s $f4, $f6, $fcc0", f4, f6, 1, 36)
398663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2s("movf.s $f4, $f6, $fcc0", f4, f6, 1, 40)
399663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2s("movf.s $f4, $f6, $fcc0", f4, f6, 1, 44)
400663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2s("movf.s $f4, $f6, $fcc0", f4, f6, 1, 48)
401663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2s("movf.s $f4, $f6, $fcc0", f4, f6, 1, 52)
402663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2s("movf.s $f4, $f6, $fcc0", f4, f6, 1, 56)
403663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2s("movf.s $f4, $f6, $fcc0", f4, f6, 0, 0);
404663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2s("movf.s $f4, $f6, $fcc0", f4, f6, 0, 4);
405663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2s("movf.s $f4, $f6, $fcc0", f4, f6, 0, 8);
406663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2s("movf.s $f4, $f6, $fcc0", f4, f6, 0, 12);
407663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2s("movf.s $f4, $f6, $fcc0", f4, f6, 0, 16);
408663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2s("movf.s $f4, $f6, $fcc0", f4, f6, 0, 20);
409663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2s("movf.s $f4, $f6, $fcc0", f4, f6, 0, 24);
410663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2s("movf.s $f4, $f6, $fcc0", f4, f6, 0, 28);
411663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2s("movf.s $f4, $f6, $fcc0", f4, f6, 0, 32);
412663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2s("movf.s $f4, $f6, $fcc0", f4, f6, 0, 36);
413663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2s("movf.s $f4, $f6, $fcc0", f4, f6, 0, 40);
414663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2s("movf.s $f4, $f6, $fcc0", f4, f6, 0, 44);
415663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2s("movf.s $f4, $f6, $fcc0", f4, f6, 0, 48);
416663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2s("movf.s $f4, $f6, $fcc0", f4, f6, 0, 52);
417663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2s("movf.s $f4, $f6, $fcc0", f4, f6, 0, 56);
418663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
419663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   printf("MOVF.D\n");
420663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2d("movf.d $f4, $f6, $fcc0", f4, f6, 1, 0);
421663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2d("movf.d $f4, $f6, $fcc0", f4, f6, 1, 8);
422663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2d("movf.d $f4, $f6, $fcc0", f4, f6, 1, 16);
423663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2d("movf.d $f4, $f6, $fcc0", f4, f6, 1, 24);
424663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2d("movf.d $f4, $f6, $fcc0", f4, f6, 1, 32);
425663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2d("movf.d $f4, $f6, $fcc0", f4, f6, 1, 40);
426663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2d("movf.d $f4, $f6, $fcc0", f4, f6, 1, 48);
427663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2d("movf.d $f4, $f6, $fcc0", f4, f6, 1, 56);
428663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2d("movf.d $f4, $f6, $fcc0", f4, f6, 1, 64);
429663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2d("movf.d $f4, $f6, $fcc0", f4, f6, 1, 0)
430663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2d("movf.d $f4, $f6, $fcc0", f4, f6, 1, 8)
431663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2d("movf.d $f4, $f6, $fcc0", f4, f6, 1, 16)
432663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2d("movf.d $f4, $f6, $fcc0", f4, f6, 1, 24)
433663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2d("movf.d $f4, $f6, $fcc0", f4, f6, 1, 32)
434663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2d("movf.d $f4, $f6, $fcc0", f4, f6, 1, 40)
435663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2d("movf.d $f4, $f6, $fcc0", f4, f6, 0, 48);
436663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2d("movf.d $f4, $f6, $fcc0", f4, f6, 0, 56);
437663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2d("movf.d $f4, $f6, $fcc0", f4, f6, 0, 64);
438663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2d("movf.d $f4, $f6, $fcc0", f4, f6, 0, 0);
439663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2d("movf.d $f4, $f6, $fcc0", f4, f6, 0, 8);
440663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2d("movf.d $f4, $f6, $fcc0", f4, f6, 0, 16);
441663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2d("movf.d $f4, $f6, $fcc0", f4, f6, 0, 24);
442663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2d("movf.d $f4, $f6, $fcc0", f4, f6, 0, 32);
443663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2d("movf.d $f4, $f6, $fcc0", f4, f6, 0, 40);
444663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2d("movf.d $f4, $f6, $fcc0", f4, f6, 0, 48);
445663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2d("movf.d $f4, $f6, $fcc0", f4, f6, 0, 56);
446663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2d("movf.d $f4, $f6, $fcc0", f4, f6, 0, 64);
447663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2d("movf.d $f4, $f6, $fcc0", f4, f6, 0, 0);
448663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2d("movf.d $f4, $f6, $fcc0", f4, f6, 0, 8);
449663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2d("movf.d $f4, $f6, $fcc0", f4, f6, 0, 16);
450663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
451663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   printf("MOVN.S\n");
452663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEN1s("movn.s $f0, $f2, $t3", 0, 0, f0, f2, t3);
453663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEN1s("movn.s $f0, $f2, $t3", 4, 1, f0, f2, t3);
454663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEN1s("movn.s $f0, $f2, $t3", 8, 0xffff, f0, f2, t3);
455663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEN1s("movn.s $f0, $f2, $t3", 12, -1, f0, f2, t3);
456663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEN1s("movn.s $f0, $f2, $t3", 16, 5, f0, f2, t3);
457663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEN1s("movn.s $f0, $f2, $t3", 20, 0, f0, f2, t3);
458663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEN1s("movn.s $f0, $f2, $t3", 24, 0, f0, f2, t3);
459663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEN1s("movn.s $f0, $f2, $t3", 28, 5, f0, f2, t3);
460663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEN1s("movn.s $f0, $f2, $t3", 32, 125487, f0, f2, t3);
461663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEN1s("movn.s $f0, $f2, $t3", 36, 68, f0, f2, t3);
462663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEN1s("movn.s $f0, $f2, $t3", 40, -122544, f0, f2, t3);
463663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEN1s("movn.s $f0, $f2, $t3", 44, 0, f0, f2, t3);
464663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEN1s("movn.s $f0, $f2, $t3", 48, 0, f0, f2, t3);
465663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEN1s("movn.s $f0, $f2, $t3", 52, 0xffffffff, f0, f2, t3);
466663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEN1s("movn.s $f0, $f2, $t3", 56, 0x80000000, f0, f2, t3);
467663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEN1s("movn.s $f0, $f2, $t3", 60, 0x7fffffff, f0, f2, t3);
468663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
469663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   printf("MOVN.D\n");
470663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEN1s("movn.d $f0, $f2, $t3", 0, 0, f0, f2, t3);
471663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEN1s("movn.d $f0, $f2, $t3", 4, 1, f0, f2, t3);
472663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEN1s("movn.d $f0, $f2, $t3", 8, 0xffff, f0, f2, t3);
473663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEN1s("movn.d $f0, $f2, $t3", 12, -1, f0, f2, t3);
474663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEN1s("movn.d $f0, $f2, $t3", 16, 5, f0, f2, t3);
475663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEN1s("movn.d $f0, $f2, $t3", 20, 0, f0, f2, t3);
476663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEN1s("movn.d $f0, $f2, $t3", 24, 0, f0, f2, t3);
477663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEN1s("movn.d $f0, $f2, $t3", 28, 5, f0, f2, t3);
478663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEN1s("movn.d $f0, $f2, $t3", 32, 125487, f0, f2, t3);
479663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEN1s("movn.d $f0, $f2, $t3", 36, 68, f0, f2, t3);
480663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEN1s("movn.d $f0, $f2, $t3", 40, -122544, f0, f2, t3);
481663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEN1s("movn.d $f0, $f2, $t3", 44, 0, f0, f2, t3);
482663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEN1s("movn.d $f0, $f2, $t3", 48, 0, f0, f2, t3);
483663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEN1s("movn.d $f0, $f2, $t3", 52, 0xffffffff, f0, f2, t3);
484663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEN1s("movn.d $f0, $f2, $t3", 56, 0x80000000, f0, f2, t3);
485663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEN1s("movn.d $f0, $f2, $t3", 60, 0x7fffffff, f0, f2, t3);
486663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
487663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   printf("MOVT\n");
488663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2("movt $t0, $t1, $fcc0",  0, 0xffffffff, t0, t1, 1);
489663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2("movt $t0, $t1, $fcc0",  0xffffffff, 0xffffffff, t0, t1, 0);
490663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2("movt $t0, $t1, $fcc0",  555, 0xffffffff, t0, t1, 1);
491663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2("movt $t0, $t1, $fcc0",  0, 5, t0, t1, 0);
492663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2("movt $t0, $t1, $fcc0",  0, -1, t0, t1, 1);
493663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2("movt $t0, $t1, $fcc0",  0xffffffff, 25, t0, t1, 0);
494663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2("movt $t0, $t1, $fcc0",  0xffffffff, 0, t0, t1, 1);
495663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2("movt $t0, $t1, $fcc0",  0xffffffff, 66, t0, t1, 0);
496663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2("movt $t0, $t1, $fcc4",  0, 0xffffffff, t0, t1, 1);
497663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2("movt $t0, $t1, $fcc4",  0xffffffff, 0xffffffff, t0, t1, 0);
498663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2("movt $t0, $t1, $fcc4",  555, 0xffffffff, t0, t1, 1);
499663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2("movt $t0, $t1, $fcc4",  0, 5, t0, t1, 0);
500663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2("movt $t0, $t1, $fcc4",  0, -1, t0, t1, 1);
501663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2("movt $t0, $t1, $fcc4",  0xffffffff, 25, t0, t1, 0);
502663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2("movt $t0, $t1, $fcc4",  0xffffffff, 0, t0, t1, 1);
503663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2("movt $t0, $t1, $fcc4",  0xffffffff, 66, t0, t1, 0);
504663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
505663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   printf("MOVT.S\n");
506663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2s("movt.s $f4, $f6, $fcc0", f4, f6, 1, 0);
507663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2s("movt.s $f4, $f6, $fcc0", f4, f6, 1, 4);
508663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2s("movt.s $f4, $f6, $fcc0", f4, f6, 1, 8);
509663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2s("movt.s $f4, $f6, $fcc0", f4, f6, 1, 12);
510663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2s("movt.s $f4, $f6, $fcc0", f4, f6, 1, 16);
511663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2s("movt.s $f4, $f6, $fcc0", f4, f6, 1, 20);
512663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2s("movt.s $f4, $f6, $fcc0", f4, f6, 1, 24);
513663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2s("movt.s $f4, $f6, $fcc0", f4, f6, 1, 28);
514663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2s("movt.s $f4, $f6, $fcc0", f4, f6, 1, 32);
515663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2s("movt.s $f4, $f6, $fcc0", f4, f6, 1, 36)
516663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2s("movt.s $f4, $f6, $fcc0", f4, f6, 1, 40)
517663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2s("movt.s $f4, $f6, $fcc0", f4, f6, 1, 44)
518663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2s("movt.s $f4, $f6, $fcc0", f4, f6, 1, 48)
519663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2s("movt.s $f4, $f6, $fcc0", f4, f6, 1, 52)
520663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2s("movt.s $f4, $f6, $fcc0", f4, f6, 1, 56)
521663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2s("movt.s $f4, $f6, $fcc0", f4, f6, 0, 0);
522663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2s("movt.s $f4, $f6, $fcc0", f4, f6, 0, 4);
523663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2s("movt.s $f4, $f6, $fcc0", f4, f6, 0, 8);
524663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2s("movt.s $f4, $f6, $fcc0", f4, f6, 0, 12);
525663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2s("movt.s $f4, $f6, $fcc0", f4, f6, 0, 16);
526663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2s("movt.s $f4, $f6, $fcc0", f4, f6, 0, 20);
527663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2s("movt.s $f4, $f6, $fcc0", f4, f6, 0, 24);
528663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2s("movt.s $f4, $f6, $fcc0", f4, f6, 0, 28);
529663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2s("movt.s $f4, $f6, $fcc0", f4, f6, 0, 32);
530663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2s("movt.s $f4, $f6, $fcc0", f4, f6, 0, 36);
531663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2s("movt.s $f4, $f6, $fcc0", f4, f6, 0, 40);
532663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2s("movt.s $f4, $f6, $fcc0", f4, f6, 0, 44);
533663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2s("movt.s $f4, $f6, $fcc0", f4, f6, 0, 48);
534663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2s("movt.s $f4, $f6, $fcc0", f4, f6, 0, 52);
535663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2s("movt.s $f4, $f6, $fcc0", f4, f6, 0, 56);
536663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
537663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   printf("MOVT.D\n");
538663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2d("movt.d $f4, $f6, $fcc0", f4, f6, 1, 0);
539663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2d("movt.d $f4, $f6, $fcc0", f4, f6, 1, 8);
540663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2d("movt.d $f4, $f6, $fcc0", f4, f6, 1, 16);
541663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2d("movt.d $f4, $f6, $fcc0", f4, f6, 1, 24);
542663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2d("movt.d $f4, $f6, $fcc0", f4, f6, 1, 32);
543663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2d("movt.d $f4, $f6, $fcc0", f4, f6, 1, 40);
544663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2d("movt.d $f4, $f6, $fcc0", f4, f6, 1, 48);
545663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2d("movt.d $f4, $f6, $fcc0", f4, f6, 1, 56);
546663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2d("movt.d $f4, $f6, $fcc0", f4, f6, 1, 64);
547663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2d("movt.d $f4, $f6, $fcc0", f4, f6, 1, 0)
548663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2d("movt.d $f4, $f6, $fcc0", f4, f6, 1, 8)
549663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2d("movt.d $f4, $f6, $fcc0", f4, f6, 1, 16)
550663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2d("movt.d $f4, $f6, $fcc0", f4, f6, 1, 24)
551663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2d("movt.d $f4, $f6, $fcc0", f4, f6, 1, 32)
552663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2d("movt.d $f4, $f6, $fcc0", f4, f6, 1, 40)
553663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2d("movt.d $f4, $f6, $fcc0", f4, f6, 0, 48);
554663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2d("movt.d $f4, $f6, $fcc0", f4, f6, 0, 56);
555663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2d("movt.d $f4, $f6, $fcc0", f4, f6, 0, 64);
556663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2d("movt.d $f4, $f6, $fcc0", f4, f6, 0, 0);
557663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2d("movt.d $f4, $f6, $fcc0", f4, f6, 0, 8);
558663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2d("movt.d $f4, $f6, $fcc0", f4, f6, 0, 16);
559663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2d("movt.d $f4, $f6, $fcc0", f4, f6, 0, 24);
560663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2d("movt.d $f4, $f6, $fcc0", f4, f6, 0, 32);
561663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2d("movt.d $f4, $f6, $fcc0", f4, f6, 0, 40);
562663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2d("movt.d $f4, $f6, $fcc0", f4, f6, 0, 48);
563663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2d("movt.d $f4, $f6, $fcc0", f4, f6, 0, 56);
564663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2d("movt.d $f4, $f6, $fcc0", f4, f6, 0, 64);
565663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2d("movt.d $f4, $f6, $fcc0", f4, f6, 0, 0);
566663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2d("movt.d $f4, $f6, $fcc0", f4, f6, 0, 8);
567663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVE2d("movt.d $f4, $f6, $fcc0", f4, f6, 0, 16);
568663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
569663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   printf("MOVZ.S\n");
570663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEN1s("movz.s $f0, $f2, $t3", 0, 0, f0, f2, t3);
571663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEN1s("movz.s $f0, $f2, $t3", 4, 1, f0, f2, t3);
572663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEN1s("movz.s $f0, $f2, $t3", 8, 0xffff, f0, f2, t3);
573663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEN1s("movz.s $f0, $f2, $t3", 12, -1, f0, f2, t3);
574663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEN1s("movz.s $f0, $f2, $t3", 16, 5, f0, f2, t3);
575663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEN1s("movz.s $f0, $f2, $t3", 20, 0, f0, f2, t3);
576663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEN1s("movz.s $f0, $f2, $t3", 24, 0, f0, f2, t3);
577663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEN1s("movz.s $f0, $f2, $t3", 24, 0, f0, f2, t3);
578663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEN1s("movz.s $f0, $f2, $t3", 28, 5, f0, f2, t3);
579663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEN1s("movz.s $f0, $f2, $t3", 32, 125487, f0, f2, t3);
580663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEN1s("movz.s $f0, $f2, $t3", 36, 68, f0, f2, t3);
581663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEN1s("movz.s $f0, $f2, $t3", 40, -122544, f0, f2, t3);
582663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEN1s("movz.s $f0, $f2, $t3", 44, 0, f0, f2, t3);
583663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEN1s("movz.s $f0, $f2, $t3", 48, 0, f0, f2, t3);
584663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEN1s("movz.s $f0, $f2, $t3", 52, 0xffffffff, f0, f2, t3);
585663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEN1s("movz.s $f0, $f2, $t3", 56, 0x80000000, f0, f2, t3);
586663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEN1s("movz.s $f0, $f2, $t3", 60, 0x7fffffff, f0, f2, t3);
587663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng
588663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   printf("MOVZ.D\n");
589663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEN1s("movz.d $f0, $f2, $t3", 0, 0, f0, f2, t3);
590663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEN1s("movz.d $f0, $f2, $t3", 4, 1, f0, f2, t3);
591663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEN1s("movz.d $f0, $f2, $t3", 8, 0xffff, f0, f2, t3);
592663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEN1s("movz.d $f0, $f2, $t3", 12, -1, f0, f2, t3);
593663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEN1s("movz.d $f0, $f2, $t3", 16, 5, f0, f2, t3);
594663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEN1s("movz.d $f0, $f2, $t3", 20, 0, f0, f2, t3);
595663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEN1s("movz.d $f0, $f2, $t3", 24, 0, f0, f2, t3);
596663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEN1s("movz.d $f0, $f2, $t3", 28, 5, f0, f2, t3);
597663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEN1s("movz.d $f0, $f2, $t3", 32, 125487, f0, f2, t3);
598663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEN1s("movz.d $f0, $f2, $t3", 36, 68, f0, f2, t3);
599663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEN1s("movz.d $f0, $f2, $t3", 40, -122544, f0, f2, t3);
600663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEN1s("movz.d $f0, $f2, $t3", 44, 0, f0, f2, t3);
601663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEN1s("movz.d $f0, $f2, $t3", 48, 0, f0, f2, t3);
602663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEN1s("movz.d $f0, $f2, $t3", 52, 0xffffffff, f0, f2, t3);
603663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEN1s("movz.d $f0, $f2, $t3", 56, 0x80000000, f0, f2, t3);
604663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   TESTINSNMOVEN1s("movz.d $f0, $f2, $t3", 60, 0x7fffffff, f0, f2, t3);
605663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng   return 0;
606663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng}
607