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:
Jia Liu 2012-07-20 15:50:53 +08:00 committed by Blue Swirl
parent d962783e98
commit d901eff3e6
52 changed files with 2579 additions and 0 deletions

View 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)

View 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;
}

View 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;
}

View 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;
}

View 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;
}

View 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;
}

View 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;
}

View 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;
}

View 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;
}

View 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;
}

View 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;
}

View 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;
}

View 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;
}

View 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;
}

View 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;
}

View 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;
}

View 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;
}

View 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;
}

View 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;
}

View 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;
}

View 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;
}

View 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;
}

View 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;
}

View 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;
}

View 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;
}

View 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;
}

View 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;
}

View 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;
}

View 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;
}

View 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;
}

View 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;
}

View 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;
}

View 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;
}

View 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;
}

View 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;
}

View 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;
}

View 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;
}

View 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;
}

View 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;
}

View 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;
}

View 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;
}

View 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;
}

View 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;
}

View 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;
}

View 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;
}

View 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;
}

View 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;
}

View 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;
}

View 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;
}

View 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;
}

View 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;
}

View 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;
}