mirror of
https://github.com/izzy2lost/xemu.git
synced 2026-07-06 00:20:22 -07:00
target-mips: Add ASE DSP testcases
Add MIPS ASE DSP testcases. Signed-off-by: Jia Liu <proljc@gmail.com> Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
This commit is contained in:
@@ -0,0 +1,136 @@
|
||||
-include ../../config-host.mak
|
||||
|
||||
CROSS=mips64el-unknown-linux-gnu-
|
||||
|
||||
SIM=qemu-mipsel
|
||||
SIM_FLAGS=-cpu 74Kf
|
||||
|
||||
CC = $(CROSS)gcc
|
||||
CFLAGS = -mabi=32 -march=mips32r2 -mgp32 -mdsp -static
|
||||
|
||||
TESTCASES = absq_s_ph.tst
|
||||
TESTCASES += absq_s_w.tst
|
||||
TESTCASES += addq_ph.tst
|
||||
TESTCASES += addq_s_ph.tst
|
||||
TESTCASES += addq_s_w.tst
|
||||
TESTCASES += addsc.tst
|
||||
TESTCASES += addu_qb.tst
|
||||
TESTCASES += addu_s_qb.tst
|
||||
TESTCASES += addwc.tst
|
||||
TESTCASES += bitrev.tst
|
||||
TESTCASES += bposge32.tst
|
||||
TESTCASES += cmp_eq_ph.tst
|
||||
TESTCASES += cmpgu_eq_qb.tst
|
||||
TESTCASES += cmpgu_le_qb.tst
|
||||
TESTCASES += cmpgu_lt_qb.tst
|
||||
TESTCASES += cmp_le_ph.tst
|
||||
TESTCASES += cmp_lt_ph.tst
|
||||
TESTCASES += cmpu_eq_qb.tst
|
||||
TESTCASES += cmpu_le_qb.tst
|
||||
TESTCASES += cmpu_lt_qb.tst
|
||||
TESTCASES += dpaq_sa_l_w.tst
|
||||
TESTCASES += dpaq_s_w_ph.tst
|
||||
TESTCASES += dpau_h_qbl.tst
|
||||
TESTCASES += dpau_h_qbr.tst
|
||||
TESTCASES += dpsq_sa_l_w.tst
|
||||
TESTCASES += dpsq_s_w_ph.tst
|
||||
TESTCASES += dpsu_h_qbl.tst
|
||||
TESTCASES += dpsu_h_qbr.tst
|
||||
TESTCASES += extp.tst
|
||||
TESTCASES += extpdp.tst
|
||||
TESTCASES += extpdpv.tst
|
||||
TESTCASES += extpv.tst
|
||||
TESTCASES += extr_rs_w.tst
|
||||
TESTCASES += extr_r_w.tst
|
||||
TESTCASES += extr_s_h.tst
|
||||
TESTCASES += extrv_rs_w.tst
|
||||
TESTCASES += extrv_r_w.tst
|
||||
TESTCASES += extrv_s_h.tst
|
||||
TESTCASES += extrv_w.tst
|
||||
TESTCASES += extr_w.tst
|
||||
TESTCASES += insv.tst
|
||||
TESTCASES += lbux.tst
|
||||
TESTCASES += lhx.tst
|
||||
TESTCASES += lwx.tst
|
||||
TESTCASES += madd.tst
|
||||
TESTCASES += maddu.tst
|
||||
TESTCASES += maq_sa_w_phl.tst
|
||||
TESTCASES += maq_sa_w_phr.tst
|
||||
TESTCASES += maq_s_w_phl.tst
|
||||
TESTCASES += maq_s_w_phr.tst
|
||||
TESTCASES += mfhi.tst
|
||||
TESTCASES += mflo.tst
|
||||
TESTCASES += modsub.tst
|
||||
TESTCASES += msub.tst
|
||||
TESTCASES += msubu.tst
|
||||
TESTCASES += mthi.tst
|
||||
TESTCASES += mthlip.tst
|
||||
TESTCASES += mtlo.tst
|
||||
TESTCASES += muleq_s_w_phl.tst
|
||||
TESTCASES += muleq_s_w_phr.tst
|
||||
TESTCASES += muleu_s_ph_qbl.tst
|
||||
TESTCASES += muleu_s_ph_qbr.tst
|
||||
TESTCASES += mulq_rs_ph.tst
|
||||
TESTCASES += mult.tst
|
||||
TESTCASES += multu.tst
|
||||
TESTCASES += packrl_ph.tst
|
||||
TESTCASES += pick_ph.tst
|
||||
TESTCASES += pick_qb.tst
|
||||
TESTCASES += precequ_ph_qbla.tst
|
||||
TESTCASES += precequ_ph_qbl.tst
|
||||
TESTCASES += precequ_ph_qbra.tst
|
||||
TESTCASES += precequ_ph_qbr.tst
|
||||
TESTCASES += preceq_w_phl.tst
|
||||
TESTCASES += preceq_w_phr.tst
|
||||
TESTCASES += preceu_ph_qbla.tst
|
||||
TESTCASES += preceu_ph_qbl.tst
|
||||
TESTCASES += preceu_ph_qbra.tst
|
||||
TESTCASES += preceu_ph_qbr.tst
|
||||
TESTCASES += precrq_ph_w.tst
|
||||
TESTCASES += precrq_qb_ph.tst
|
||||
TESTCASES += precrq_rs_ph_w.tst
|
||||
TESTCASES += precrqu_s_qb_ph.tst
|
||||
TESTCASES += raddu_w_qb.tst
|
||||
TESTCASES += rddsp.tst
|
||||
TESTCASES += repl_ph.tst
|
||||
TESTCASES += repl_qb.tst
|
||||
TESTCASES += replv_ph.tst
|
||||
TESTCASES += replv_qb.tst
|
||||
TESTCASES += shilo.tst
|
||||
TESTCASES += shilov.tst
|
||||
TESTCASES += shll_ph.tst
|
||||
TESTCASES += shll_qb.tst
|
||||
TESTCASES += shll_s_ph.tst
|
||||
TESTCASES += shll_s_w.tst
|
||||
TESTCASES += shllv_ph.tst
|
||||
TESTCASES += shllv_qb.tst
|
||||
TESTCASES += shllv_s_ph.tst
|
||||
TESTCASES += shllv_s_w.tst
|
||||
TESTCASES += shra_ph.tst
|
||||
TESTCASES += shra_r_ph.tst
|
||||
TESTCASES += shra_r_w.tst
|
||||
TESTCASES += shrav_ph.tst
|
||||
TESTCASES += shrav_r_ph.tst
|
||||
TESTCASES += shrav_r_w.tst
|
||||
TESTCASES += shrl_qb.tst
|
||||
TESTCASES += shrlv_qb.tst
|
||||
TESTCASES += subq_ph.tst
|
||||
TESTCASES += subq_s_ph.tst
|
||||
TESTCASES += subq_s_w.tst
|
||||
TESTCASES += subu_qb.tst
|
||||
TESTCASES += subu_s_qb.tst
|
||||
TESTCASES += wrdsp.tst
|
||||
|
||||
all: $(TESTCASES)
|
||||
|
||||
%.tst: %.c
|
||||
$(CC) $(CFLAGS) $< -o $@
|
||||
|
||||
check: $(TESTCASES)
|
||||
@for case in $(TESTCASES); do \
|
||||
echo $(SIM) $(SIM_FLAGS) ./$$case;\
|
||||
$(SIM) $(SIM_FLAGS) ./$$case; \
|
||||
done
|
||||
|
||||
clean:
|
||||
$(RM) -rf $(TESTCASES)
|
||||
@@ -0,0 +1,31 @@
|
||||
#include<stdio.h>
|
||||
#include<assert.h>
|
||||
|
||||
|
||||
int main()
|
||||
{
|
||||
int rd, rt;
|
||||
int result;
|
||||
|
||||
rt = 0x10017EFD;
|
||||
result = 0x10017EFD;
|
||||
|
||||
__asm
|
||||
("absq_s.ph %0, %1\n\t"
|
||||
: "=r"(rd)
|
||||
: "r"(rt)
|
||||
);
|
||||
assert(rd == result);
|
||||
|
||||
rt = 0x8000A536;
|
||||
result = 0x7FFF5ACA;
|
||||
|
||||
__asm
|
||||
("absq_s.ph %0, %1\n\t"
|
||||
: "=r"(rd)
|
||||
: "r"(rt)
|
||||
);
|
||||
assert(rd == result);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
#include<stdio.h>
|
||||
#include<assert.h>
|
||||
|
||||
int main()
|
||||
{
|
||||
int rd, rt;
|
||||
int result;
|
||||
|
||||
rt = 0x80000000;
|
||||
result = 0x7FFFFFFF;
|
||||
__asm
|
||||
("absq_s.w %0, %1\n\t"
|
||||
: "=r"(rd)
|
||||
: "r"(rt)
|
||||
);
|
||||
assert(rd == result);
|
||||
|
||||
rt = 0x80030000;
|
||||
result = 0x7FFD0000;
|
||||
__asm
|
||||
("absq_s.w %0, %1\n\t"
|
||||
: "=r"(rd)
|
||||
: "r"(rt)
|
||||
);
|
||||
assert(rd == result);
|
||||
|
||||
rt = 0x31036080;
|
||||
result = 0x31036080;
|
||||
__asm
|
||||
("absq_s.w %0, %1\n\t"
|
||||
: "=r"(rd)
|
||||
: "r"(rt)
|
||||
);
|
||||
assert(rd == result);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
#include<stdio.h>
|
||||
#include<assert.h>
|
||||
|
||||
int main()
|
||||
{
|
||||
int rd, rs, rt;
|
||||
int dsp;
|
||||
int result;
|
||||
|
||||
rs = 0xFFFFFFFF;
|
||||
rt = 0x10101010;
|
||||
result = 0x100F100F;
|
||||
__asm
|
||||
("addq.ph %0, %1, %2\n\t"
|
||||
: "=r"(rd)
|
||||
: "r"(rs), "r"(rt)
|
||||
);
|
||||
assert(result == rd);
|
||||
|
||||
rs = 0x3712847D;
|
||||
rt = 0x0031AF2D;
|
||||
result = 0x374333AA;
|
||||
__asm
|
||||
("addq.ph %0, %1, %2\n\t"
|
||||
: "=r"(rd)
|
||||
: "r"(rs), "r"(rt)
|
||||
);
|
||||
assert(result == rd);
|
||||
|
||||
rs = 0x7fff847D;
|
||||
rt = 0x0031AF2D;
|
||||
result = 0x803033AA;
|
||||
__asm
|
||||
("addq.ph %0, %1, %2\n\t"
|
||||
: "=r"(rd)
|
||||
: "r"(rs), "r"(rt)
|
||||
);
|
||||
assert(result == rd);
|
||||
|
||||
__asm("rddsp %0\n\t"
|
||||
: "=r"(dsp)
|
||||
);
|
||||
assert(((dsp >> 20) & 0x01) == 1);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,69 @@
|
||||
#include<stdio.h>
|
||||
#include<assert.h>
|
||||
|
||||
int main()
|
||||
{
|
||||
int rd, rs, rt;
|
||||
int dsp;
|
||||
int result;
|
||||
|
||||
rs = 0xFFFFFFFF;
|
||||
rt = 0x10101010;
|
||||
result = 0x100F100F;
|
||||
__asm
|
||||
("addq_s.ph %0, %1, %2\n\t"
|
||||
: "=r"(rd)
|
||||
: "r"(rs), "r"(rt)
|
||||
);
|
||||
assert(result == rd);
|
||||
|
||||
rs = 0x3712847D;
|
||||
rt = 0x0031AF2D;
|
||||
result = 0x37438000;
|
||||
__asm
|
||||
("addq_s.ph %0, %1, %2\n\t"
|
||||
: "=r"(rd)
|
||||
: "r"(rs), "r"(rt)
|
||||
);
|
||||
assert(result == rd);
|
||||
|
||||
__asm
|
||||
("rddsp %0\n\t"
|
||||
: "=r"(dsp)
|
||||
);
|
||||
assert(((dsp >> 20) & 0x01) == 1);
|
||||
|
||||
rs = 0x7fff847D;
|
||||
rt = 0x0031AF2D;
|
||||
result = 0x7fff8000;
|
||||
__asm
|
||||
("addq_s.ph %0, %1, %2\n\t"
|
||||
: "=r"(rd)
|
||||
: "r"(rs), "r"(rt)
|
||||
);
|
||||
assert(result == rd);
|
||||
|
||||
__asm
|
||||
("rddsp %0\n\t"
|
||||
: "=r"(dsp)
|
||||
);
|
||||
assert(((dsp >> 20) & 0x01) == 1);
|
||||
|
||||
rs = 0x8030847D;
|
||||
rt = 0x8a00AF2D;
|
||||
result = 0x80008000;
|
||||
__asm
|
||||
("addq_s.ph %0, %1, %2\n\t"
|
||||
: "=r"(rd)
|
||||
: "r"(rs), "r"(rt)
|
||||
);
|
||||
assert(result == rd);
|
||||
|
||||
__asm
|
||||
("rddsp %0\n\t"
|
||||
: "=r"(dsp)
|
||||
);
|
||||
assert(((dsp >> 20) & 0x01) == 1);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
#include<stdio.h>
|
||||
#include<assert.h>
|
||||
|
||||
|
||||
int main()
|
||||
{
|
||||
int rd, rs, rt;
|
||||
int result;
|
||||
|
||||
rt = 0x10017EFD;
|
||||
rs = 0x11111111;
|
||||
result = 0x2112900e;
|
||||
|
||||
__asm
|
||||
("addq_s.w %0, %1, %2\n\t"
|
||||
: "=r"(rd)
|
||||
: "r"(rs), "r"(rt)
|
||||
);
|
||||
assert(rd == result);
|
||||
|
||||
rt = 0x80017EFD;
|
||||
rs = 0x81111111;
|
||||
result = 0x80000000;
|
||||
|
||||
__asm
|
||||
("addq_s.w %0, %1, %2\n\t"
|
||||
: "=r"(rd)
|
||||
: "r"(rs), "r"(rt)
|
||||
);
|
||||
assert(rd == result);
|
||||
|
||||
rt = 0x7fffffff;
|
||||
rs = 0x01111111;
|
||||
result = 0x7fffffff;
|
||||
|
||||
__asm
|
||||
("addq_s.w %0, %1, %2\n\t"
|
||||
: "=r"(rd)
|
||||
: "r"(rs), "r"(rt)
|
||||
);
|
||||
assert(rd == result);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
#include<stdio.h>
|
||||
#include<assert.h>
|
||||
|
||||
int main()
|
||||
{
|
||||
int rd, rs, rt;
|
||||
int dsp;
|
||||
int result;
|
||||
|
||||
rs = 0x0000000F;
|
||||
rt = 0x00000001;
|
||||
result = 0x00000010;
|
||||
__asm
|
||||
("addsc %0, %1, %2\n\t"
|
||||
: "=r"(rd)
|
||||
: "r"(rs), "r"(rt)
|
||||
);
|
||||
assert(rd == result);
|
||||
|
||||
rs = 0xFFFF0FFF;
|
||||
rt = 0x00010111;
|
||||
result = 0x00001110;
|
||||
__asm
|
||||
("addsc %0, %2, %3\n\t"
|
||||
"rddsp %1\n\t"
|
||||
: "=r"(rd), "=r"(dsp)
|
||||
: "r"(rs), "r"(rt)
|
||||
);
|
||||
assert(rd == result);
|
||||
assert(((dsp >> 13) & 0x01) == 1);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
#include<stdio.h>
|
||||
#include<assert.h>
|
||||
|
||||
int main()
|
||||
{
|
||||
int rd, rs, rt;
|
||||
int dsp;
|
||||
int result;
|
||||
|
||||
rs = 0x00FF00FF;
|
||||
rt = 0x00010001;
|
||||
result = 0x00000000;
|
||||
__asm
|
||||
("addu.qb %0, %2, %3\n\t"
|
||||
"rddsp %1\n\t"
|
||||
: "=r"(rd), "=r"(dsp)
|
||||
: "r"(rs), "r"(rt)
|
||||
);
|
||||
assert(rd == result);
|
||||
assert(((dsp >> 20) & 0x01) == 1);
|
||||
|
||||
rs = 0xFFFF1111;
|
||||
rt = 0x00020001;
|
||||
result = 0xFF011112;
|
||||
__asm
|
||||
("addu.qb %0, %2, %3\n\t"
|
||||
"rddsp %1\n\t"
|
||||
: "=r"(rd), "=r"(dsp)
|
||||
: "r"(rs), "r"(rt)
|
||||
);
|
||||
assert(rd == result);
|
||||
assert(((dsp >> 20) & 0x01) == 1);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
#include<stdio.h>
|
||||
#include<assert.h>
|
||||
|
||||
int main()
|
||||
{
|
||||
int rd, rs, rt;
|
||||
int dsp;
|
||||
int result;
|
||||
|
||||
rs = 0x10FF01FF;
|
||||
rt = 0x10010001;
|
||||
result = 0x20FF01FF;
|
||||
__asm
|
||||
("addu_s.qb %0, %2, %3\n\t"
|
||||
"rddsp %1\n\t"
|
||||
: "=r"(rd), "=r"(dsp)
|
||||
: "r"(rs), "r"(rt)
|
||||
);
|
||||
assert(rd == result);
|
||||
assert(((dsp >> 20) & 0x1) == 1);
|
||||
|
||||
rs = 0xFFFF1111;
|
||||
rt = 0x00020001;
|
||||
result = 0xFFFF1112;
|
||||
__asm
|
||||
("addu_s.qb %0, %2, %3\n\t"
|
||||
"rddsp %1\n\t"
|
||||
: "=r"(rd), "=r"(dsp)
|
||||
: "r"(rs), "r"(rt)
|
||||
);
|
||||
assert(rd == result);
|
||||
assert(((dsp >> 20) & 0x1) == 1);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
#include<stdio.h>
|
||||
#include<assert.h>
|
||||
|
||||
int main()
|
||||
{
|
||||
int rd, rs, rt;
|
||||
int dspi, dspo;
|
||||
int result;
|
||||
|
||||
rs = 0x10FF01FF;
|
||||
rt = 0x10010001;
|
||||
dspi = 0x00002000;
|
||||
result = 0x21000201;
|
||||
__asm
|
||||
("wrdsp %3\n"
|
||||
"addwc %0, %1, %2\n\t"
|
||||
: "=r"(rd)
|
||||
: "r"(rs), "r"(rt), "r"(dspi)
|
||||
);
|
||||
assert(rd == result);
|
||||
|
||||
rs = 0xFFFF1111;
|
||||
rt = 0x00020001;
|
||||
dspi = 0x00;
|
||||
result = 0x00011112;
|
||||
__asm
|
||||
("wrdsp %3\n"
|
||||
"addwc %0, %1, %2\n\t"
|
||||
: "=r"(rd)
|
||||
: "r"(rs), "r"(rt), "r"(dspi)
|
||||
);
|
||||
assert(rd == result);
|
||||
|
||||
rs = 0x8FFF1111;
|
||||
rt = 0x80020001;
|
||||
dspi = 0x00;
|
||||
result = 0x10011112;
|
||||
__asm
|
||||
("wrdsp %4\n"
|
||||
"addwc %0, %2, %3\n\t"
|
||||
"rddsp %1\n\t"
|
||||
: "=r"(rd), "=r"(dspo)
|
||||
: "r"(rs), "r"(rt), "r"(dspi)
|
||||
);
|
||||
assert(rd == result);
|
||||
assert(((dspo >> 20) & 0x01) == 1);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
#include<stdio.h>
|
||||
#include<assert.h>
|
||||
|
||||
int main()
|
||||
{
|
||||
int rd, rt;
|
||||
int result;
|
||||
|
||||
rt = 0x12345678;
|
||||
result = 0x00001E6A;
|
||||
|
||||
__asm
|
||||
("bitrev %0, %1\n\t"
|
||||
: "=r"(rd)
|
||||
: "r"(rt)
|
||||
);
|
||||
assert(rd == result);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
#include<stdio.h>
|
||||
#include<assert.h>
|
||||
|
||||
int main()
|
||||
{
|
||||
int dsp, sum;
|
||||
int result;
|
||||
|
||||
dsp = 0x20;
|
||||
sum = 0x01;
|
||||
result = 0x02;
|
||||
|
||||
__asm
|
||||
("wrdsp %1\n\t"
|
||||
"bposge32 test1\n\t"
|
||||
"nop\n\t"
|
||||
"addi %0, 0xA2\n\t"
|
||||
"nop\n\t"
|
||||
"test1:\n\t"
|
||||
"addi %0, 0x01\n\t"
|
||||
: "+r"(sum)
|
||||
: "r"(dsp)
|
||||
);
|
||||
assert(sum == result);
|
||||
|
||||
dsp = 0x10;
|
||||
sum = 0x01;
|
||||
result = 0xA4;
|
||||
|
||||
__asm
|
||||
("wrdsp %1\n\t"
|
||||
"bposge32 test2\n\t"
|
||||
"nop\n\t"
|
||||
"addi %0, 0xA2\n\t"
|
||||
"nop\n\t"
|
||||
"test2:\n\t"
|
||||
"addi %0, 0x01\n\t"
|
||||
: "+r"(sum)
|
||||
: "r"(dsp)
|
||||
);
|
||||
assert(sum == result);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
#include<stdio.h>
|
||||
#include<assert.h>
|
||||
|
||||
int main()
|
||||
{
|
||||
int rd, rs, rt;
|
||||
int result;
|
||||
|
||||
rs = 0x11777066;
|
||||
rt = 0x55AA33FF;
|
||||
result = 0x00;
|
||||
__asm
|
||||
("cmp.eq.ph %1, %2\n\t"
|
||||
"rddsp %0\n\t"
|
||||
: "=r"(rd)
|
||||
: "r"(rs), "r"(rt)
|
||||
);
|
||||
|
||||
rd = (rd >> 24) & 0x03;
|
||||
assert(rd == result);
|
||||
|
||||
rs = 0x11777066;
|
||||
rt = 0x11777066;
|
||||
result = 0x03;
|
||||
__asm
|
||||
("cmp.eq.ph %1, %2\n\t"
|
||||
"rddsp %0\n\t"
|
||||
: "=r"(rd)
|
||||
: "r"(rs), "r"(rt)
|
||||
);
|
||||
rd = (rd >> 24) & 0x03;
|
||||
assert(rd == result);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
#include<stdio.h>
|
||||
#include<assert.h>
|
||||
|
||||
int main()
|
||||
{
|
||||
int rd, rs, rt;
|
||||
int result;
|
||||
|
||||
rs = 0x11777066;
|
||||
rt = 0x55AA33FF;
|
||||
result = 0x02;
|
||||
__asm
|
||||
("cmp.le.ph %1, %2\n\t"
|
||||
"rddsp %0\n\t"
|
||||
: "=r"(rd)
|
||||
: "r"(rs), "r"(rt)
|
||||
);
|
||||
|
||||
rd = (rd >> 24) & 0x03;
|
||||
assert(rd == result);
|
||||
|
||||
rs = 0x11777066;
|
||||
rt = 0x11777066;
|
||||
result = 0x03;
|
||||
__asm
|
||||
("cmp.le.ph %1, %2\n\t"
|
||||
"rddsp %0\n\t"
|
||||
: "=r"(rd)
|
||||
: "r"(rs), "r"(rt)
|
||||
);
|
||||
rd = (rd >> 24) & 0x03;
|
||||
assert(rd == result);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
#include<stdio.h>
|
||||
#include<assert.h>
|
||||
|
||||
int main()
|
||||
{
|
||||
int rd, rs, rt;
|
||||
int result;
|
||||
|
||||
rs = 0x11777066;
|
||||
rt = 0x55AA33FF;
|
||||
result = 0x02;
|
||||
__asm
|
||||
("cmp.lt.ph %1, %2\n\t"
|
||||
"rddsp %0\n\t"
|
||||
: "=r"(rd)
|
||||
: "r"(rs), "r"(rt)
|
||||
);
|
||||
|
||||
rd = (rd >> 24) & 0x03;
|
||||
assert(rd == result);
|
||||
|
||||
rs = 0x11777066;
|
||||
rt = 0x11777066;
|
||||
result = 0x00;
|
||||
__asm
|
||||
("cmp.lt.ph %1, %2\n\t"
|
||||
"rddsp %0\n\t"
|
||||
: "=r"(rd)
|
||||
: "r"(rs), "r"(rt)
|
||||
);
|
||||
rd = (rd >> 24) & 0x03;
|
||||
assert(rd == result);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
#include<stdio.h>
|
||||
#include<assert.h>
|
||||
|
||||
int main()
|
||||
{
|
||||
int rd, rs, rt;
|
||||
int result;
|
||||
|
||||
rs = 0x11777066;
|
||||
rt = 0x55AA70FF;
|
||||
result = 0x02;
|
||||
__asm
|
||||
("cmpgu.eq.qb %0, %1, %2\n\t"
|
||||
: "=r"(rd)
|
||||
: "r"(rs), "r"(rt)
|
||||
);
|
||||
|
||||
assert(rd == result);
|
||||
|
||||
rs = 0x11777066;
|
||||
rt = 0x11777066;
|
||||
result = 0x0F;
|
||||
__asm
|
||||
("cmpgu.eq.qb %0, %1, %2\n\t"
|
||||
: "=r"(rd)
|
||||
: "r"(rs), "r"(rt)
|
||||
);
|
||||
assert(rd == result);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
#include<stdio.h>
|
||||
#include<assert.h>
|
||||
|
||||
int main()
|
||||
{
|
||||
int rd, rs, rt;
|
||||
int result;
|
||||
|
||||
rs = 0x11777066;
|
||||
rt = 0x55AA70FF;
|
||||
result = 0x0F;
|
||||
__asm
|
||||
("cmpgu.le.qb %0, %1, %2\n\t"
|
||||
: "=r"(rd)
|
||||
: "r"(rs), "r"(rt)
|
||||
);
|
||||
|
||||
assert(rd == result);
|
||||
|
||||
rs = 0x11777066;
|
||||
rt = 0x11766066;
|
||||
result = 0x09;
|
||||
__asm
|
||||
("cmpgu.le.qb %0, %1, %2\n\t"
|
||||
: "=r"(rd)
|
||||
: "r"(rs), "r"(rt)
|
||||
);
|
||||
assert(rd == result);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
#include<stdio.h>
|
||||
#include<assert.h>
|
||||
|
||||
int main()
|
||||
{
|
||||
int rd, rs, rt;
|
||||
int result;
|
||||
|
||||
rs = 0x11777066;
|
||||
rt = 0x55AA70FF;
|
||||
result = 0x0D;
|
||||
__asm
|
||||
("cmpgu.lt.qb %0, %1, %2\n\t"
|
||||
: "=r"(rd)
|
||||
: "r"(rs), "r"(rt)
|
||||
);
|
||||
|
||||
assert(rd == result);
|
||||
|
||||
rs = 0x11777066;
|
||||
rt = 0x11766066;
|
||||
result = 0x00;
|
||||
__asm
|
||||
("cmpgu.lt.qb %0, %1, %2\n\t"
|
||||
: "=r"(rd)
|
||||
: "r"(rs), "r"(rt)
|
||||
);
|
||||
assert(rd == result);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
#include<stdio.h>
|
||||
#include<assert.h>
|
||||
|
||||
int main()
|
||||
{
|
||||
int rs, rt;
|
||||
int dsp;
|
||||
int result;
|
||||
|
||||
rs = 0x11777066;
|
||||
rt = 0x55AA70FF;
|
||||
result = 0x02;
|
||||
__asm
|
||||
("cmpu.eq.qb %1, %2\n\t"
|
||||
"rddsp %0\n\t"
|
||||
: "=r"(dsp)
|
||||
: "r"(rs), "r"(rt)
|
||||
);
|
||||
dsp = (dsp >> 24) & 0x0F;
|
||||
assert(dsp == result);
|
||||
|
||||
rs = 0x11777066;
|
||||
rt = 0x11777066;
|
||||
result = 0x0F;
|
||||
__asm
|
||||
("cmpu.eq.qb %1, %2\n\t"
|
||||
"rddsp %0\n\t"
|
||||
: "=r"(dsp)
|
||||
: "r"(rs), "r"(rt)
|
||||
);
|
||||
dsp = (dsp >> 24) & 0x0F;
|
||||
assert(dsp == result);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
#include<stdio.h>
|
||||
#include<assert.h>
|
||||
|
||||
int main()
|
||||
{
|
||||
int rs, rt;
|
||||
int dsp;
|
||||
int result;
|
||||
|
||||
rs = 0x11777066;
|
||||
rt = 0x55AA70FF;
|
||||
result = 0x0F;
|
||||
__asm
|
||||
("cmpu.le.qb %1, %2\n\t"
|
||||
"rddsp %0\n\t"
|
||||
: "=r"(dsp)
|
||||
: "r"(rs), "r"(rt)
|
||||
);
|
||||
dsp = (dsp >> 24) & 0x0F;
|
||||
assert(dsp == result);
|
||||
|
||||
rs = 0x11777066;
|
||||
rt = 0x11777066;
|
||||
result = 0x0F;
|
||||
__asm
|
||||
("cmpu.le.qb %1, %2\n\t"
|
||||
"rddsp %0\n\t"
|
||||
: "=r"(dsp)
|
||||
: "r"(rs), "r"(rt)
|
||||
);
|
||||
dsp = (dsp >> 24) & 0x0F;
|
||||
assert(dsp == result);
|
||||
|
||||
return 0;
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user