target-or32: Add testcases
Add testcases for OpenRISC. Signed-off-by: Jia Liu <proljc@gmail.com> Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
This commit is contained in:
parent
d962783e98
commit
d901eff3e6
71
tests/tcg/openrisc/Makefile
Normal file
71
tests/tcg/openrisc/Makefile
Normal file
@ -0,0 +1,71 @@
|
||||
-include ../../config-host.mak
|
||||
|
||||
CROSS = or32-linux-
|
||||
|
||||
SIM = qemu-or32
|
||||
|
||||
CC = $(CROSS)gcc
|
||||
|
||||
TESTCASES = test_add.tst
|
||||
TESTCASES += test_sub.tst
|
||||
TESTCASES += test_addc.tst
|
||||
TESTCASES += test_addi.tst
|
||||
TESTCASES += test_addic.tst
|
||||
TESTCASES += test_and_or.tst
|
||||
TESTCASES += test_bf.tst
|
||||
TESTCASES += test_bnf.tst
|
||||
TESTCASES += test_div.tst
|
||||
TESTCASES += test_divu.tst
|
||||
TESTCASES += test_extx.tst
|
||||
TESTCASES += test_fx.tst
|
||||
TESTCASES += test_jal.tst
|
||||
TESTCASES += test_j.tst
|
||||
TESTCASES += test_lf_div.tst
|
||||
TESTCASES += test_lf_eqs.tst
|
||||
TESTCASES += test_lf_ges.tst
|
||||
TESTCASES += test_lf_gts.tst
|
||||
TESTCASES += test_lf_les.tst
|
||||
TESTCASES += test_lf_lts.tst
|
||||
TESTCASES += test_lf_mul.tst
|
||||
TESTCASES += test_lf_nes.tst
|
||||
TESTCASES += test_lf_rem.tst
|
||||
TESTCASES += test_lf_sub.tst
|
||||
TESTCASES += test_lf_add.tst
|
||||
TESTCASES += test_logic.tst
|
||||
TESTCASES += test_lx.tst
|
||||
TESTCASES += test_movhi.tst
|
||||
TESTCASES += test_mul.tst
|
||||
TESTCASES += test_mulu.tst
|
||||
TESTCASES += test_muli.tst
|
||||
TESTCASES += test_sfeq.tst
|
||||
TESTCASES += test_sfeqi.tst
|
||||
TESTCASES += test_sfges.tst
|
||||
TESTCASES += test_sfgesi.tst
|
||||
TESTCASES += test_sfgeu.tst
|
||||
TESTCASES += test_sfgeui.tst
|
||||
TESTCASES += test_sfgts.tst
|
||||
TESTCASES += test_sfgtsi.tst
|
||||
TESTCASES += test_sfgtu.tst
|
||||
TESTCASES += test_sfgtui.tst
|
||||
TESTCASES += test_sfles.tst
|
||||
TESTCASES += test_sflesi.tst
|
||||
TESTCASES += test_sfleu.tst
|
||||
TESTCASES += test_sfleui.tst
|
||||
TESTCASES += test_sflts.tst
|
||||
TESTCASES += test_sfltsi.tst
|
||||
TESTCASES += test_sfltu.tst
|
||||
TESTCASES += test_sfltui.tst
|
||||
TESTCASES += test_sfne.tst
|
||||
TESTCASES += test_sfnei.tst
|
||||
|
||||
all: $(TESTCASES)
|
||||
|
||||
%.tst: %.c
|
||||
$(CC) -static $< -o $@
|
||||
|
||||
|
||||
check: $(TESTCASES)
|
||||
@for case in $(TESTCASES); do $(SIM) $$case; echo $$case pass!; sleep 0.2; done
|
||||
|
||||
clean:
|
||||
$(RM) -rf $(TESTCASES)
|
43
tests/tcg/openrisc/test_add.c
Normal file
43
tests/tcg/openrisc/test_add.c
Normal file
@ -0,0 +1,43 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int a, b, d;
|
||||
int result;
|
||||
|
||||
a = 0x100;
|
||||
b = 0x100;
|
||||
result = 0x200;
|
||||
__asm
|
||||
("l.add %0, %0, %1\n\t"
|
||||
: "+r"(a)
|
||||
: "r"(b)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("add error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
a = 0xffff;
|
||||
b = 0x1;
|
||||
result = 0x10000;
|
||||
__asm
|
||||
("l.add %0, %0, %1\n\t"
|
||||
: "+r"(a)
|
||||
: "r"(b)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("add error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
a = 0x7fffffff;
|
||||
b = 0x1;
|
||||
__asm
|
||||
("l.add %0, %1, %2\n\t"
|
||||
: "=r"(d)
|
||||
: "r"(b), "r"(a)
|
||||
);
|
||||
|
||||
return 0;
|
||||
}
|
38
tests/tcg/openrisc/test_addc.c
Normal file
38
tests/tcg/openrisc/test_addc.c
Normal file
@ -0,0 +1,38 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int a, b, c;
|
||||
int result;
|
||||
|
||||
b = 0x01;
|
||||
c = 0xffffffff;
|
||||
result = 1;
|
||||
__asm
|
||||
("l.addc %0, %1, %2\n\t"
|
||||
: "=r"(a)
|
||||
: "r"(b), "r"(c)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("first addc error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
b = 0x01;
|
||||
c = 0xffffffff;
|
||||
result = 0x80000001;
|
||||
__asm
|
||||
("l.addc %0, %1, %2\n\t"
|
||||
"l.movhi %2, 0x7fff\n\t"
|
||||
"l.ori %2, %2, 0xffff\n\t"
|
||||
"l.addc %0, %1, %2\n\t"
|
||||
: "=r"(a)
|
||||
: "r"(b), "r"(c)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("addc error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
33
tests/tcg/openrisc/test_addi.c
Normal file
33
tests/tcg/openrisc/test_addi.c
Normal file
@ -0,0 +1,33 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int a, b;
|
||||
int result;
|
||||
|
||||
b = 0x01;
|
||||
result = 0x00;
|
||||
__asm
|
||||
("l.addi %0, %1, 0xffff\n\t"
|
||||
: "=r"(a)
|
||||
: "r"(b)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("addi error\n\t");
|
||||
return -1;
|
||||
}
|
||||
|
||||
b = 0x010000;
|
||||
result = 0xffff;
|
||||
__asm
|
||||
("l.addi %0, %1, 0xffff\n\t"
|
||||
: "=r"(a)
|
||||
: "r"(b)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("addi error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
33
tests/tcg/openrisc/test_addic.c
Normal file
33
tests/tcg/openrisc/test_addic.c
Normal file
@ -0,0 +1,33 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int a, b, c;
|
||||
int result;
|
||||
|
||||
a = 1;
|
||||
result = 0x1;
|
||||
__asm
|
||||
("l.addic %0, %0, 0xffff\n\t"
|
||||
: "+r"(a)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("first addic error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
a = 0x1;
|
||||
result = 0x201;
|
||||
__asm
|
||||
("l.addic %0, %0, 0xffff\n\t"
|
||||
"l.ori %0, r0, 0x100\n\t"
|
||||
"l.addic %0, %0, 0x100\n\t"
|
||||
: "+r"(a)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("second addic error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
65
tests/tcg/openrisc/test_and_or.c
Normal file
65
tests/tcg/openrisc/test_and_or.c
Normal file
@ -0,0 +1,65 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int a, b, c;
|
||||
int result;
|
||||
|
||||
b = 0x2;
|
||||
c = 0x1;
|
||||
result = 0;
|
||||
__asm
|
||||
("l.and %0, %1, %2\n\t"
|
||||
: "=r"(a)
|
||||
: "r"(b), "r"(c)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("and error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
result = 0x2;
|
||||
__asm
|
||||
("l.andi %0, %1, 0x3\n\t"
|
||||
: "=r"(a)
|
||||
: "r"(b)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("andi error %x\n", a);
|
||||
return -1;
|
||||
}
|
||||
|
||||
result = 0x3;
|
||||
__asm
|
||||
("l.or %0, %1, %2\n\t"
|
||||
: "=r"(a)
|
||||
: "r"(b), "r"(c)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("or error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
result = 0x3;
|
||||
__asm
|
||||
("l.xor %0, %1, %2\n\t"
|
||||
: "=r"(a)
|
||||
: "r"(b), "r"(c)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("xor error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
__asm
|
||||
("l.xori %0, %1, 0x1\n\t"
|
||||
: "=r"(a)
|
||||
: "r"(b)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("xori error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
47
tests/tcg/openrisc/test_bf.c
Normal file
47
tests/tcg/openrisc/test_bf.c
Normal file
@ -0,0 +1,47 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int a, b, c;
|
||||
int result;
|
||||
|
||||
a = 0;
|
||||
b = 10;
|
||||
c = 11;
|
||||
result = 0x2;
|
||||
__asm
|
||||
("1:\n\t"
|
||||
"l.addi %1, %1, 0x01\n\t"
|
||||
"l.addi %0, %0, 0x01\n\t"
|
||||
"l.sfeq %1, %2\n\t"
|
||||
"l.bf 1b\n\t"
|
||||
"l.nop\n\t"
|
||||
: "+r"(a)
|
||||
: "r"(b), "r"(c)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("sfeq error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
a = 0x00;
|
||||
b = 0x11;
|
||||
c = 0x11;
|
||||
result = 0x01;
|
||||
__asm
|
||||
("1:\n\t"
|
||||
"l.addi %1, %1, 0x01\n\t"
|
||||
"l.addi %0, %0, 0x01\n\t"
|
||||
"l.sfeq %1, %2\n\t"
|
||||
"l.bf 1b\n\t"
|
||||
"l.nop\n\t"
|
||||
: "+r"(a)
|
||||
: "r"(b), "r"(c)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("sfeq error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
51
tests/tcg/openrisc/test_bnf.c
Normal file
51
tests/tcg/openrisc/test_bnf.c
Normal file
@ -0,0 +1,51 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int a, b;
|
||||
int result;
|
||||
|
||||
a = 0;
|
||||
b = 0;
|
||||
result = 0x3;
|
||||
__asm
|
||||
("l.sfeqi %1, 0x0\n\t"
|
||||
"l.bnf 1f\n\t"
|
||||
"l.nop\n\t"
|
||||
"\n\t"
|
||||
"l.addi %0, %0, 0x1\n\t"
|
||||
"l.addi %0, %0, 0x1\n\t"
|
||||
"\n\t"
|
||||
"1:\n\t"
|
||||
"l.addi %0, %0, 0x1\n\t"
|
||||
: "+r"(a)
|
||||
: "r"(b)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("l.bnf error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
a = 0;
|
||||
b = 0;
|
||||
result = 1;
|
||||
__asm
|
||||
("l.sfeqi %1, 0x1\n\t"
|
||||
"l.bnf 1f\n\t"
|
||||
"l.nop\n\t"
|
||||
"\n\t"
|
||||
"l.addi %0, %0, 0x1\n\t"
|
||||
"l.addi %0, %0, 0x1\n\t"
|
||||
"\n\t"
|
||||
"1:\n\t"
|
||||
"l.addi %0, %0, 0x1\n\t"
|
||||
: "+r"(a)
|
||||
: "r"(b)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("l.bnf error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
54
tests/tcg/openrisc/test_div.c
Normal file
54
tests/tcg/openrisc/test_div.c
Normal file
@ -0,0 +1,54 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int a, b, c;
|
||||
int result;
|
||||
|
||||
b = 0x120;
|
||||
c = 0x4;
|
||||
result = 0x48;
|
||||
__asm
|
||||
("l.div %0, %1, %2\n\t"
|
||||
: "=r"(a)
|
||||
: "r"(b), "r"(c)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("div error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
result = 0x4;
|
||||
__asm
|
||||
("l.div %0, %1, %0\n\t"
|
||||
: "+r"(a)
|
||||
: "r"(b)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("div error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
b = 0xffffffff;
|
||||
c = 0x80000000;
|
||||
result = 0;
|
||||
__asm
|
||||
("l.div %0, %1, %2\n\t"
|
||||
: "=r"(a)
|
||||
: "r"(b), "r"(c)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("div error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
b = 0x80000000;
|
||||
c = 0xffffffff;
|
||||
__asm
|
||||
("l.div %0, %1, %2\n\t"
|
||||
: "=r"(a)
|
||||
: "r"(b), "r"(c)
|
||||
);
|
||||
|
||||
return 0;
|
||||
}
|
34
tests/tcg/openrisc/test_divu.c
Normal file
34
tests/tcg/openrisc/test_divu.c
Normal file
@ -0,0 +1,34 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int a, b, c;
|
||||
int result;
|
||||
|
||||
b = 0x120;
|
||||
c = 0x4;
|
||||
result = 0x48;
|
||||
|
||||
__asm
|
||||
("l.divu %0, %1, %2\n\t"
|
||||
: "=r"(a)
|
||||
: "r"(b), "r"(c)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("divu error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
result = 0x4;
|
||||
__asm
|
||||
("l.divu %0, %1, %0\n\t"
|
||||
: "+r"(a)
|
||||
: "r"(b)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("divu error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
78
tests/tcg/openrisc/test_extx.c
Normal file
78
tests/tcg/openrisc/test_extx.c
Normal file
@ -0,0 +1,78 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int a, b;
|
||||
int result;
|
||||
|
||||
b = 0x83;
|
||||
result = 0xffffff83;
|
||||
__asm
|
||||
("l.extbs %0, %1\n\t"
|
||||
: "=r"(a)
|
||||
: "r"(b)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("extbs error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
result = 0x83;
|
||||
__asm
|
||||
("l.extbz %0, %1\n\t"
|
||||
: "=r"(a)
|
||||
: "r"(b)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("extbz error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
b = 0x8083;
|
||||
result = 0xffff8083;
|
||||
__asm
|
||||
("l.exths %0, %1\n\t"
|
||||
: "=r"(a)
|
||||
: "r"(b)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("exths error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
result = 0x8083;
|
||||
__asm
|
||||
("l.exthz %0, %1\n\t"
|
||||
: "=r"(a)
|
||||
: "r"(b)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("exthz error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
b = 0x11;
|
||||
result = 0x11;
|
||||
__asm
|
||||
("l.extws %0, %1\n\t"
|
||||
: "=r"(a)
|
||||
: "r"(b)
|
||||
);
|
||||
|
||||
if (a != result) {
|
||||
printf("extws error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
__asm
|
||||
("l.extwz %0, %1\n\t"
|
||||
: "=r"(a)
|
||||
: "r"(b)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("extwz error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
57
tests/tcg/openrisc/test_fx.c
Normal file
57
tests/tcg/openrisc/test_fx.c
Normal file
@ -0,0 +1,57 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int a, b;
|
||||
int result;
|
||||
|
||||
b = 0x123;
|
||||
result = 1;
|
||||
__asm
|
||||
("l.ff1 %0, %1\n\t"
|
||||
: "=r"(a)
|
||||
: "r"(b)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("ff1 error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
b = 0x0;
|
||||
result = 0;
|
||||
__asm
|
||||
("l.ff1 %0, %1\n\t"
|
||||
: "=r"(a)
|
||||
: "r"(b)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("ff1 error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
b = 0x123;
|
||||
result = 9;
|
||||
__asm
|
||||
("l.fl1 %0, %1\n\t"
|
||||
: "=r"(a)
|
||||
: "r"(b)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("fl1 error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
b = 0x0;
|
||||
result = 0;
|
||||
__asm
|
||||
("l.fl1 %0, %1\n\t"
|
||||
: "=r"(a)
|
||||
: "r"(b)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("fl1 error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
26
tests/tcg/openrisc/test_j.c
Normal file
26
tests/tcg/openrisc/test_j.c
Normal file
@ -0,0 +1,26 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int a;
|
||||
int result;
|
||||
|
||||
a = 0;
|
||||
result = 2;
|
||||
__asm
|
||||
("l.addi %0, %0, 1\n\t"
|
||||
"l.j j\n\t"
|
||||
"l.nop\n\t"
|
||||
"l.addi %0, %0, 1\n\t"
|
||||
"l.nop\n\t"
|
||||
"j:\n\t"
|
||||
"l.addi %0, %0, 1\n\t"
|
||||
: "+r"(a)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("j error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
26
tests/tcg/openrisc/test_jal.c
Normal file
26
tests/tcg/openrisc/test_jal.c
Normal file
@ -0,0 +1,26 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int a;
|
||||
int result;
|
||||
|
||||
a = 0;
|
||||
result = 2;
|
||||
__asm
|
||||
("l.addi %0, %0, 1\n\t"
|
||||
"l.jal jal\n\t"
|
||||
"l.nop\n\t"
|
||||
"l.addi %0, %0, 1\n\t"
|
||||
"l.nop\n\t"
|
||||
"jal:\n\t"
|
||||
"l.addi %0, %0, 1\n\t"
|
||||
: "+r"(a)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("jal error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
39
tests/tcg/openrisc/test_lf_add.c
Normal file
39
tests/tcg/openrisc/test_lf_add.c
Normal file
@ -0,0 +1,39 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
float a, b;
|
||||
float res2;
|
||||
|
||||
a = 1.5;
|
||||
b = 2.5;
|
||||
res2 = 4.0;
|
||||
__asm
|
||||
("lf.add.s %0, %0, %1\n\t"
|
||||
: "+r"(a)
|
||||
: "r"(b)
|
||||
);
|
||||
if (a != res2) {
|
||||
printf("lf.add.s error, %f\n", a);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* double c, d;
|
||||
double res1;
|
||||
|
||||
c = 1.5;
|
||||
d = 1.5;
|
||||
res1 = 3.00;
|
||||
__asm
|
||||
("lf.add.d %0, %1, %2\n\t"
|
||||
: "+r"(c)
|
||||
: "r"(d)
|
||||
);
|
||||
|
||||
if ((e - res1) > 0.002) {
|
||||
printf("lf.add.d error, %f\n", e - res1);
|
||||
return -1;
|
||||
}*/
|
||||
|
||||
return 0;
|
||||
}
|
37
tests/tcg/openrisc/test_lf_div.c
Normal file
37
tests/tcg/openrisc/test_lf_div.c
Normal file
@ -0,0 +1,37 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
float a, b, c;
|
||||
float result;
|
||||
|
||||
b = 1.5;
|
||||
c = 0.5;
|
||||
result = 3.0;
|
||||
__asm
|
||||
("lf.div.s %0, %1, %2\n\t"
|
||||
: "=r"(a)
|
||||
: "r"(b), "r"(c)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("lf.div.s error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* double a, b, c, res;
|
||||
|
||||
b = 0x80000000;
|
||||
c = 0x40;
|
||||
result = 0x2000000;
|
||||
__asm
|
||||
("lf.div.d %0, %1, %2\n\t"
|
||||
: "=r"(a)
|
||||
: "r"(b), "r"(c)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("lf.div.d error\n");
|
||||
return -1;
|
||||
}*/
|
||||
|
||||
return 0;
|
||||
}
|
88
tests/tcg/openrisc/test_lf_eqs.c
Normal file
88
tests/tcg/openrisc/test_lf_eqs.c
Normal file
@ -0,0 +1,88 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int a, result;
|
||||
float b, c;
|
||||
|
||||
a = 0x1;
|
||||
b = 122.5;
|
||||
c = 123.5;
|
||||
result = 0x3;
|
||||
__asm
|
||||
("lfeqd:\n\t"
|
||||
"l.addi %0, %0, 0x1\n\t"
|
||||
"lf.sfeq.s %1, %2\n\t"
|
||||
"l.bf lfeqd\n\t"
|
||||
"l.nop\n\t"
|
||||
"l.addi %0, %0, 0x1\n\t"
|
||||
: "+r"(a)
|
||||
: "r"(b), "r"(c)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("lf.sfeq.s error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
b = 13.5;
|
||||
c = 13.5;
|
||||
result = 0x3;
|
||||
__asm
|
||||
("lf.sfeq.s %1, %2\n\t"
|
||||
"l.bf 1f\n\t"
|
||||
"l.nop\n\t"
|
||||
"l.addi r4, r4, 0x1\n\t"
|
||||
"1:\n\t"
|
||||
: "+r"(a)
|
||||
: "r"(b), "r"(c)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("lf.sfeq.s error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* double b, c;
|
||||
double result;
|
||||
int a;
|
||||
|
||||
a = 0x1;
|
||||
b = 122.5;
|
||||
c = 133.5;
|
||||
result = 0x3;
|
||||
|
||||
__asm
|
||||
("lfeqd:\n\t"
|
||||
"l.addi %0, %0, 0x1\n\t"
|
||||
"lf.sfeq.d %1, %2\n\t"
|
||||
"l.bf lfeqd\n\t"
|
||||
"l.nop\n\t"
|
||||
"l.addi %0, %0, 0x1\n\t"
|
||||
: "+r"(a)
|
||||
: "r"(b), "r"(c)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("lf.sfeq.d error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
double c, d, res;
|
||||
int e = 0;
|
||||
c = 11.5;
|
||||
d = 11.5;
|
||||
res = 1;
|
||||
__asm
|
||||
("lf.sfeq.d %1, %2\n\t"
|
||||
"l.bf 1f\n\t"
|
||||
"l.nop\n\t"
|
||||
"l.addi %0, %0, 0x1\n\t"
|
||||
"1:\n\t"
|
||||
: "+r"(e)
|
||||
: "r"(c), "r"(d)
|
||||
);
|
||||
if (e != res) {
|
||||
printf("lf.sfeq.d error\n");
|
||||
return -1;
|
||||
}*/
|
||||
|
||||
return 0;
|
||||
}
|
88
tests/tcg/openrisc/test_lf_ges.c
Normal file
88
tests/tcg/openrisc/test_lf_ges.c
Normal file
@ -0,0 +1,88 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int a, result;
|
||||
float b, c;
|
||||
|
||||
a = 0;
|
||||
b = 122.5;
|
||||
c = 123.5;
|
||||
result = 0x1;
|
||||
__asm
|
||||
("lfges:\n\t"
|
||||
"l.addi %0, %0, 0x1\n\t"
|
||||
"lf.sfge.s %1, %2\n\t"
|
||||
"l.bf lfges\n\t"
|
||||
"l.nop\n\t"
|
||||
: "+r"(a)
|
||||
: "r"(b), "r"(c)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("lf.sfge.s error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
b = 133.5;
|
||||
c = 13.5;
|
||||
result = 0x3;
|
||||
__asm
|
||||
("l.addi %0, %0, 0x1\n\t"
|
||||
"l.addi %0, %0, 0x1\n\t"
|
||||
"lf.sfge.s %1, %2\n\t"
|
||||
"l.bf 1f\n\t"
|
||||
"l.nop\n\t"
|
||||
"l.addi %0, %0, 0x1\n\t"
|
||||
"l.addi %0, %0, 0x1\n\t"
|
||||
"1:\n\t"
|
||||
: "+r"(a)
|
||||
: "r"(b), "r"(c)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("lf.sfge.s error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* int a, result;
|
||||
double b, c;
|
||||
|
||||
a = 0x1;
|
||||
b = 122.5;
|
||||
c = 123.5;
|
||||
result = 0x2;
|
||||
__asm
|
||||
("lfged:\n\t"
|
||||
"l.addi %0, %0, 0x1\n\t"
|
||||
"lf.sfge.d %1, %2\n\t"
|
||||
"l.bf lfged\n\t"
|
||||
"l.nop\n\t"
|
||||
: "+r"(a)
|
||||
: "r"(b), "r"(c)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("lf.sfge.d error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
b = 133.5;
|
||||
c = 13.5;
|
||||
result = 0x4;
|
||||
__asm
|
||||
("lf.sfge.d %1, %2\n\t"
|
||||
"l.bf 1f\n\t"
|
||||
"l.nop\n\t"
|
||||
"l.addi %0, %0, 0x1\n\t"
|
||||
"l.addi %0, %0, 0x1\n\t"
|
||||
"1:\n\t"
|
||||
"l.addi %0, %0, 0x1\n\t"
|
||||
"l.addi %0, %0, 0x1\n\t"
|
||||
: "+r"(a)
|
||||
: "r"(b), "r"(c)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("lf.sfge.d error\n");
|
||||
return -1;
|
||||
}*/
|
||||
|
||||
return 0;
|
||||
}
|
86
tests/tcg/openrisc/test_lf_gts.c
Normal file
86
tests/tcg/openrisc/test_lf_gts.c
Normal file
@ -0,0 +1,86 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int a, result;
|
||||
float b, c;
|
||||
|
||||
a = 0;
|
||||
b = 122.5;
|
||||
c = 123.5;
|
||||
result = 0x1;
|
||||
__asm
|
||||
("lfgts:\n\t"
|
||||
"l.addi %0, %0, 0x1\n\t"
|
||||
"lf.sfgt.s %1, %2\n\t"
|
||||
"l.bf lfgts\n\t"
|
||||
"l.nop\n\t"
|
||||
: "+r"(a)
|
||||
: "r"(b), "r"(c)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("lf.sfgt.s error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
b = 133.5;
|
||||
c = 13.5;
|
||||
result = 0x1;
|
||||
__asm
|
||||
("lf.sfgt.s %1, %2\n\t"
|
||||
"l.bf 1f\n\t"
|
||||
"l.nop\n\t"
|
||||
"l.addi %0, %0, 0x1\n\t"
|
||||
"l.addi %0, %0, 0x1\n\t"
|
||||
"1:\n\t"
|
||||
: "+r"(a)
|
||||
: "r"(b), "r"(c)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("lf.sfgt.s error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* int a, result;
|
||||
double b, c;
|
||||
|
||||
a = 0;
|
||||
b = 122.5;
|
||||
c = 123.5;
|
||||
result = 0x1;
|
||||
__asm
|
||||
("lfgtd:\n\t"
|
||||
"l.addi %0, %0, 0x1\n\t"
|
||||
"lf.sfgt.d %1, %2\n\t"
|
||||
"l.bf lfgtd\n\t"
|
||||
"l.nop\n\t"
|
||||
: "+r"(a)
|
||||
: "r"(b), "r"(c)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("lf.sfgt.d error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
b = 133.5;
|
||||
c = 13.5;
|
||||
result = 0x3;
|
||||
__asm
|
||||
("l.addi %0, %0, 0x1\n\t"
|
||||
"l.addi %0, %0, 0x1\n\t"
|
||||
"lf.sfgt.d %1, %2\n\t"
|
||||
"l.bf 1f\n\t"
|
||||
"l.nop\n\t"
|
||||
"l.addi %0, %0, 0x1\n\t"
|
||||
"l.addi %0, %0, 0x1\n\t"
|
||||
"1:\n\t"
|
||||
: "+r"(a)
|
||||
: "r"(b), "r"(c)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("lf.sfgt.d error, %x\n", a);
|
||||
return -1;
|
||||
}*/
|
||||
|
||||
return 0;
|
||||
}
|
88
tests/tcg/openrisc/test_lf_les.c
Normal file
88
tests/tcg/openrisc/test_lf_les.c
Normal file
@ -0,0 +1,88 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int a;
|
||||
float b, c;
|
||||
int result;
|
||||
|
||||
a = 0;
|
||||
b = 1234.2;
|
||||
c = 12.4;
|
||||
result = 0x1;
|
||||
__asm
|
||||
("lfles:\n\t"
|
||||
"l.addi %0, %0, 0x1\n\t"
|
||||
"lf.sfle.s %1, %2\n\t"
|
||||
"l.bf lfles\n\t"
|
||||
"l.nop\n\t"
|
||||
: "+r"(a)
|
||||
: "r"(b), "r"(c)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("lf.sfle.s error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
b = 1.1;
|
||||
c = 19.4;
|
||||
result = 0x3;
|
||||
__asm
|
||||
("l.addi %0, %0, 0x1\n\t"
|
||||
"l.addi %0, %0, 0x1\n\t"
|
||||
"lf.sfle.s %1, %2\n\t"
|
||||
"l.bf 1f\n\t"
|
||||
"l.nop\n\t"
|
||||
"l.addi %0, %0, 0x1\n\t"
|
||||
"l.addi %0, %0, 0x1\n\t"
|
||||
"1:\n\t"
|
||||
: "+r"(a)
|
||||
: "r"(b), "r"(c)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("lf.sfle.s error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* int a;
|
||||
double b, c;
|
||||
int result;
|
||||
|
||||
a = 0;
|
||||
b = 1212.5;
|
||||
c = 123.5;
|
||||
result = 0x1;
|
||||
__asm
|
||||
("lfled:\n\t"
|
||||
"l.addi %0, %0, 0x1\n\t"
|
||||
"lf.sfle.d %1, %2\n\t"
|
||||
"l.bf lfled\n\t"
|
||||
"l.nop\n\t"
|
||||
: "+r"(a)
|
||||
: "r"(b), "r"(c)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("lf.sfle.d error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
b = 13.5;
|
||||
c = 113.5;
|
||||
result = 0x2;
|
||||
__asm
|
||||
("l.addi %0, %0, 0x1\n\t"
|
||||
"lf.sfle.d %1, %2\n\t"
|
||||
"l.bf 1f\n\t"
|
||||
"l.nop\n\t"
|
||||
"l.addi %0, %0, 0x1\n\t"
|
||||
"1:\n\t"
|
||||
: "+r"(a)
|
||||
: "r"(b), "r"(c)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("lf.sfle.d error\n");
|
||||
return -1;
|
||||
}*/
|
||||
|
||||
return 0;
|
||||
}
|
92
tests/tcg/openrisc/test_lf_lts.c
Normal file
92
tests/tcg/openrisc/test_lf_lts.c
Normal file
@ -0,0 +1,92 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int a;
|
||||
float b, c, d;
|
||||
int result;
|
||||
|
||||
a = 0;
|
||||
b = 124.5;
|
||||
c = 1.4;
|
||||
result = 1;
|
||||
__asm
|
||||
("lfltd:\n\t"
|
||||
"l.addi %0, %0, 0x1\n\t"
|
||||
"lf.sflt.s %1, %2\n\t"
|
||||
"l.bf lfltd\n\t"
|
||||
"l.nop\n\t"
|
||||
: "+r"(a)
|
||||
: "r"(b), "r"(c)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("lf.sflt.s error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
a = 0;
|
||||
b = 11.1;
|
||||
c = 13.1;
|
||||
d = 1.0;
|
||||
result = 2;
|
||||
__asm
|
||||
("1:\n\t"
|
||||
"lf.add.s %1, %1, %3\n\t"
|
||||
"l.addi %0, %0, 1\n\t"
|
||||
"lf.sflt.s %1, %2\n\t"
|
||||
"l.bf 1b\n\t"
|
||||
"l.nop\n\t"
|
||||
: "+r"(a)
|
||||
: "r"(b), "r"(c), "r"(d)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("lf.sflt.s error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* int a;
|
||||
double b, c;
|
||||
int result;
|
||||
|
||||
a = 0;
|
||||
b = 1432.1;
|
||||
c = 2.4;
|
||||
result = 0x1;
|
||||
__asm
|
||||
("lfltd:\n\t"
|
||||
"l.addi %0, %0, 0x1\n\t"
|
||||
"lf.sflt.d %1, %2\n\t"
|
||||
"l.bf lfltd\n\t"
|
||||
"l.nop\n\t"
|
||||
: "+r"(a)
|
||||
: "r"(b), "r"(c)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("lf.sflt.d error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
a = 0;
|
||||
b = 1.1;
|
||||
c = 19.7;
|
||||
result = 2;
|
||||
__asm
|
||||
("lf.sflt.d %1, %2\n\t"
|
||||
"l.bf 1f\n\t"
|
||||
"l.nop\n\t"
|
||||
"l.addi %0, %0, 1\n\t"
|
||||
"l.addi %0, %0, 1\n\t"
|
||||
"l.addi %0, %0, 1\n\t"
|
||||
"1:\n\t"
|
||||
"l.addi %0, %0, 1\n\t"
|
||||
"l.addi %0, %0, 1\n\t"
|
||||
: "+r"(a), "+r"(b)
|
||||
: "r"(c)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("lf.sflt.d error\n");
|
||||
return -1;
|
||||
}*/
|
||||
|
||||
return 0;
|
||||
}
|
22
tests/tcg/openrisc/test_lf_mul.c
Normal file
22
tests/tcg/openrisc/test_lf_mul.c
Normal file
@ -0,0 +1,22 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
float a, b, c;
|
||||
float result;
|
||||
|
||||
b = 1.5;
|
||||
c = 4.0;
|
||||
result = 6.0;
|
||||
__asm
|
||||
("lf.mul.s %0, %1, %2\n\t"
|
||||
: "=r"(a)
|
||||
: "r"(b), "r"(c)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("lf.mul.s error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
89
tests/tcg/openrisc/test_lf_nes.c
Normal file
89
tests/tcg/openrisc/test_lf_nes.c
Normal file
@ -0,0 +1,89 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int a;
|
||||
float b, c;
|
||||
int result;
|
||||
|
||||
a = 0;
|
||||
b = 23.1;
|
||||
c = 23.1;
|
||||
result = 0x1;
|
||||
__asm
|
||||
("lfnes:\n\t"
|
||||
"l.addi %0, %0, 0x1\n\t"
|
||||
"lf.sfne.s %1, %2\n\t"
|
||||
"l.bf lfnes\n\t"
|
||||
"l.nop\n\t"
|
||||
: "+r"(a)
|
||||
: "r"(b), "r"(c)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("lf.sfne.s error");
|
||||
return -1;
|
||||
}
|
||||
|
||||
b = 12.4;
|
||||
c = 7.8;
|
||||
result = 0x3;
|
||||
__asm
|
||||
("l.addi %0, %0, 0x1\n\t"
|
||||
"l.addi %0, %0, 0x1\n\t"
|
||||
"lf.sfne.s %1, %2\n\t"
|
||||
"l.bf 1f\n\t"
|
||||
"l.nop\n\t"
|
||||
"l.addi %0, %0, 0x1\n\t"
|
||||
"l.addi %0, %0, 0x1\n\t"
|
||||
"1:\n\t"
|
||||
: "+r"(a)
|
||||
: "r"(b), "r"(c)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("lf.sfne.s error\n");
|
||||
return -1;
|
||||
}
|
||||
/* int a;
|
||||
double b, c;
|
||||
int result;
|
||||
|
||||
a = 0;
|
||||
b = 124.3;
|
||||
c = 124.3;
|
||||
result = 0x1;
|
||||
__asm
|
||||
("lfned:\n\t"
|
||||
"l.addi %0, %0, 0x1\n\t"
|
||||
"lf.sfne.d %1, %2\n\t"
|
||||
"l.bf lfned\n\t"
|
||||
"l.nop\n\t"
|
||||
: "+r"(a)
|
||||
: "r"(b), "r"(c)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("lf.sfne.d error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
b = 11.5;
|
||||
c = 16.7;
|
||||
result = 0x3;
|
||||
__asm
|
||||
("l.addi %0, %0, 0x1\n\t"
|
||||
"l.addi %0, %0, 0x1\n\t"
|
||||
"lf.sfne.d %1, %2\n\t"
|
||||
"l.bf 1f\n\t"
|
||||
"l.nop\n\t"
|
||||
"l.addi r4, r4, 0x1\n\t"
|
||||
"l.addi r4, r4, 0x1\n\t"
|
||||
"1:\n\t"
|
||||
: "+r"(a)
|
||||
: "r"(b), "r"(c)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("lf.sfne.d error\n");
|
||||
return -1;
|
||||
}*/
|
||||
|
||||
return 0;
|
||||
}
|
32
tests/tcg/openrisc/test_lf_rem.c
Normal file
32
tests/tcg/openrisc/test_lf_rem.c
Normal file
@ -0,0 +1,32 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
float a, b, c;
|
||||
float result;
|
||||
|
||||
b = 101.5;
|
||||
c = 10;
|
||||
result = 1.5;
|
||||
/* __asm
|
||||
("lf.rem.d %0, %1, %2\n\t"
|
||||
: "=r"(a)
|
||||
: "r"(b), "r"(c)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("lf.rem.d error\n");
|
||||
return -1;
|
||||
}*/
|
||||
|
||||
__asm
|
||||
("lf.rem.s %0, %1, %2\n\t"
|
||||
: "=r"(a)
|
||||
: "r"(b), "r"(c)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("lf.rem.s error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
35
tests/tcg/openrisc/test_lf_sub.c
Normal file
35
tests/tcg/openrisc/test_lf_sub.c
Normal file
@ -0,0 +1,35 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
float a, b, c;
|
||||
float result;
|
||||
|
||||
b = 10.5;
|
||||
c = 1.5;
|
||||
result = 9.0;
|
||||
__asm
|
||||
("lf.sub.s %0, %1, %2\n\t"
|
||||
: "=r"(a)
|
||||
: "r"(b), "r"(c)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("lf.sub.s error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* b = 0x999;
|
||||
c = 0x654;
|
||||
result = 0x345;
|
||||
__asm
|
||||
("lf.sub.d %0, %1, %2\n\t"
|
||||
: "=r"(a)
|
||||
: "r"(b), "r"(c)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("lf.sub.d error\n");
|
||||
return -1;
|
||||
}*/
|
||||
|
||||
return 0;
|
||||
}
|
105
tests/tcg/openrisc/test_logic.c
Normal file
105
tests/tcg/openrisc/test_logic.c
Normal file
@ -0,0 +1,105 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int a, b, c;
|
||||
int result;
|
||||
|
||||
b = 0x9743;
|
||||
c = 0x2;
|
||||
result = 0x25d0c;
|
||||
__asm
|
||||
("l.sll %0, %1, %2\n\t"
|
||||
: "=r"(a)
|
||||
: "r"(b), "r"(c)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("sll error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
b = 0x9743;
|
||||
result = 0x25d0c;
|
||||
__asm
|
||||
("l.slli %0, %1, 0x2\n\t"
|
||||
: "=r"(a)
|
||||
: "r"(b)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("slli error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
b = 0x7654;
|
||||
c = 0x03;
|
||||
result = 0xeca;
|
||||
__asm
|
||||
("l.srl %0, %1, %2\n\t"
|
||||
: "=r"(a)
|
||||
: "r"(b), "r"(c)
|
||||
);
|
||||
|
||||
b = 0x7654;
|
||||
result = 0xeca;
|
||||
__asm
|
||||
("l.srli %0, %1, 0x3\n\t"
|
||||
: "=r"(a)
|
||||
: "r"(b)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("srli error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
b = 0x80000001;
|
||||
c = 0x4;
|
||||
result = 0x18000000;
|
||||
__asm
|
||||
("l.ror %0, %1, %2\n\t"
|
||||
: "=r"(a)
|
||||
: "r"(b), "r"(c)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("ror error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
b = 0x80000001;
|
||||
result = 0x18000000;
|
||||
__asm
|
||||
("l.rori %0, %1, 0x4\n\t"
|
||||
: "=r"(a)
|
||||
: "r"(b)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("rori error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
b = 0x80000001;
|
||||
c = 0x03;
|
||||
result = 0xf0000000;
|
||||
__asm
|
||||
("l.sra %0, %1, %2\n\t"
|
||||
: "=r"(a)
|
||||
: "r"(b), "r"(c)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("sra error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
b = 0x80000001;
|
||||
result = 0xf0000000;
|
||||
__asm
|
||||
("l.srai %0, %1, 0x3\n\t"
|
||||
: "=r"(a)
|
||||
: "r"(b)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("srai error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
84
tests/tcg/openrisc/test_lx.c
Normal file
84
tests/tcg/openrisc/test_lx.c
Normal file
@ -0,0 +1,84 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int a;
|
||||
int p[50];
|
||||
int result;
|
||||
|
||||
result = 0x23;
|
||||
__asm
|
||||
("l.ori r8, r0, 0x123\n\t"
|
||||
"l.sb 0x4 + %1, r8\n\t"
|
||||
"\n\t"
|
||||
"l.lbz %0, 0x4 + %1\n\t"
|
||||
: "=r"(a), "+m"(*p)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("lbz error, %x\n", a);
|
||||
return -1;
|
||||
}
|
||||
|
||||
result = 0x23;
|
||||
__asm
|
||||
("l.lbs %0, 0x4 + %1\n\t"
|
||||
: "=r"(a)
|
||||
: "m"(*p)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("lbs error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
result = 0x1111;
|
||||
__asm
|
||||
("l.ori r8, r0, 0x1111\n\t"
|
||||
"l.sh 0x20 + %1, r8\n\t"
|
||||
"\n\t"
|
||||
"l.lhs %0, 0x20 + %1\n\t"
|
||||
: "=r"(a), "=m"(*p)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("lhs error, %x\n", a);
|
||||
return -1;
|
||||
}
|
||||
|
||||
result = 0x1111;
|
||||
__asm
|
||||
("l.lhz %0, 0x20 + %1\n\t"
|
||||
: "=r"(a)
|
||||
: "m"(*p)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("lhz error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
result = 0x1111233;
|
||||
__asm
|
||||
("l.ori r8, r0, 0x1233\n\t"
|
||||
"l.movhi r1, 0x111\n\t"
|
||||
"l.or r8, r8, r1\n\t"
|
||||
"l.sw 0x123 + %1, r8\n\t"
|
||||
"\n\t"
|
||||
"l.lws %0, 0x123 + %1\n\t"
|
||||
: "=r"(a), "+m"(*p)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("lws error, %x\n", a);
|
||||
return -1;
|
||||
}
|
||||
|
||||
result = 0x1111233;
|
||||
__asm
|
||||
("l.lwz %0, 0x123 + %1\n\t"
|
||||
: "=r"(a)
|
||||
: "m"(*p)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("lwz error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
31
tests/tcg/openrisc/test_movhi.c
Normal file
31
tests/tcg/openrisc/test_movhi.c
Normal file
@ -0,0 +1,31 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int a;
|
||||
int result;
|
||||
|
||||
result = 0x1222;
|
||||
__asm
|
||||
("l.movhi r3, 0x1222\n\t"
|
||||
"l.srli %0, r3, 16\n\t"
|
||||
: "=r"(a)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("movhi error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
result = 0x1111;
|
||||
__asm
|
||||
("l.movhi r8, 0x1111\n\t"
|
||||
"l.srli %0, r8, 16\n\t"
|
||||
: "=r"(a)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("movhi error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
61
tests/tcg/openrisc/test_mul.c
Normal file
61
tests/tcg/openrisc/test_mul.c
Normal file
@ -0,0 +1,61 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int a, b, c;
|
||||
int result;
|
||||
|
||||
b = 0x4;
|
||||
c = 0x1;
|
||||
result = 0x4;
|
||||
__asm
|
||||
("l.mul %0, %1, %2\n\t"
|
||||
: "=r"(a)
|
||||
: "r"(b), "r"(c)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("mul error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
b = 0x1;
|
||||
c = 0x0;
|
||||
result = 0x0;
|
||||
__asm
|
||||
("l.mul %0, %1, %2\n\t"
|
||||
: "=r"(a)
|
||||
: "r"(b), "r"(c)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("mul error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
b = 0x1;
|
||||
c = 0xff;
|
||||
result = 0xff;
|
||||
__asm
|
||||
("l.mul %0, %1, %2\n\t"
|
||||
: "=r"(a)
|
||||
: "r"(b), "r"(c)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("mul error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
b = 0x7fffffff;
|
||||
c = 0x2;
|
||||
result = 0xfffffffe;
|
||||
__asm
|
||||
("l.mul %0, %1, %2\n\t"
|
||||
: "=r"(a)
|
||||
: "r"(b), "r"(c)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("mul error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
48
tests/tcg/openrisc/test_muli.c
Normal file
48
tests/tcg/openrisc/test_muli.c
Normal file
@ -0,0 +1,48 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int a, b, c;
|
||||
int result;
|
||||
|
||||
b = 0x4;
|
||||
c = 0x1;
|
||||
result = 0x4;
|
||||
__asm
|
||||
("l.muli %0, %1, 0x1\n\t"
|
||||
: "=r"(a)
|
||||
: "r"(b)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("muli error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
b = 0x1;
|
||||
c = 0x0;
|
||||
result = 0x0;
|
||||
__asm
|
||||
("l.muli %0, %1, 0x0\n\t"
|
||||
: "=r"(a)
|
||||
: "r"(b)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("muli error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
b = 0x1;
|
||||
c = 0xff;
|
||||
result = 0xff;
|
||||
__asm
|
||||
("l.muli %0, %1, 0xff\n\t"
|
||||
: "=r"(a)
|
||||
: "r"(b)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("muli error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
48
tests/tcg/openrisc/test_mulu.c
Normal file
48
tests/tcg/openrisc/test_mulu.c
Normal file
@ -0,0 +1,48 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int a, b, c;
|
||||
int result;
|
||||
|
||||
b = 0x4;
|
||||
c = 0x1;
|
||||
result = 0x4;
|
||||
__asm
|
||||
("l.mulu %0, %1, %2\n\t"
|
||||
: "=r"(a)
|
||||
: "r"(b), "r"(c)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("mulu error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
b = 0x1;
|
||||
c = 0x0;
|
||||
result = 0x0;
|
||||
__asm
|
||||
("l.mulu %0, %1, %2\n\t"
|
||||
: "=r"(a)
|
||||
: "r"(b), "r"(c)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("mulu error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
b = 0x1;
|
||||
c = 0xff;
|
||||
result = 0xff;
|
||||
__asm
|
||||
("l.mulu %0, %1, %2\n\t"
|
||||
: "=r"(a)
|
||||
: "r"(b), "r"(c)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("mulu error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
43
tests/tcg/openrisc/test_sfeq.c
Normal file
43
tests/tcg/openrisc/test_sfeq.c
Normal file
@ -0,0 +1,43 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int a, b;
|
||||
int result;
|
||||
|
||||
a = 0x1;
|
||||
b = 0x80;
|
||||
result = 0x2;
|
||||
__asm
|
||||
("1:\n\t"
|
||||
"l.addi %0, %0, 0x1\n\t"
|
||||
"l.sfeq %0, %1\n\t"
|
||||
"l.bf 1b\n\t"
|
||||
"l.nop\n\t"
|
||||
: "+r"(a)
|
||||
: "r"(b)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("sfeq error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
a = 0x7f;
|
||||
b = 0x80;
|
||||
result = 0x81;
|
||||
__asm
|
||||
("2:\n\t"
|
||||
"l.addi %0, %0, 0x1\n\t"
|
||||
"l.sfeq %0, %1\n\t"
|
||||
"l.bf 2b\n\t"
|
||||
"l.nop\n\t"
|
||||
: "+r"(a)
|
||||
: "r"(b)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("sfeq error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
39
tests/tcg/openrisc/test_sfeqi.c
Normal file
39
tests/tcg/openrisc/test_sfeqi.c
Normal file
@ -0,0 +1,39 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int a;
|
||||
int result;
|
||||
|
||||
a = 1;
|
||||
result = 2;
|
||||
__asm
|
||||
("1:\n\t"
|
||||
"l.addi %0, %0, 0x1\n\t"
|
||||
"l.sfeqi %0, 0x80\n\t"
|
||||
"l.bf 1b\n\t"
|
||||
"l.nop\n\t"
|
||||
: "+r"(a)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("sfeqi error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
a = 0x7f;
|
||||
result = 0x81;
|
||||
__asm
|
||||
("2:\n\t"
|
||||
"l.addi %0, %0, 0x1\n\t"
|
||||
"l.sfeqi %0, 0x80\n\t"
|
||||
"l.bf 2b\n\t"
|
||||
"l.nop\n\t"
|
||||
: "+r"(a)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("sfeqi error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
44
tests/tcg/openrisc/test_sfges.c
Normal file
44
tests/tcg/openrisc/test_sfges.c
Normal file
@ -0,0 +1,44 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int a, b, c;
|
||||
int result;
|
||||
|
||||
a = 0;
|
||||
b = 3;
|
||||
result = 1;
|
||||
__asm
|
||||
("1:\n\t"
|
||||
"l.addi %0, %0, 1\n\t"
|
||||
"l.sfges %0, %1\n\t"
|
||||
"l.bf 1b\n\t"
|
||||
"l.nop\n\t"
|
||||
: "+r"(a)
|
||||
: "r"(b)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("sfges error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
a = 0xff;
|
||||
b = 3;
|
||||
c = 0x1;
|
||||
result = 2;
|
||||
__asm
|
||||
("1:\n\t"
|
||||
"l.sub %0, %0, %2\n\t"
|
||||
"l.sfges %0, %1\n\t"
|
||||
"l.bf 1b\n\t"
|
||||
"l.nop\n\t"
|
||||
: "+r"(a)
|
||||
: "r"(b), "r"(c)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("sfges error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
40
tests/tcg/openrisc/test_sfgesi.c
Normal file
40
tests/tcg/openrisc/test_sfgesi.c
Normal file
@ -0,0 +1,40 @@
|
||||
#include <stdio.h>
|
||||
int main(void)
|
||||
{
|
||||
int a, b;
|
||||
int result;
|
||||
|
||||
a = 0;
|
||||
result = 1;
|
||||
__asm
|
||||
("1:\n\t"
|
||||
"l.addi %0, %0, 1\n\t"
|
||||
"l.sfgesi %0, 0x3\n\t"
|
||||
"l.bf 1b\n\t"
|
||||
"l.nop\n\t"
|
||||
: "+r"(a)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("sfgesi error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
a = 0xff;
|
||||
b = 1;
|
||||
result = 2;
|
||||
__asm
|
||||
("1:\n\t"
|
||||
"l.sub %0, %0, %1\n\t"
|
||||
"l.sfgesi %0, 0x3\n\t"
|
||||
"l.bf 1b\n\t"
|
||||
"l.nop\n\t"
|
||||
: "+r"(a)
|
||||
: "r"(b)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("sfgesi error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
44
tests/tcg/openrisc/test_sfgeu.c
Normal file
44
tests/tcg/openrisc/test_sfgeu.c
Normal file
@ -0,0 +1,44 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int a, b, c;
|
||||
int result;
|
||||
|
||||
a = 0;
|
||||
b = 3;
|
||||
result = 1;
|
||||
__asm
|
||||
("1:\n\t"
|
||||
"l.addi %0, %0, 1\n\t"
|
||||
"l.sfgeu %0, %1\n\t"
|
||||
"l.bf 1b\n\t"
|
||||
"l.nop\n\t"
|
||||
: "+r"(a)
|
||||
: "r"(b)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("sfgeu error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
a = 0xff;
|
||||
b = 3;
|
||||
c = 1;
|
||||
result = 2;
|
||||
__asm
|
||||
("1:\n\t"
|
||||
"l.sub %0, %0, %2\n\t"
|
||||
"l.sfgeu %0, %1\n\t"
|
||||
"l.bf 1b\n\t"
|
||||
"l.nop\n\t"
|
||||
: "+r"(a)
|
||||
: "r"(b), "r"(c)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("sfgeu error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
41
tests/tcg/openrisc/test_sfgeui.c
Normal file
41
tests/tcg/openrisc/test_sfgeui.c
Normal file
@ -0,0 +1,41 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int a, b;
|
||||
int result;
|
||||
|
||||
a = 0;
|
||||
result = 1;
|
||||
__asm
|
||||
("1:\n\t"
|
||||
"l.addi %0, %0, 1\n\t"
|
||||
"l.sfgeui %0, 0x3\n\t"
|
||||
"l.bf 1b\n\t"
|
||||
"l.nop\n\t"
|
||||
: "+r"(a)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("sfgeui error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
a = 0xff;
|
||||
b = 1;
|
||||
result = 2;
|
||||
__asm
|
||||
("1:\n\t"
|
||||
"l.sub %0, %0, %1\n\t"
|
||||
"l.sfgeui %0, 0x3\n\t"
|
||||
"l.bf 1b\n\t"
|
||||
"l.nop\n\t"
|
||||
: "+r"(a)
|
||||
: "r"(b)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("sfgeui error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
45
tests/tcg/openrisc/test_sfgts.c
Normal file
45
tests/tcg/openrisc/test_sfgts.c
Normal file
@ -0,0 +1,45 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int a, b, c;
|
||||
int result;
|
||||
|
||||
a = 0;
|
||||
b = 3;
|
||||
result = 1;
|
||||
__asm
|
||||
("1:\n\t"
|
||||
"l.addi %0, %0, 1\n\t"
|
||||
"l.sfgts %0, %1\n\t"
|
||||
"l.bf 1b\n\t"
|
||||
"l.nop\n\t"
|
||||
: "+r"(a)
|
||||
: "r"(b)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("sfgts error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
a = 0xff;
|
||||
b = 3;
|
||||
c = 1;
|
||||
result = 3;
|
||||
__asm
|
||||
("1:\n\t"
|
||||
"l.sub %0, %0, %2\n\t"
|
||||
"l.sfgts %0, %1\n\t"
|
||||
"l.bf 1b\n\t"
|
||||
"l.nop\n\t"
|
||||
: "+r"(a)
|
||||
: "r"(b), "r"(c)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("sfgts error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
41
tests/tcg/openrisc/test_sfgtsi.c
Normal file
41
tests/tcg/openrisc/test_sfgtsi.c
Normal file
@ -0,0 +1,41 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int a, b;
|
||||
int result;
|
||||
|
||||
a = 0;
|
||||
result = 1;
|
||||
__asm
|
||||
("1:\n\t"
|
||||
"l.addi %0, %0, 1\n\t"
|
||||
"l.sfgtsi %0, 0x3\n\t"
|
||||
"l.bf 1b\n\t"
|
||||
"l.nop\n\t"
|
||||
: "+r"(a)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("sfgtsi error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
a = 0xff;
|
||||
b = 1;
|
||||
result = 3;
|
||||
__asm
|
||||
("1:\n\t"
|
||||
"l.sub %0, %0, %1\n\t"
|
||||
"l.sfgtsi %0, 0x3\n\t"
|
||||
"l.bf 1b\n\t"
|
||||
"l.nop\n\t"
|
||||
: "+r"(a)
|
||||
: "r"(b)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("sfgtsi error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
43
tests/tcg/openrisc/test_sfgtu.c
Normal file
43
tests/tcg/openrisc/test_sfgtu.c
Normal file
@ -0,0 +1,43 @@
|
||||
#include <stdio.h>
|
||||
int main(void)
|
||||
{
|
||||
int a, b, c;
|
||||
int result;
|
||||
|
||||
a = 0;
|
||||
b = 3;
|
||||
result = 1;
|
||||
__asm
|
||||
("1:\n\t"
|
||||
"l.addi %0, %0, 1\n\t"
|
||||
"l.sfgtu %0, %1\n\t"
|
||||
"l.bf 1b\n\t"
|
||||
"l.nop\n\t"
|
||||
: "+r"(a)
|
||||
: "r"(b)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("sfgtu error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
a = 0xff;
|
||||
b = 3;
|
||||
c = 1;
|
||||
result = 3;
|
||||
__asm
|
||||
("1:\n\t"
|
||||
"l.sub %0, %0, %2\n\t"
|
||||
"l.sfgtu %0, %1\n\t"
|
||||
"l.bf 1b\n\t"
|
||||
"l.nop\n\t"
|
||||
: "+r"(a)
|
||||
: "r"(b), "r"(c)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("sfgtu error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
42
tests/tcg/openrisc/test_sfgtui.c
Normal file
42
tests/tcg/openrisc/test_sfgtui.c
Normal file
@ -0,0 +1,42 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int a, b;
|
||||
int result;
|
||||
|
||||
a = 0;
|
||||
result = 1;
|
||||
__asm
|
||||
("1:\n\t"
|
||||
"l.addi %0, %0, 1\n\t"
|
||||
"l.sfgtui %0, 0x3\n\t"
|
||||
"l.bf 1b\n\t"
|
||||
"l.nop\n\t"
|
||||
: "+r"(a)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("sfgtui error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
a = 0xff;
|
||||
b = 1;
|
||||
result = 3;
|
||||
__asm
|
||||
("1:\n\t"
|
||||
"l.sub %0, %0, %1\n\t"
|
||||
"l.sfgtui %0, 0x3\n\t"
|
||||
"l.bf 1b\n\t"
|
||||
"l.nop\n\t"
|
||||
: "+r"(a)
|
||||
: "r"(b)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("sfgtui error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
26
tests/tcg/openrisc/test_sfles.c
Normal file
26
tests/tcg/openrisc/test_sfles.c
Normal file
@ -0,0 +1,26 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int a, b;
|
||||
int result;
|
||||
|
||||
a = 0;
|
||||
b = 3;
|
||||
result = 4;
|
||||
__asm
|
||||
("1:\n\t"
|
||||
"l.addi %0, %0, 4\n\t"
|
||||
"l.sfles %0, %1\n\t"
|
||||
"l.bf 1b\n\t"
|
||||
"l.nop\n\t"
|
||||
: "+r"(a)
|
||||
: "r"(b)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("sfles error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
39
tests/tcg/openrisc/test_sflesi.c
Normal file
39
tests/tcg/openrisc/test_sflesi.c
Normal file
@ -0,0 +1,39 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int a;
|
||||
int result;
|
||||
|
||||
a = 0;
|
||||
result = 4;
|
||||
__asm
|
||||
("1:\n\t"
|
||||
"l.addi %0, %0, 4\n\t"
|
||||
"l.sflesi %0, 0x3\n\t"
|
||||
"l.bf 1b\n\t"
|
||||
"l.nop\n\t"
|
||||
: "+r"(a)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("sflesi error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
a = 0;
|
||||
result = 4;
|
||||
__asm
|
||||
("1:\n\t"
|
||||
"l.addi %0, %0, 1\n\t"
|
||||
"l.sflesi %0, 0x3\n\t"
|
||||
"l.bf 1b\n\t"
|
||||
"l.nop\n\t"
|
||||
: "+r"(a)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("sflesi error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
43
tests/tcg/openrisc/test_sfleu.c
Normal file
43
tests/tcg/openrisc/test_sfleu.c
Normal file
@ -0,0 +1,43 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int a, b;
|
||||
int result;
|
||||
|
||||
a = 0;
|
||||
b = 3;
|
||||
result = 4;
|
||||
__asm
|
||||
("1:\n\t"
|
||||
"l.addi %0, %0, 4\n\t"
|
||||
"l.sfleu %0, %1\n\t"
|
||||
"l.bf 1b\n\t"
|
||||
"l.nop\n\t"
|
||||
: "+r"(a)
|
||||
: "r"(b)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("sfleu error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
a = 0;
|
||||
b = 3;
|
||||
result = 4;
|
||||
__asm
|
||||
("1:\n\t"
|
||||
"l.addi %0, %0, 1\n\t"
|
||||
"l.sfleu %0, %1\n\t"
|
||||
"l.bf 1b\n\t"
|
||||
"l.nop\n\t"
|
||||
: "+r"(a)
|
||||
: "r"(b)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("sfleu error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
39
tests/tcg/openrisc/test_sfleui.c
Normal file
39
tests/tcg/openrisc/test_sfleui.c
Normal file
@ -0,0 +1,39 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int a;
|
||||
int result;
|
||||
|
||||
a = 0;
|
||||
result = 4;
|
||||
__asm
|
||||
("1:\n\t"
|
||||
"l.addi %0, %0, 4\n\t"
|
||||
"l.sfleui %0, 0x3\n\t"
|
||||
"l.bf 1b\n\t"
|
||||
"l.nop\n\t"
|
||||
: "+r"(a)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("sfleui error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
a = 0;
|
||||
result = 4;
|
||||
__asm
|
||||
("1:\n\t"
|
||||
"l.addi %0, %0, 1\n\t"
|
||||
"l.sfleui %0, 0x3\n\t"
|
||||
"l.bf 1b\n\t"
|
||||
"l.nop\n\t"
|
||||
: "+r"(a)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("sfleui error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
43
tests/tcg/openrisc/test_sflts.c
Normal file
43
tests/tcg/openrisc/test_sflts.c
Normal file
@ -0,0 +1,43 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int a, b;
|
||||
int result;
|
||||
|
||||
a = 0;
|
||||
b = 3;
|
||||
result = 4;
|
||||
__asm
|
||||
("1:\n\t"
|
||||
"l.addi %0, %0, 4\n\t"
|
||||
"l.sflts %0, %1\n\t"
|
||||
"l.bf 1b\n\t"
|
||||
"l.nop\n\t"
|
||||
: "+r"(a)
|
||||
: "r"(b)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("sflts error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
a = 0;
|
||||
b = 3;
|
||||
result = 3;
|
||||
__asm
|
||||
("1:\n\t"
|
||||
"l.addi %0, %0, 1\n\t"
|
||||
"l.sflts %0, %1\n\t"
|
||||
"l.bf 1b\n\t"
|
||||
"l.nop\n\t"
|
||||
: "+r"(a)
|
||||
: "r"(b)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("sflts error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
39
tests/tcg/openrisc/test_sfltsi.c
Normal file
39
tests/tcg/openrisc/test_sfltsi.c
Normal file
@ -0,0 +1,39 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int a;
|
||||
int result;
|
||||
|
||||
a = 0;
|
||||
result = 4;
|
||||
__asm
|
||||
("1:\n\t"
|
||||
"l.addi %0, %0, 4\n\t"
|
||||
"l.sfltsi %0, 0x3\n\t"
|
||||
"l.bf 1b\n\t"
|
||||
"l.nop\n\t"
|
||||
: "+r"(a)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("sfltsi error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
a = 0;
|
||||
result = 3;
|
||||
__asm
|
||||
("1:\n\t"
|
||||
"l.addi %0, %0, 1\n\t"
|
||||
"l.sfltsi %0, 0x3\n\t"
|
||||
"l.bf 1b\n\t"
|
||||
"l.nop\n\t"
|
||||
: "+r"(a)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("sfltsi error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
43
tests/tcg/openrisc/test_sfltu.c
Normal file
43
tests/tcg/openrisc/test_sfltu.c
Normal file
@ -0,0 +1,43 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int a, b;
|
||||
int result;
|
||||
|
||||
a = 0;
|
||||
b = 3;
|
||||
result = 4;
|
||||
__asm
|
||||
("1:\n\t"
|
||||
"l.addi %0, %0, 4\n\t"
|
||||
"l.sfltu %0, %1\n\t"
|
||||
"l.bf 1b\n\t"
|
||||
"l.nop\n\t"
|
||||
: "+r"(a)
|
||||
: "r"(b)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("sfltu error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
a = 0;
|
||||
b = 3;
|
||||
result = 3;
|
||||
__asm
|
||||
("1:\n\t"
|
||||
"l.addi %0, %0, 1\n\t"
|
||||
"l.sfltu %0, %1\n\t"
|
||||
"l.bf 1b\n\t"
|
||||
"l.nop\n\t"
|
||||
: "+r"(a)
|
||||
: "r"(b)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("sfltu error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
39
tests/tcg/openrisc/test_sfltui.c
Normal file
39
tests/tcg/openrisc/test_sfltui.c
Normal file
@ -0,0 +1,39 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int a;
|
||||
int result;
|
||||
|
||||
a = 0;
|
||||
result = 4;
|
||||
__asm
|
||||
("1:\n\t"
|
||||
"l.addi %0, %0, 4\n\t"
|
||||
"l.sfltsi %0, 0x3\n\t"
|
||||
"l.bf 1b\n\t"
|
||||
"l.nop\n\t"
|
||||
: "+r"(a)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("sfltui error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
a = 0;
|
||||
result = 3;
|
||||
__asm
|
||||
("1:\n\t"
|
||||
"l.addi %0, %0, 1\n\t"
|
||||
"l.sfltsi %0, 0x3\n\t"
|
||||
"l.bf 1b\n\t"
|
||||
"l.nop\n\t"
|
||||
: "+r"(a)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("sfltui error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
43
tests/tcg/openrisc/test_sfne.c
Normal file
43
tests/tcg/openrisc/test_sfne.c
Normal file
@ -0,0 +1,43 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int a, b;
|
||||
int result;
|
||||
|
||||
a = 0;
|
||||
b = 3;
|
||||
result = 3;
|
||||
__asm
|
||||
("1:\n\t"
|
||||
"l.addi %0, %0, 3\n\t"
|
||||
"l.sfne %0, %1\n\t"
|
||||
"l.bf 1b\n\t"
|
||||
"l.nop\n\t"
|
||||
: "+r"(a)
|
||||
: "r"(b)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("sfne error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
a = 0;
|
||||
b = 3;
|
||||
result = 3;
|
||||
__asm
|
||||
("1:\n\t"
|
||||
"l.addi %0, %0, 1\n\t"
|
||||
"l.sfne %0, %1\n\t"
|
||||
"l.bf 1b\n\t"
|
||||
"l.nop\n\t"
|
||||
: "+r"(a)
|
||||
: "r"(b)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("sfne error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
39
tests/tcg/openrisc/test_sfnei.c
Normal file
39
tests/tcg/openrisc/test_sfnei.c
Normal file
@ -0,0 +1,39 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int a;
|
||||
int result;
|
||||
|
||||
a = 0;
|
||||
result = 3;
|
||||
__asm
|
||||
("1:\n\t"
|
||||
"l.addi %0, %0, 3\n\t"
|
||||
"l.sfnei %0, 0x3\n\t"
|
||||
"l.bf 1b\n\t"
|
||||
"l.nop\n\t"
|
||||
: "+r"(a)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("sfnei error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
a = 0;
|
||||
result = 3;
|
||||
__asm
|
||||
("1:\n\t"
|
||||
"l.addi %0, %0, 1\n\t"
|
||||
"l.sfnei %0, 0x3\n\t"
|
||||
"l.bf 1b\n\t"
|
||||
"l.nop\n\t"
|
||||
: "+r"(a)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("sfnei error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
35
tests/tcg/openrisc/test_sub.c
Normal file
35
tests/tcg/openrisc/test_sub.c
Normal file
@ -0,0 +1,35 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int a, b;
|
||||
int result;
|
||||
|
||||
a = 0x100;
|
||||
b = 0x100;
|
||||
result = 0x0;
|
||||
__asm
|
||||
("l.sub %0, %0, %1\n\t"
|
||||
: "+r"(a)
|
||||
: "r"(b)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("sub error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
a = 0xffff;
|
||||
b = 0x1;
|
||||
result = 0xfffe;
|
||||
__asm
|
||||
("l.sub %0, %0, %1\n\t"
|
||||
: "+r"(a)
|
||||
: "r"(b)
|
||||
);
|
||||
if (a != result) {
|
||||
printf("sub error\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue
Block a user