mirror of
https://github.com/ioacademy-jikim/debugging
synced 2025-06-08 08:26:14 +00:00
454 lines
13 KiB
C
454 lines
13 KiB
C
#include <stdio.h>
|
|
|
|
unsigned int mem[] = {
|
|
0x4095A266, 0x66666666,
|
|
0xBFF00000, 0x00000000,
|
|
0x3FF00000, 0x00000000,
|
|
0x252a2e2b, 0x262d2d2a,
|
|
0xFFFFFFFF, 0xFFFFFFFF,
|
|
0x41D26580, 0xB487E5C9,
|
|
0x42026580, 0xB750E388,
|
|
0x3E45798E, 0xE2308C3A,
|
|
0x3FBF9ADD, 0x3746F65F
|
|
};
|
|
|
|
float fs_f[] = {
|
|
0, 456.2489562, 3, -1,
|
|
1384.6, -7.2945676, 1000000000, -5786.47,
|
|
1752, 0.0024575, 0.00000001, -248562.76,
|
|
-45786.476, 456.2489562, 34.00046, 45786.476,
|
|
1752065, 107, -45667.24, -7.2945676,
|
|
-347856.475, 356047.56, -1.0, 23.04
|
|
};
|
|
|
|
double fs_d[] = {
|
|
0, 456.2489562, 3, -1,
|
|
1384.6, -7.2945676, 1000000000, -5786.47,
|
|
1752, 0.0024575, 0.00000001, -248562.76,
|
|
-45786.476, 456.2489562, 34.00046, 45786.476,
|
|
1752065, 107, -45667.24, -7.2945676,
|
|
-347856.475, 356047.56, -1.0, 23.04
|
|
};
|
|
|
|
double mem1[] = {
|
|
0, 0, 0, 0,
|
|
0, 0, 0, 0,
|
|
0, 0, 0, 0,
|
|
0, 0, 0, 0
|
|
};
|
|
|
|
float mem1f[] = {
|
|
0, 0, 0, 0,
|
|
0, 0, 0, 0,
|
|
0, 0, 0, 0,
|
|
0, 0, 0, 0
|
|
};
|
|
|
|
// ldc1 $f0, 0($t1)
|
|
#if (__mips_fpr==64)
|
|
#define TESTINSN5LOAD(instruction, RTval, offset, RT) \
|
|
{ \
|
|
double out; \
|
|
int out1; \
|
|
int out2; \
|
|
__asm__ volatile( \
|
|
"move $t1, %3\n\t" \
|
|
"li $t0, " #RTval"\n\t" \
|
|
instruction "\n\t" \
|
|
"mov.d %0, $" #RT "\n\t" \
|
|
"mfc1 %1, $" #RT "\n\t" \
|
|
"mfhc1 %2, $" #RT "\n\t" \
|
|
: "=&f" (out), "=&r" (out1), "=&r" (out2) \
|
|
: "r" (mem), "r" (RTval) \
|
|
: "cc", "memory" \
|
|
); \
|
|
printf("%s :: ft 0x%x%x\n", \
|
|
instruction, out1, out2); \
|
|
}
|
|
#else
|
|
#define TESTINSN5LOAD(instruction, RTval, offset, RT) \
|
|
{ \
|
|
double out; \
|
|
int out1; \
|
|
int out2; \
|
|
__asm__ volatile( \
|
|
"move $t1, %3\n\t" \
|
|
"li $t0, " #RTval"\n\t" \
|
|
instruction "\n\t" \
|
|
"mov.d %0, $" #RT "\n\t" \
|
|
"mfc1 %1, $" #RT "\n\t" \
|
|
"mfc1 %2, $f1\n\t" \
|
|
: "=&f" (out), "=&r" (out1), "=&r" (out2) \
|
|
: "r" (mem), "r" (RTval) \
|
|
: "cc", "memory" \
|
|
); \
|
|
printf("%s :: ft 0x%x%x\n", \
|
|
instruction, out1, out2); \
|
|
}
|
|
#endif
|
|
|
|
// lwc1 $f0, 0($t1)
|
|
#define TESTINSN5LOADw(instruction, RTval, offset, RT) \
|
|
{ \
|
|
double out; \
|
|
int out1; \
|
|
__asm__ volatile( \
|
|
"move $t1, %2\n\t" \
|
|
"li $t0, " #RTval"\n\t" \
|
|
instruction "\n\t" \
|
|
"mov.d %0, $" #RT "\n\t" \
|
|
"mfc1 %1, $" #RT "\n\t" \
|
|
: "=&f" (out), "=&r" (out1) \
|
|
: "r" (mem), "r" (RTval) \
|
|
: "cc", "memory" \
|
|
); \
|
|
printf("%s :: ft 0x%x\n", \
|
|
instruction, out1); \
|
|
}
|
|
|
|
// lwxc1 $f0, $a3($v0)
|
|
#define TESTINSN6LOADw(instruction, indexVal, fd, index, base) \
|
|
{ \
|
|
int out; \
|
|
__asm__ volatile( \
|
|
"move $" #base ", %1\n\t" \
|
|
"li $" #index ", " #indexVal"\n\t" \
|
|
instruction "\n\t" \
|
|
"mfc1 %0, $" #fd "\n\t" \
|
|
: "=&r" (out) \
|
|
: "r" (mem) \
|
|
: "cc", "memory" \
|
|
); \
|
|
printf("%s :: ft 0x%x\n", \
|
|
instruction, out); \
|
|
}
|
|
|
|
// ldxc1 $f0, $a3($v0)
|
|
#if (__mips_fpr==64)
|
|
#define TESTINSN6LOADd(instruction, indexVal, fd, index, base) \
|
|
{ \
|
|
int out1; \
|
|
int out2; \
|
|
__asm__ volatile( \
|
|
"move $" #base ", %2\n\t" \
|
|
"li $" #index ", " #indexVal"\n\t" \
|
|
instruction "\n\t" \
|
|
"mfc1 %0, $" #fd "\n\t" \
|
|
"mfhc1 %1, $" #fd "\n\t" \
|
|
: "=&r" (out1), "=&r" (out2) \
|
|
: "r" (mem) \
|
|
: "cc", "memory" \
|
|
); \
|
|
printf("%s :: ft lo: 0x%x, ft hi: 0x%x\n", \
|
|
instruction, out1, out2); \
|
|
}
|
|
#else
|
|
#define TESTINSN6LOADd(instruction, indexVal, fd, index, base) \
|
|
{ \
|
|
int out1; \
|
|
int out2; \
|
|
__asm__ volatile( \
|
|
"move $" #base ", %2\n\t" \
|
|
"li $" #index ", " #indexVal"\n\t" \
|
|
instruction "\n\t" \
|
|
"mfc1 %0, $" #fd "\n\t" \
|
|
"mfc1 %1, $f1\n\t" \
|
|
: "=&r" (out1), "=&r" (out2) \
|
|
: "r" (mem) \
|
|
: "cc", "memory" \
|
|
); \
|
|
printf("%s :: ft lo: 0x%x, ft hi: 0x%x\n", \
|
|
instruction, out1, out2); \
|
|
}
|
|
#endif
|
|
|
|
// sdc1 $f0, 0($t0)
|
|
#define TESTINST1(offset) \
|
|
{ \
|
|
unsigned int out; \
|
|
__asm__ volatile( \
|
|
"move $t0, %1\n\t" \
|
|
"move $t1, %2\n\t" \
|
|
"ldc1 $f0, "#offset"($t1)\n\t" \
|
|
"sdc1 $f0, "#offset"($t0) \n\t" \
|
|
"lw %0, "#offset"($t0)\n\t" \
|
|
: "=&r" (out) \
|
|
: "r" (mem1), "r" (fs_d) \
|
|
: "t1", "t0", "cc", "memory" \
|
|
); \
|
|
printf("sdc1 $f0, 0($t0) :: out: 0x%x\n", \
|
|
out); \
|
|
}
|
|
|
|
// sdxc1 $f0, $t2($t0)
|
|
#define TESTINST1a(offset) \
|
|
{ \
|
|
unsigned int out; \
|
|
unsigned int out1; \
|
|
__asm__ volatile( \
|
|
"move $t0, %2\n\t" \
|
|
"move $t1, %3\n\t" \
|
|
"li $t2, "#offset"\n\t" \
|
|
"ldc1 $f0, "#offset"($t1)\n\t" \
|
|
"sdxc1 $f0, $t2($t0) \n\t" \
|
|
"lw %0, "#offset"($t0)\n\t" \
|
|
"addi $t0, $t0, 4 \n\t" \
|
|
"lw %1, "#offset"($t0)\n\t" \
|
|
: "=&r" (out), "=&r" (out1) \
|
|
: "r" (mem1), "r" (fs_d) \
|
|
: "t2", "t1", "t0", "cc", "memory" \
|
|
); \
|
|
printf("sdc1 $f0, #t2($t0) :: out: 0x%x : out1: 0x%x\n", \
|
|
out, out1); \
|
|
}
|
|
|
|
// swc1 $f0, 0($t0)
|
|
#define TESTINST2(offset) \
|
|
{ \
|
|
unsigned int out; \
|
|
__asm__ volatile( \
|
|
"move $t0, %1\n\t" \
|
|
"move $t1, %2\n\t" \
|
|
"lwc1 $f0, "#offset"($t1)\n\t" \
|
|
"swc1 $f0, "#offset"($t0) \n\t" \
|
|
"lw %0, "#offset"($t0)\n\t" \
|
|
: "=&r" (out) \
|
|
: "r" (mem1f), "r" (fs_f) \
|
|
: "t1", "t0", "cc", "memory" \
|
|
); \
|
|
printf("swc1 $f0, 0($t0) :: out: 0x%x\n", \
|
|
out); \
|
|
}
|
|
|
|
// SWXC1 $f0, $t2($t0)
|
|
#define TESTINST2a(offset) \
|
|
{ \
|
|
unsigned int out; \
|
|
__asm__ volatile( \
|
|
"move $t0, %1\n\t" \
|
|
"move $t1, %2\n\t" \
|
|
"li $t2, "#offset" \n\t" \
|
|
"lwc1 $f0, "#offset"($t1)\n\t" \
|
|
"swxc1 $f0, $t2($t0) \n\t" \
|
|
"lw %0, "#offset"($t0)\n\t" \
|
|
: "=&r" (out) \
|
|
: "r" (mem1f), "r" (fs_f) \
|
|
: "t2", "t1", "t0", "cc", "memory" \
|
|
); \
|
|
printf("swxc1 $f0, 0($t0) :: out: 0x%x\n", \
|
|
out); \
|
|
}
|
|
void ppMem(double *m, int len)
|
|
{
|
|
int i;
|
|
printf("MEM1:\n");
|
|
for (i = 0; i < len; i=i+4)
|
|
{
|
|
printf("%lf, %lf, %lf, %lf\n", m[i], m[i+1], m[i+2], m[i+3]);
|
|
m[i] = 0;
|
|
m[i+1] = 0;
|
|
m[i+2] = 0;
|
|
m[i+3] = 0;
|
|
}
|
|
}
|
|
|
|
void ppMemF(float *m, int len)
|
|
{
|
|
int i;
|
|
printf("MEM1:\n");
|
|
for (i = 0; i < len; i=i+4)
|
|
{
|
|
printf("%lf, %lf, %lf, %lf\n", m[i], m[i+1], m[i+2], m[i+3]);
|
|
m[i] = 0;
|
|
m[i+1] = 0;
|
|
m[i+2] = 0;
|
|
m[i+3] = 0;
|
|
}
|
|
}
|
|
|
|
int main()
|
|
{
|
|
printf("LDC1\n");
|
|
TESTINSN5LOAD("ldc1 $f0, 0($t1)", 0, 0, f0);
|
|
TESTINSN5LOAD("ldc1 $f0, 8($t1)", 0, 8, f0);
|
|
TESTINSN5LOAD("ldc1 $f0, 16($t1)", 0, 16, f0);
|
|
TESTINSN5LOAD("ldc1 $f0, 24($t1)", 0, 24, f0);
|
|
TESTINSN5LOAD("ldc1 $f0, 32($t1)", 0, 32, f0);
|
|
TESTINSN5LOAD("ldc1 $f0, 40($t1)", 0, 40, f0);
|
|
TESTINSN5LOAD("ldc1 $f0, 48($t1)", 0, 48, f0);
|
|
TESTINSN5LOAD("ldc1 $f0, 56($t1)", 0, 56, f0);
|
|
TESTINSN5LOAD("ldc1 $f0, 64($t1)", 0, 64, f0);
|
|
TESTINSN5LOAD("ldc1 $f0, 0($t1)", 0, 0, f0);
|
|
TESTINSN5LOAD("ldc1 $f0, 8($t1)", 0, 8, f0);
|
|
TESTINSN5LOAD("ldc1 $f0, 16($t1)", 0, 16, f0);
|
|
TESTINSN5LOAD("ldc1 $f0, 24($t1)", 0, 24, f0);
|
|
TESTINSN5LOAD("ldc1 $f0, 32($t1)", 0, 32, f0);
|
|
TESTINSN5LOAD("ldc1 $f0, 40($t1)", 0, 40, f0);
|
|
TESTINSN5LOAD("ldc1 $f0, 48($t1)", 0, 48, f0);
|
|
TESTINSN5LOAD("ldc1 $f0, 56($t1)", 0, 56, f0);
|
|
TESTINSN5LOAD("ldc1 $f0, 0($t1)", 0, 0, f0);
|
|
TESTINSN5LOAD("ldc1 $f0, 8($t1)", 0, 8, f0);
|
|
TESTINSN5LOAD("ldc1 $f0, 16($t1)", 0, 16, f0);
|
|
TESTINSN5LOAD("ldc1 $f0, 24($t1)", 0, 24, f0);
|
|
TESTINSN5LOAD("ldc1 $f0, 32($t1)", 0, 32, f0);
|
|
TESTINSN5LOAD("ldc1 $f0, 40($t1)", 0, 40, f0);
|
|
TESTINSN5LOAD("ldc1 $f0, 48($t1)", 0, 48, f0);
|
|
TESTINSN5LOAD("ldc1 $f0, 56($t1)", 0, 56, f0);
|
|
TESTINSN5LOAD("ldc1 $f0, 64($t1)", 0, 64, f0);
|
|
TESTINSN5LOAD("ldc1 $f0, 0($t1)", 0, 0, f0);
|
|
|
|
printf("LWC1\n");
|
|
TESTINSN5LOADw("lwc1 $f0, 0($t1)", 0, 0, f0);
|
|
TESTINSN5LOADw("lwc1 $f0, 4($t1)", 0, 4, f0);
|
|
TESTINSN5LOADw("lwc1 $f0, 8($t1)", 0, 8, f0);
|
|
TESTINSN5LOADw("lwc1 $f0, 12($t1)", 0, 12, f0);
|
|
TESTINSN5LOADw("lwc1 $f0, 16($t1)", 0, 16, f0);
|
|
TESTINSN5LOADw("lwc1 $f0, 20($t1)", 0, 20, f0);
|
|
TESTINSN5LOADw("lwc1 $f0, 24($t1)", 0, 24, f0);
|
|
TESTINSN5LOADw("lwc1 $f0, 28($t1)", 0, 28, f0);
|
|
TESTINSN5LOADw("lwc1 $f0, 32($t1)", 0, 32, f0);
|
|
TESTINSN5LOADw("lwc1 $f0, 36($t1)", 0, 36, f0);
|
|
TESTINSN5LOADw("lwc1 $f0, 40($t1)", 0, 40, f0);
|
|
TESTINSN5LOADw("lwc1 $f0, 44($t1)", 0, 44, f0);
|
|
TESTINSN5LOADw("lwc1 $f0, 48($t1)", 0, 48, f0);
|
|
TESTINSN5LOADw("lwc1 $f0, 52($t1)", 0, 52, f0);
|
|
TESTINSN5LOADw("lwc1 $f0, 56($t1)", 0, 56, f0);
|
|
TESTINSN5LOADw("lwc1 $f0, 60($t1)", 0, 60, f0);
|
|
TESTINSN5LOADw("lwc1 $f0, 64($t1)", 0, 64, f0);
|
|
TESTINSN5LOADw("lwc1 $f0, 0($t1)", 0, 0, f0);
|
|
TESTINSN5LOADw("lwc1 $f0, 8($t1)", 0, 8, f0);
|
|
TESTINSN5LOADw("lwc1 $f0, 16($t1)", 0, 16, f0);
|
|
TESTINSN5LOADw("lwc1 $f0, 24($t1)", 0, 24, f0);
|
|
TESTINSN5LOADw("lwc1 $f0, 32($t1)", 0, 32, f0);
|
|
TESTINSN5LOADw("lwc1 $f0, 40($t1)", 0, 40, f0);
|
|
TESTINSN5LOADw("lwc1 $f0, 48($t1)", 0, 48, f0);
|
|
TESTINSN5LOADw("lwc1 $f0, 56($t1)", 0, 56, f0);
|
|
TESTINSN5LOADw("lwc1 $f0, 64($t1)", 0, 64, f0);
|
|
TESTINSN5LOADw("lwc1 $f0, 0($t1)", 0, 0, f0);
|
|
|
|
#if (__mips==32) && (__mips_isa_rev>=2)
|
|
printf("LWXC1\n");
|
|
TESTINSN6LOADw("lwxc1 $f0, $a3($v0)", 0, f0, a3, v0);
|
|
TESTINSN6LOADw("lwxc1 $f0, $a3($v0)", 4, f0, a3, v0);
|
|
TESTINSN6LOADw("lwxc1 $f0, $a3($v0)", 8, f0, a3, v0);
|
|
TESTINSN6LOADw("lwxc1 $f0, $a3($v0)", 12, f0, a3, v0);
|
|
TESTINSN6LOADw("lwxc1 $f0, $a3($v0)", 16, f0, a3, v0);
|
|
TESTINSN6LOADw("lwxc1 $f0, $a3($v0)", 20, f0, a3, v0);
|
|
TESTINSN6LOADw("lwxc1 $f0, $a3($v0)", 24, f0, a3, v0);
|
|
TESTINSN6LOADw("lwxc1 $f0, $a3($v0)", 28, f0, a3, v0);
|
|
TESTINSN6LOADw("lwxc1 $f0, $a3($v0)", 32, f0, a3, v0);
|
|
TESTINSN6LOADw("lwxc1 $f0, $a3($v0)", 36, f0, a3, v0);
|
|
TESTINSN6LOADw("lwxc1 $f0, $a3($v0)", 40, f0, a3, v0);
|
|
TESTINSN6LOADw("lwxc1 $f0, $a3($v0)", 44, f0, a3, v0);
|
|
TESTINSN6LOADw("lwxc1 $f0, $a3($v0)", 48, f0, a3, v0);
|
|
TESTINSN6LOADw("lwxc1 $f0, $a3($v0)", 52, f0, a3, v0);
|
|
TESTINSN6LOADw("lwxc1 $f0, $a3($v0)", 56, f0, a3, v0);
|
|
TESTINSN6LOADw("lwxc1 $f0, $a3($v0)", 60, f0, a3, v0);
|
|
TESTINSN6LOADw("lwxc1 $f0, $a3($v0)", 64, f0, a3, v0);
|
|
TESTINSN6LOADw("lwxc1 $f0, $a3($v0)", 0, f0, a3, v0);
|
|
TESTINSN6LOADw("lwxc1 $f0, $a3($v0)", 4, f0, a3, v0);
|
|
TESTINSN6LOADw("lwxc1 $f0, $a3($v0)", 8, f0, a3, v0);
|
|
TESTINSN6LOADw("lwxc1 $f0, $a3($v0)", 12, f0, a3, v0);
|
|
TESTINSN6LOADw("lwxc1 $f0, $a3($v0)", 16, f0, a3, v0);
|
|
TESTINSN6LOADw("lwxc1 $f0, $a3($v0)", 20, f0, a3, v0);
|
|
TESTINSN6LOADw("lwxc1 $f0, $a3($v0)", 24, f0, a3, v0);
|
|
TESTINSN6LOADw("lwxc1 $f0, $a3($v0)", 28, f0, a3, v0);
|
|
TESTINSN6LOADw("lwxc1 $f0, $a3($v0)", 32, f0, a3, v0);
|
|
TESTINSN6LOADw("lwxc1 $f0, $a3($v0)", 36, f0, a3, v0);
|
|
TESTINSN6LOADw("lwxc1 $f0, $a3($v0)", 40, f0, a3, v0);
|
|
TESTINSN6LOADw("lwxc1 $f0, $a3($v0)", 44, f0, a3, v0);
|
|
TESTINSN6LOADw("lwxc1 $f0, $a3($v0)", 48, f0, a3, v0);
|
|
TESTINSN6LOADw("lwxc1 $f0, $a3($v0)", 52, f0, a3, v0);
|
|
TESTINSN6LOADw("lwxc1 $f0, $a3($v0)", 56, f0, a3, v0);
|
|
|
|
printf("LDXC1\n");
|
|
TESTINSN6LOADd("ldxc1 $f0, $a3($v0)", 0, f0, a3, v0);
|
|
TESTINSN6LOADd("ldxc1 $f0, $a3($v0)", 8, f0, a3, v0);
|
|
TESTINSN6LOADd("ldxc1 $f0, $a3($v0)", 16, f0, a3, v0);
|
|
TESTINSN6LOADd("ldxc1 $f0, $a3($v0)", 24, f0, a3, v0);
|
|
TESTINSN6LOADd("ldxc1 $f0, $a3($v0)", 32, f0, a3, v0);
|
|
TESTINSN6LOADd("ldxc1 $f0, $a3($v0)", 40, f0, a3, v0);
|
|
TESTINSN6LOADd("ldxc1 $f0, $a3($v0)", 48, f0, a3, v0);
|
|
TESTINSN6LOADd("ldxc1 $f0, $a3($v0)", 56, f0, a3, v0);
|
|
TESTINSN6LOADd("ldxc1 $f0, $a3($v0)", 64, f0, a3, v0);
|
|
TESTINSN6LOADd("ldxc1 $f0, $a3($v0)", 0, f0, a3, v0);
|
|
TESTINSN6LOADd("ldxc1 $f0, $a3($v0)", 8, f0, a3, v0);
|
|
TESTINSN6LOADd("ldxc1 $f0, $a3($v0)", 16, f0, a3, v0);
|
|
TESTINSN6LOADd("ldxc1 $f0, $a3($v0)", 24, f0, a3, v0);
|
|
TESTINSN6LOADd("ldxc1 $f0, $a3($v0)", 32, f0, a3, v0);
|
|
TESTINSN6LOADd("ldxc1 $f0, $a3($v0)", 40, f0, a3, v0);
|
|
TESTINSN6LOADd("ldxc1 $f0, $a3($v0)", 48, f0, a3, v0);
|
|
TESTINSN6LOADd("ldxc1 $f0, $a3($v0)", 56, f0, a3, v0);
|
|
TESTINSN6LOADd("ldxc1 $f0, $a3($v0)", 64, f0, a3, v0);
|
|
TESTINSN6LOADd("ldxc1 $f0, $a3($v0)", 0, f0, a3, v0);
|
|
TESTINSN6LOADd("ldxc1 $f0, $a3($v0)", 8, f0, a3, v0);
|
|
TESTINSN6LOADd("ldxc1 $f0, $a3($v0)", 16, f0, a3, v0);
|
|
TESTINSN6LOADd("ldxc1 $f0, $a3($v0)", 24, f0, a3, v0);
|
|
TESTINSN6LOADd("ldxc1 $f0, $a3($v0)", 32, f0, a3, v0);
|
|
TESTINSN6LOADd("ldxc1 $f0, $a3($v0)", 40, f0, a3, v0);
|
|
TESTINSN6LOADd("ldxc1 $f0, $a3($v0)", 48, f0, a3, v0);
|
|
TESTINSN6LOADd("ldxc1 $f0, $a3($v0)", 56, f0, a3, v0);
|
|
TESTINSN6LOADd("ldxc1 $f0, $a3($v0)", 64, f0, a3, v0);
|
|
TESTINSN6LOADd("ldxc1 $f0, $a3($v0)", 0, f0, a3, v0);
|
|
TESTINSN6LOADd("ldxc1 $f0, $a3($v0)", 8, f0, a3, v0);
|
|
TESTINSN6LOADd("ldxc1 $f0, $a3($v0)", 16, f0, a3, v0);
|
|
TESTINSN6LOADd("ldxc1 $f0, $a3($v0)", 24, f0, a3, v0);
|
|
TESTINSN6LOADd("ldxc1 $f0, $a3($v0)", 32, f0, a3, v0);
|
|
#endif
|
|
|
|
printf("SDC1\n");
|
|
TESTINST1(0);
|
|
TESTINST1(8);
|
|
TESTINST1(16);
|
|
TESTINST1(24);
|
|
TESTINST1(32);
|
|
TESTINST1(40);
|
|
TESTINST1(48);
|
|
TESTINST1(56);
|
|
TESTINST1(64);
|
|
ppMem(mem1, 16);
|
|
|
|
#if (__mips==32) && (__mips_isa_rev>=2)
|
|
printf("SDXC1\n");
|
|
TESTINST1a(0);
|
|
TESTINST1a(8);
|
|
TESTINST1a(16);
|
|
TESTINST1a(24);
|
|
TESTINST1a(32);
|
|
TESTINST1a(40);
|
|
TESTINST1a(48);
|
|
TESTINST1a(56);
|
|
TESTINST1a(64);
|
|
ppMem(mem1, 16);
|
|
#endif
|
|
|
|
printf("SWC1\n");
|
|
TESTINST2(0);
|
|
TESTINST2(8);
|
|
TESTINST2(16);
|
|
TESTINST2(24);
|
|
TESTINST2(32);
|
|
TESTINST2(40);
|
|
TESTINST2(48);
|
|
TESTINST2(56);
|
|
TESTINST2(64);
|
|
ppMemF(mem1f, 16);
|
|
|
|
#if (__mips==32) && (__mips_isa_rev>=2)
|
|
printf("SWXC1\n");
|
|
TESTINST2a(0);
|
|
TESTINST2a(8);
|
|
TESTINST2a(16);
|
|
TESTINST2a(24);
|
|
TESTINST2a(32);
|
|
TESTINST2a(40);
|
|
TESTINST2a(48);
|
|
TESTINST2a(56);
|
|
TESTINST2a(64);
|
|
ppMemF(mem1f, 16);
|
|
#endif
|
|
|
|
return 0;
|
|
}
|
|
|