mirror of
https://github.com/izzy2lost/xemu.git
synced 2026-07-06 00:20:22 -07:00
lm32: opcode testsuite
This patch creates tests/lm32 directory and adds tests for every LatticeMico32 opcode. Signed-off-by: Michael Walle <michael@walle.cc> Signed-off-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>
This commit is contained in:
committed by
Edgar E. Iglesias
parent
45664345fa
commit
d65f083146
@@ -142,6 +142,10 @@ hello-mipsel: hello-mips.c
|
||||
test-cris:
|
||||
$(MAKE) -C cris check
|
||||
|
||||
# testsuite for the LM32 port.
|
||||
test-lm32:
|
||||
$(MAKE) -C lm32 check
|
||||
|
||||
clean:
|
||||
rm -f *~ *.o test-i386.out test-i386.ref \
|
||||
test-x86_64.log test-x86_64.ref qruncom $(TESTS)
|
||||
|
||||
@@ -0,0 +1,102 @@
|
||||
-include ../../config-host.mak
|
||||
|
||||
CROSS=lm32-elf-
|
||||
|
||||
SIM = qemu-system-lm32
|
||||
SIMFLAGS = -M lm32-evr -nographic -device lm32-sys -net none -kernel
|
||||
|
||||
CC = $(CROSS)gcc
|
||||
AS = $(CROSS)as
|
||||
AS = $(CC) -x assembler
|
||||
SIZE = $(CROSS)size
|
||||
LD = $(CC)
|
||||
OBJCOPY = $(CROSS)objcopy
|
||||
|
||||
LDFLAGS = -Tlinker.ld
|
||||
|
||||
CRT = crt.o
|
||||
TESTCASES += test_add.tst
|
||||
TESTCASES += test_addi.tst
|
||||
TESTCASES += test_and.tst
|
||||
TESTCASES += test_andhi.tst
|
||||
TESTCASES += test_andi.tst
|
||||
TESTCASES += test_b.tst
|
||||
TESTCASES += test_be.tst
|
||||
TESTCASES += test_bg.tst
|
||||
TESTCASES += test_bge.tst
|
||||
TESTCASES += test_bgeu.tst
|
||||
TESTCASES += test_bgu.tst
|
||||
TESTCASES += test_bi.tst
|
||||
TESTCASES += test_bne.tst
|
||||
TESTCASES += test_break.tst
|
||||
TESTCASES += test_bret.tst
|
||||
TESTCASES += test_call.tst
|
||||
TESTCASES += test_calli.tst
|
||||
TESTCASES += test_cmpe.tst
|
||||
TESTCASES += test_cmpei.tst
|
||||
TESTCASES += test_cmpg.tst
|
||||
TESTCASES += test_cmpgi.tst
|
||||
TESTCASES += test_cmpge.tst
|
||||
TESTCASES += test_cmpgei.tst
|
||||
TESTCASES += test_cmpgeu.tst
|
||||
TESTCASES += test_cmpgeui.tst
|
||||
TESTCASES += test_cmpgu.tst
|
||||
TESTCASES += test_cmpgui.tst
|
||||
TESTCASES += test_cmpne.tst
|
||||
TESTCASES += test_cmpnei.tst
|
||||
TESTCASES += test_divu.tst
|
||||
TESTCASES += test_eret.tst
|
||||
TESTCASES += test_lb.tst
|
||||
TESTCASES += test_lbu.tst
|
||||
TESTCASES += test_lh.tst
|
||||
TESTCASES += test_lhu.tst
|
||||
TESTCASES += test_lw.tst
|
||||
TESTCASES += test_modu.tst
|
||||
TESTCASES += test_mul.tst
|
||||
TESTCASES += test_muli.tst
|
||||
TESTCASES += test_nor.tst
|
||||
TESTCASES += test_nori.tst
|
||||
TESTCASES += test_or.tst
|
||||
TESTCASES += test_ori.tst
|
||||
TESTCASES += test_orhi.tst
|
||||
#TESTCASES += test_rcsr.tst
|
||||
TESTCASES += test_ret.tst
|
||||
TESTCASES += test_sb.tst
|
||||
TESTCASES += test_scall.tst
|
||||
TESTCASES += test_sextb.tst
|
||||
TESTCASES += test_sexth.tst
|
||||
TESTCASES += test_sh.tst
|
||||
TESTCASES += test_sl.tst
|
||||
TESTCASES += test_sli.tst
|
||||
TESTCASES += test_sr.tst
|
||||
TESTCASES += test_sri.tst
|
||||
TESTCASES += test_sru.tst
|
||||
TESTCASES += test_srui.tst
|
||||
TESTCASES += test_sub.tst
|
||||
TESTCASES += test_sw.tst
|
||||
#TESTCASES += test_wcsr.tst
|
||||
TESTCASES += test_xnor.tst
|
||||
TESTCASES += test_xnori.tst
|
||||
TESTCASES += test_xor.tst
|
||||
TESTCASES += test_xori.tst
|
||||
|
||||
all: build
|
||||
|
||||
%.o: $(SRC_PATH)/tests/lm32/%.c
|
||||
$(CC) $(CFLAGS) -c $< -o $@
|
||||
|
||||
%.o: $(SRC_PATH)/tests/lm32/%.S
|
||||
$(AS) $(ASFLAGS) -c $< -o $@
|
||||
|
||||
%.tst: %.o macros.inc $(CRT)
|
||||
$(LD) $(LDFLAGS) $(NOSTDFLAGS) $(CRT) $< -o $@
|
||||
|
||||
build: $(CRT) $(TESTCASES)
|
||||
|
||||
check: $(CRT) $(SYS) $(TESTCASES)
|
||||
@for case in $(TESTCASES); do \
|
||||
$(SIM) $(SIMFLAGS) ./$$case; \
|
||||
done
|
||||
|
||||
clean:
|
||||
$(RM) -fr $(TESTCASES) $(CRT)
|
||||
@@ -0,0 +1,84 @@
|
||||
.text
|
||||
.global _start
|
||||
|
||||
_start:
|
||||
_reset_handler:
|
||||
xor r0, r0, r0
|
||||
mvhi r1, hi(_start)
|
||||
ori r1, r1, lo(_start)
|
||||
wcsr eba, r1
|
||||
wcsr deba, r1
|
||||
bi _main
|
||||
nop
|
||||
nop
|
||||
|
||||
_breakpoint_handler:
|
||||
ori r25, r25, 1
|
||||
addi ra, ba, 4
|
||||
ret
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
|
||||
_instruction_bus_error_handler:
|
||||
ori r25, r25, 2
|
||||
addi ra, ea, 4
|
||||
ret
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
|
||||
_watchpoint_handler:
|
||||
ori r25, r25, 4
|
||||
addi ra, ba, 4
|
||||
ret
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
|
||||
_data_bus_error_handler:
|
||||
ori r25, r25, 8
|
||||
addi ra, ea, 4
|
||||
ret
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
|
||||
_divide_by_zero_handler:
|
||||
ori r25, r25, 16
|
||||
addi ra, ea, 4
|
||||
ret
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
|
||||
_interrupt_handler:
|
||||
ori r25, r25, 32
|
||||
addi ra, ea, 4
|
||||
ret
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
|
||||
_system_call_handler:
|
||||
ori r25, r25, 64
|
||||
addi ra, ea, 4
|
||||
ret
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
OUTPUT_FORMAT("elf32-lm32")
|
||||
ENTRY(_start)
|
||||
|
||||
__DYNAMIC = 0;
|
||||
|
||||
MEMORY {
|
||||
ram : ORIGIN = 0x08000000, LENGTH = 0x04000000 /* 64M */
|
||||
}
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
.text :
|
||||
{
|
||||
_ftext = .;
|
||||
*(.text .stub .text.* .gnu.linkonce.t.*)
|
||||
_etext = .;
|
||||
} > ram
|
||||
|
||||
.rodata :
|
||||
{
|
||||
. = ALIGN(4);
|
||||
_frodata = .;
|
||||
*(.rodata .rodata.* .gnu.linkonce.r.*)
|
||||
*(.rodata1)
|
||||
_erodata = .;
|
||||
} > ram
|
||||
|
||||
.data :
|
||||
{
|
||||
. = ALIGN(4);
|
||||
_fdata = .;
|
||||
*(.data .data.* .gnu.linkonce.d.*)
|
||||
*(.data1)
|
||||
_gp = ALIGN(16);
|
||||
*(.sdata .sdata.* .gnu.linkonce.s.*)
|
||||
_edata = .;
|
||||
} > ram
|
||||
|
||||
.bss :
|
||||
{
|
||||
. = ALIGN(4);
|
||||
_fbss = .;
|
||||
*(.dynsbss)
|
||||
*(.sbss .sbss.* .gnu.linkonce.sb.*)
|
||||
*(.scommon)
|
||||
*(.dynbss)
|
||||
*(.bss .bss.* .gnu.linkonce.b.*)
|
||||
*(COMMON)
|
||||
_ebss = .;
|
||||
_end = .;
|
||||
} > ram
|
||||
}
|
||||
|
||||
PROVIDE(_fstack = ORIGIN(ram) + LENGTH(ram) - 4);
|
||||
|
||||
@@ -0,0 +1,79 @@
|
||||
|
||||
.macro test_name name
|
||||
.data
|
||||
tn_\name:
|
||||
.asciz "\name"
|
||||
.text
|
||||
mvhi r13, hi(tn_\name)
|
||||
ori r13, r13, lo(tn_\name)
|
||||
sw (r12+8), r13
|
||||
.endm
|
||||
|
||||
.macro load reg val
|
||||
mvhi \reg, hi(\val)
|
||||
ori \reg, \reg, lo(\val)
|
||||
.endm
|
||||
|
||||
.macro tc_pass
|
||||
mvi r13, 0
|
||||
sw (r12+4), r13
|
||||
.endm
|
||||
|
||||
.macro tc_fail
|
||||
mvi r13, 1
|
||||
sw (r12+4), r13
|
||||
.endm
|
||||
|
||||
.macro check_r3 val
|
||||
mvhi r13, hi(\val)
|
||||
ori r13, r13, lo(\val)
|
||||
be r3, r13, 1f
|
||||
tc_fail
|
||||
bi 2f
|
||||
1:
|
||||
tc_pass
|
||||
2:
|
||||
.endm
|
||||
|
||||
.macro check_mem adr val
|
||||
mvhi r13, hi(\adr)
|
||||
ori r13, r13, lo(\adr)
|
||||
mvhi r14, hi(\val)
|
||||
ori r14, r14, lo(\val)
|
||||
lw r13, (r13+0)
|
||||
be r13, r14, 1f
|
||||
tc_fail
|
||||
bi 2f
|
||||
1:
|
||||
tc_pass
|
||||
2:
|
||||
.endm
|
||||
|
||||
.macro check_excp excp
|
||||
andi r13, r25, \excp
|
||||
bne r13, r0, 1f
|
||||
tc_fail
|
||||
bi 2f
|
||||
1:
|
||||
tc_pass
|
||||
2:
|
||||
.endm
|
||||
|
||||
.macro start
|
||||
.global _main
|
||||
.text
|
||||
_main:
|
||||
mvhi r12, hi(0xffff0000) # base address of test block
|
||||
ori r12, r12, lo(0xffff0000)
|
||||
.endm
|
||||
|
||||
.macro end
|
||||
sw (r12+0), r0
|
||||
1:
|
||||
bi 1b
|
||||
.endm
|
||||
|
||||
# base +
|
||||
# 0 ctrl
|
||||
# 4 pass/fail
|
||||
# 8 ptr to test name
|
||||
@@ -0,0 +1,75 @@
|
||||
.include "macros.inc"
|
||||
|
||||
start
|
||||
|
||||
test_name ADD_1
|
||||
mvi r1, 0
|
||||
mvi r2, 0
|
||||
add r3, r1, r2
|
||||
check_r3 0
|
||||
|
||||
test_name ADD_2
|
||||
mvi r1, 0
|
||||
mvi r2, 1
|
||||
add r3, r1, r2
|
||||
check_r3 1
|
||||
|
||||
test_name ADD_3
|
||||
mvi r1, 1
|
||||
mvi r2, 0
|
||||
add r3, r1, r2
|
||||
check_r3 1
|
||||
|
||||
test_name ADD_4
|
||||
mvi r1, 1
|
||||
mvi r2, -1
|
||||
add r3, r1, r2
|
||||
check_r3 0
|
||||
|
||||
test_name ADD_5
|
||||
mvi r1, -1
|
||||
mvi r2, 1
|
||||
add r3, r1, r2
|
||||
check_r3 0
|
||||
|
||||
test_name ADD_6
|
||||
mvi r1, -1
|
||||
mvi r2, 0
|
||||
add r3, r1, r2
|
||||
check_r3 -1
|
||||
|
||||
test_name ADD_7
|
||||
mvi r1, 0
|
||||
mvi r2, -1
|
||||
add r3, r1, r2
|
||||
check_r3 -1
|
||||
|
||||
test_name ADD_8
|
||||
mvi r3, 2
|
||||
add r3, r3, r3
|
||||
check_r3 4
|
||||
|
||||
test_name ADD_9
|
||||
mvi r1, 4
|
||||
mvi r3, 2
|
||||
add r3, r1, r3
|
||||
check_r3 6
|
||||
|
||||
test_name ADD_10
|
||||
mvi r1, 4
|
||||
mvi r3, 2
|
||||
add r3, r3, r1
|
||||
check_r3 6
|
||||
|
||||
test_name ADD_11
|
||||
mvi r1, 4
|
||||
add r3, r1, r1
|
||||
check_r3 8
|
||||
|
||||
test_name ADD_12
|
||||
load r1 0x12345678
|
||||
load r2 0xabcdef97
|
||||
add r3, r1, r2
|
||||
check_r3 0xbe02460f
|
||||
|
||||
end
|
||||
@@ -0,0 +1,56 @@
|
||||
.include "macros.inc"
|
||||
|
||||
start
|
||||
|
||||
test_name ADDI_1
|
||||
mvi r1, 0
|
||||
addi r3, r1, 0
|
||||
check_r3 0
|
||||
|
||||
test_name ADDI_2
|
||||
mvi r1, 0
|
||||
addi r3, r1, 1
|
||||
check_r3 1
|
||||
|
||||
test_name ADDI_3
|
||||
mvi r1, 1
|
||||
addi r3, r1, 0
|
||||
check_r3 1
|
||||
|
||||
test_name ADDI_4
|
||||
mvi r1, 1
|
||||
addi r3, r1, -1
|
||||
check_r3 0
|
||||
|
||||
test_name ADDI_5
|
||||
mvi r1, -1
|
||||
addi r3, r1, 1
|
||||
check_r3 0
|
||||
|
||||
test_name ADDI_6
|
||||
mvi r1, -1
|
||||
addi r3, r1, 0
|
||||
check_r3 -1
|
||||
|
||||
test_name ADDI_7
|
||||
mvi r1, 0
|
||||
addi r3, r1, -1
|
||||
check_r3 -1
|
||||
|
||||
test_name ADDI_8
|
||||
mvi r3, 4
|
||||
addi r3, r3, 4
|
||||
check_r3 8
|
||||
|
||||
test_name ADDI_9
|
||||
mvi r3, 4
|
||||
addi r3, r3, -4
|
||||
check_r3 0
|
||||
|
||||
test_name ADDI_10
|
||||
mvi r3, 4
|
||||
addi r3, r3, -5
|
||||
check_r3 -1
|
||||
|
||||
end
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
.include "macros.inc"
|
||||
|
||||
start
|
||||
|
||||
test_name AND_1
|
||||
mvi r1, 0
|
||||
mvi r2, 0
|
||||
and r3, r1, r2
|
||||
check_r3 0
|
||||
|
||||
test_name AND_2
|
||||
mvi r1, 0
|
||||
mvi r2, 1
|
||||
and r3, r1, r2
|
||||
check_r3 0
|
||||
|
||||
test_name AND_3
|
||||
mvi r1, 1
|
||||
mvi r2, 1
|
||||
and r3, r1, r2
|
||||
check_r3 1
|
||||
|
||||
test_name AND_4
|
||||
mvi r3, 7
|
||||
and r3, r3, r3
|
||||
check_r3 7
|
||||
|
||||
test_name AND_5
|
||||
mvi r1, 7
|
||||
and r3, r1, r1
|
||||
check_r3 7
|
||||
|
||||
test_name AND_6
|
||||
mvi r1, 7
|
||||
mvi r3, 0
|
||||
and r3, r1, r3
|
||||
check_r3 0
|
||||
|
||||
test_name AND_7
|
||||
load r1 0xaa55aa55
|
||||
load r2 0x55aa55aa
|
||||
and r3, r1, r2
|
||||
check_r3 0
|
||||
|
||||
end
|
||||
@@ -0,0 +1,35 @@
|
||||
.include "macros.inc"
|
||||
|
||||
start
|
||||
|
||||
test_name ANDHI_1
|
||||
mvi r1, 0
|
||||
andhi r3, r1, 0
|
||||
check_r3 0
|
||||
|
||||
test_name ANDHI_2
|
||||
mvi r1, 1
|
||||
andhi r3, r1, 1
|
||||
check_r3 0
|
||||
|
||||
test_name ANDHI_3
|
||||
load r1 0x000f0000
|
||||
andhi r3, r1, 1
|
||||
check_r3 0x00010000
|
||||
|
||||
test_name ANDHI_4
|
||||
load r1 0xffffffff
|
||||
andhi r3, r1, 0xffff
|
||||
check_r3 0xffff0000
|
||||
|
||||
test_name ANDHI_5
|
||||
load r1 0xffffffff
|
||||
andhi r3, r1, 0
|
||||
check_r3 0
|
||||
|
||||
test_name ANDHI_6
|
||||
load r3 0x55aaffff
|
||||
andhi r3, r3, 0xaaaa
|
||||
check_r3 0x00aa0000
|
||||
|
||||
end
|
||||
@@ -0,0 +1,35 @@
|
||||
.include "macros.inc"
|
||||
|
||||
start
|
||||
|
||||
test_name ANDI_1
|
||||
mvi r1, 0
|
||||
andi r3, r1, 0
|
||||
check_r3 0
|
||||
|
||||
test_name ANDI_2
|
||||
mvi r1, 1
|
||||
andi r3, r1, 1
|
||||
check_r3 1
|
||||
|
||||
test_name ANDI_3
|
||||
load r1 0x000f0000
|
||||
andi r3, r1, 1
|
||||
check_r3 0
|
||||
|
||||
test_name ANDI_4
|
||||
load r1 0xffffffff
|
||||
andi r3, r1, 0xffff
|
||||
check_r3 0xffff
|
||||
|
||||
test_name ANDI_5
|
||||
load r1 0xffffffff
|
||||
andi r3, r1, 0
|
||||
check_r3 0
|
||||
|
||||
test_name ANDI_6
|
||||
load r3 0xffff55aa
|
||||
andi r3, r3, 0xaaaa
|
||||
check_r3 0x000000aa
|
||||
|
||||
end
|
||||
@@ -0,0 +1,13 @@
|
||||
.include "macros.inc"
|
||||
|
||||
start
|
||||
|
||||
test_name B_1
|
||||
load r1 jump
|
||||
b r1
|
||||
tc_fail
|
||||
end
|
||||
|
||||
jump:
|
||||
tc_pass
|
||||
end
|
||||
@@ -0,0 +1,48 @@
|
||||
.include "macros.inc"
|
||||
|
||||
start
|
||||
|
||||
test_name BE_1
|
||||
mvi r1, 0
|
||||
mvi r2, 0
|
||||
be r1, r2, 1f
|
||||
tc_fail
|
||||
bi 2f
|
||||
1:
|
||||
tc_pass
|
||||
2:
|
||||
|
||||
test_name BE_2
|
||||
mvi r1, 1
|
||||
mvi r2, 0
|
||||
be r1, r2, 1f
|
||||
tc_pass
|
||||
bi 2f
|
||||
1:
|
||||
tc_fail
|
||||
2:
|
||||
|
||||
test_name BE_3
|
||||
mvi r1, 0
|
||||
mvi r2, 1
|
||||
be r1, r2, 1f
|
||||
tc_pass
|
||||
bi 2f
|
||||
1:
|
||||
tc_fail
|
||||
2:
|
||||
|
||||
bi 2f
|
||||
1:
|
||||
tc_pass
|
||||
bi 3f
|
||||
2:
|
||||
test_name BE_4
|
||||
mvi r1, 1
|
||||
mvi r2, 1
|
||||
be r1, r2, 1b
|
||||
tc_fail
|
||||
3:
|
||||
|
||||
end
|
||||
|
||||
@@ -0,0 +1,78 @@
|
||||
.include "macros.inc"
|
||||
|
||||
start
|
||||
|
||||
test_name BG_1
|
||||
mvi r1, 0
|
||||
mvi r2, 0
|
||||
bg r1, r2, 1f
|
||||
tc_pass
|
||||
bi 2f
|
||||
1:
|
||||
tc_fail
|
||||
2:
|
||||
|
||||
test_name BG_2
|
||||
mvi r1, 1
|
||||
mvi r2, 0
|
||||
bg r1, r2, 1f
|
||||
tc_fail
|
||||
bi 2f
|
||||
1:
|
||||
tc_pass
|
||||
2:
|
||||
|
||||
test_name BG_3
|
||||
mvi r1, 0
|
||||
mvi r2, 1
|
||||
bg r1, r2, 1f
|
||||
tc_pass
|
||||
bi 2f
|
||||
1:
|
||||
tc_fail
|
||||
2:
|
||||
|
||||
test_name BG_4
|
||||
mvi r1, 0
|
||||
mvi r2, -1
|
||||
bg r1, r2, 1f
|
||||
tc_fail
|
||||
bi 2f
|
||||
1:
|
||||
tc_pass
|
||||
2:
|
||||
|
||||
test_name BG_5
|
||||
mvi r1, -1
|
||||
mvi r2, 0
|
||||
bg r1, r2, 1f
|
||||
tc_pass
|
||||
bi 2f
|
||||
1:
|
||||
tc_fail
|
||||
2:
|
||||
|
||||
test_name BG_6
|
||||
mvi r1, -1
|
||||
mvi r2, -1
|
||||
bg r1, r2, 1f
|
||||
tc_pass
|
||||
bi 2f
|
||||
1:
|
||||
tc_fail
|
||||
2:
|
||||
|
||||
bi 2f
|
||||
1:
|
||||
tc_pass
|
||||
bi 3f
|
||||
2:
|
||||
test_name BG_7
|
||||
mvi r1, 1
|
||||
mvi r2, 0
|
||||
bg r1, r2, 1b
|
||||
tc_fail
|
||||
3:
|
||||
|
||||
end
|
||||
|
||||
@@ -0,0 +1,78 @@
|
||||
.include "macros.inc"
|
||||
|
||||
start
|
||||
|
||||
test_name BGE_1
|
||||
mvi r1, 0
|
||||
mvi r2, 0
|
||||
bge r1, r2, 1f
|
||||
tc_fail
|
||||
bi 2f
|
||||
1:
|
||||
tc_pass
|
||||
2:
|
||||
|
||||
test_name BGE_2
|
||||
mvi r1, 1
|
||||
mvi r2, 0
|
||||
bge r1, r2, 1f
|
||||
tc_fail
|
||||
bi 2f
|
||||
1:
|
||||
tc_pass
|
||||
2:
|
||||
|
||||
test_name BGE_3
|
||||
mvi r1, 0
|
||||
mvi r2, 1
|
||||
bge r1, r2, 1f
|
||||
tc_pass
|
||||
bi 2f
|
||||
1:
|
||||
tc_fail
|
||||
2:
|
||||
|
||||
test_name BGE_4
|
||||
mvi r1, 0
|
||||
mvi r2, -1
|
||||
bge r1, r2, 1f
|
||||
tc_fail
|
||||
bi 2f
|
||||
1:
|
||||
tc_pass
|
||||
2:
|
||||
|
||||
test_name BGE_5
|
||||
mvi r1, -1
|
||||
mvi r2, 0
|
||||
bge r1, r2, 1f
|
||||
tc_pass
|
||||
bi 2f
|
||||
1:
|
||||
tc_fail
|
||||
2:
|
||||
|
||||
test_name BGE_6
|
||||
mvi r1, -1
|
||||
mvi r2, -1
|
||||
bge r1, r2, 1f
|
||||
tc_fail
|
||||
bi 2f
|
||||
1:
|
||||
tc_pass
|
||||
2:
|
||||
|
||||
bi 2f
|
||||
1:
|
||||
tc_pass
|
||||
bi 3f
|
||||
2:
|
||||
test_name BGE_7
|
||||
mvi r1, 1
|
||||
mvi r2, 0
|
||||
bge r1, r2, 1b
|
||||
tc_fail
|
||||
3:
|
||||
|
||||
end
|
||||
|
||||
@@ -0,0 +1,78 @@
|
||||
.include "macros.inc"
|
||||
|
||||
start
|
||||
|
||||
test_name BGEU_1
|
||||
mvi r1, 0
|
||||
mvi r2, 0
|
||||
bgeu r1, r2, 1f
|
||||
tc_fail
|
||||
bi 2f
|
||||
1:
|
||||
tc_pass
|
||||
2:
|
||||
|
||||
test_name BGEU_2
|
||||
mvi r1, 1
|
||||
mvi r2, 0
|
||||
bgeu r1, r2, 1f
|
||||
tc_fail
|
||||
bi 2f
|
||||
1:
|
||||
tc_pass
|
||||
2:
|
||||
|
||||
test_name BGEU_3
|
||||
mvi r1, 0
|
||||
mvi r2, 1
|
||||
bgeu r1, r2, 1f
|
||||
tc_pass
|
||||
bi 2f
|
||||
1:
|
||||
tc_fail
|
||||
2:
|
||||
|
||||
test_name BGEU_4
|
||||
mvi r1, 0
|
||||
mvi r2, -1
|
||||
bgeu r1, r2, 1f
|
||||
tc_pass
|
||||
bi 2f
|
||||
1:
|
||||
tc_fail
|
||||
2:
|
||||
|
||||
test_name BGEU_5
|
||||
mvi r1, -1
|
||||
mvi r2, 0
|
||||
bgeu r1, r2, 1f
|
||||
tc_fail
|
||||
bi 2f
|
||||
1:
|
||||
tc_pass
|
||||
2:
|
||||
|
||||
test_name BGEU_6
|
||||
mvi r1, -1
|
||||
mvi r2, -1
|
||||
bgeu r1, r2, 1f
|
||||
tc_fail
|
||||
bi 2f
|
||||
1:
|
||||
tc_pass
|
||||
2:
|
||||
|
||||
bi 2f
|
||||
1:
|
||||
tc_pass
|
||||
bi 3f
|
||||
2:
|
||||
test_name BGEU_7
|
||||
mvi r1, 1
|
||||
mvi r2, 0
|
||||
bgeu r1, r2, 1b
|
||||
tc_fail
|
||||
3:
|
||||
|
||||
end
|
||||
|
||||
@@ -0,0 +1,78 @@
|
||||
.include "macros.inc"
|
||||
|
||||
start
|
||||
|
||||
test_name BGU_1
|
||||
mvi r1, 0
|
||||
mvi r2, 0
|
||||
bgu r1, r2, 1f
|
||||
tc_pass
|
||||
bi 2f
|
||||
1:
|
||||
tc_fail
|
||||
2:
|
||||
|
||||
test_name BGU_2
|
||||
mvi r1, 1
|
||||
mvi r2, 0
|
||||
bgu r1, r2, 1f
|
||||
tc_fail
|
||||
bi 2f
|
||||
1:
|
||||
tc_pass
|
||||
2:
|
||||
|
||||
test_name BGU_3
|
||||
mvi r1, 0
|
||||
mvi r2, 1
|
||||
bgu r1, r2, 1f
|
||||
tc_pass
|
||||
bi 2f
|
||||
1:
|
||||
tc_fail
|
||||
2:
|
||||
|
||||
test_name BGU_4
|
||||
mvi r1, 0
|
||||
mvi r2, -1
|
||||
bgu r1, r2, 1f
|
||||
tc_pass
|
||||
bi 2f
|
||||
1:
|
||||
tc_fail
|
||||
2:
|
||||
|
||||
test_name BGU_5
|
||||
mvi r1, -1
|
||||
mvi r2, 0
|
||||
bgu r1, r2, 1f
|
||||
tc_fail
|
||||
bi 2f
|
||||
1:
|
||||
tc_pass
|
||||
2:
|
||||
|
||||
test_name BGU_6
|
||||
mvi r1, -1
|
||||
mvi r2, -1
|
||||
bgu r1, r2, 1f
|
||||
tc_pass
|
||||
bi 2f
|
||||
1:
|
||||
tc_fail
|
||||
2:
|
||||
|
||||
bi 2f
|
||||
1:
|
||||
tc_pass
|
||||
bi 3f
|
||||
2:
|
||||
test_name BGU_7
|
||||
mvi r1, 1
|
||||
mvi r2, 0
|
||||
bgu r1, r2, 1b
|
||||
tc_fail
|
||||
3:
|
||||
|
||||
end
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
.include "macros.inc"
|
||||
|
||||
start
|
||||
|
||||
test_name BI_1
|
||||
bi jump
|
||||
tc_fail
|
||||
end
|
||||
|
||||
jump_back:
|
||||
tc_pass
|
||||
end
|
||||
|
||||
jump:
|
||||
tc_pass
|
||||
|
||||
test_name BI_2
|
||||
bi jump_back
|
||||
tc_fail
|
||||
|
||||
end
|
||||
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
.include "macros.inc"
|
||||
|
||||
start
|
||||
|
||||
test_name BNE_1
|
||||
mvi r1, 0
|
||||
mvi r2, 0
|
||||
bne r1, r2, 1f
|
||||
tc_pass
|
||||
bi 2f
|
||||
1:
|
||||
tc_fail
|
||||
2:
|
||||
|
||||
test_name BNE_2
|
||||
mvi r1, 1
|
||||
mvi r2, 0
|
||||
bne r1, r2, 1f
|
||||
tc_fail
|
||||
bi 2f
|
||||
1:
|
||||
tc_pass
|
||||
2:
|
||||
|
||||
test_name BNE_3
|
||||
mvi r1, 0
|
||||
mvi r2, 1
|
||||
bne r1, r2, 1f
|
||||
tc_fail
|
||||
bi 2f
|
||||
1:
|
||||
tc_pass
|
||||
2:
|
||||
|
||||
bi 2f
|
||||
1:
|
||||
tc_fail
|
||||
bi 3f
|
||||
2:
|
||||
test_name BNE_4
|
||||
mvi r1, 1
|
||||
mvi r2, 1
|
||||
bne r1, r2, 1b
|
||||
tc_pass
|
||||
3:
|
||||
|
||||
end
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
.include "macros.inc"
|
||||
|
||||
start
|
||||
|
||||
test_name BREAK_1
|
||||
mvi r1, 1
|
||||
wcsr IE, r1
|
||||
insn:
|
||||
break
|
||||
check_excp 1
|
||||
|
||||
test_name BREAK_2
|
||||
mv r3, ba
|
||||
check_r3 insn
|
||||
|
||||
test_name BREAK_3
|
||||
rcsr r3, IE
|
||||
check_r3 4
|
||||
|
||||
end
|
||||
@@ -0,0 +1,38 @@
|
||||
.include "macros.inc"
|
||||
|
||||
start
|
||||
|
||||
test_name BRET_1
|
||||
mvi r1, 4
|
||||
wcsr IE, r1
|
||||
load ba mark
|
||||
bret
|
||||
tc_fail
|
||||
bi 1f
|
||||
|
||||
mark:
|
||||
tc_pass
|
||||
|
||||
1:
|
||||
test_name BRET_2
|
||||
rcsr r3, IE
|
||||
check_r3 5
|
||||
|
||||
test_name BRET_3
|
||||
mvi r1, 0
|
||||
wcsr IE, r1
|
||||
load ba mark2
|
||||
bret
|
||||
tc_fail
|
||||
bi 1f
|
||||
|
||||
mark2:
|
||||
tc_pass
|
||||
|
||||
1:
|
||||
test_name BRET_4
|
||||
rcsr r3, IE
|
||||
check_r3 0
|
||||
|
||||
end
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user