mirror of
https://gitlab.com/qemu-project/qemu
synced 2024-11-05 20:35:44 +00: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:
parent
45664345fa
commit
d65f083146
67 changed files with 3048 additions and 0 deletions
|
@ -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)
|
||||
|
|
102
tests/lm32/Makefile
Normal file
102
tests/lm32/Makefile
Normal file
|
@ -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)
|
84
tests/lm32/crt.S
Normal file
84
tests/lm32/crt.S
Normal file
|
@ -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
|
||||
|
55
tests/lm32/linker.ld
Normal file
55
tests/lm32/linker.ld
Normal file
|
@ -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);
|
||||
|
79
tests/lm32/macros.inc
Normal file
79
tests/lm32/macros.inc
Normal file
|
@ -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
|
75
tests/lm32/test_add.S
Normal file
75
tests/lm32/test_add.S
Normal file
|
@ -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
|
56
tests/lm32/test_addi.S
Normal file
56
tests/lm32/test_addi.S
Normal file
|
@ -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
|
||||
|
45
tests/lm32/test_and.S
Normal file
45
tests/lm32/test_and.S
Normal file
|
@ -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
|
35
tests/lm32/test_andhi.S
Normal file
35
tests/lm32/test_andhi.S
Normal file
|
@ -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
|
35
tests/lm32/test_andi.S
Normal file
35
tests/lm32/test_andi.S
Normal file
|
@ -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
|
13
tests/lm32/test_b.S
Normal file
13
tests/lm32/test_b.S
Normal file
|
@ -0,0 +1,13 @@
|
|||
.include "macros.inc"
|
||||
|
||||
start
|
||||
|
||||
test_name B_1
|
||||
load r1 jump
|
||||
b r1
|
||||
tc_fail
|
||||
end
|
||||
|
||||
jump:
|
||||
tc_pass
|
||||
end
|
48
tests/lm32/test_be.S
Normal file
48
tests/lm32/test_be.S
Normal file
|
@ -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
|
||||
|
78
tests/lm32/test_bg.S
Normal file
78
tests/lm32/test_bg.S
Normal file
|
@ -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
|
||||
|
78
tests/lm32/test_bge.S
Normal file
78
tests/lm32/test_bge.S
Normal file
|
@ -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
|
||||
|
78
tests/lm32/test_bgeu.S
Normal file
78
tests/lm32/test_bgeu.S
Normal file
|
@ -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
|
||||
|
78
tests/lm32/test_bgu.S
Normal file
78
tests/lm32/test_bgu.S
Normal file
|
@ -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
|
||||
|
23
tests/lm32/test_bi.S
Normal file
23
tests/lm32/test_bi.S
Normal file
|
@ -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
|
||||
|
||||
|
48
tests/lm32/test_bne.S
Normal file
48
tests/lm32/test_bne.S
Normal file
|
@ -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
|
||||
|
20
tests/lm32/test_break.S
Normal file
20
tests/lm32/test_break.S
Normal file
|
@ -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
|
38
tests/lm32/test_bret.S
Normal file
38
tests/lm32/test_bret.S
Normal file
|
@ -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
|
||||
|
16
tests/lm32/test_call.S
Normal file
16
tests/lm32/test_call.S
Normal file
|
@ -0,0 +1,16 @@
|
|||
.include "macros.inc"
|
||||
|
||||
start
|
||||
|
||||
test_name CALL_1
|
||||
load r1 mark
|
||||
call r1
|
||||
return:
|
||||
|
||||
tc_fail
|
||||
end
|
||||
|
||||
mark:
|
||||
mv r3, ra
|
||||
check_r3 return
|
||||
end
|
15
tests/lm32/test_calli.S
Normal file
15
tests/lm32/test_calli.S
Normal file
|
@ -0,0 +1,15 @@
|
|||
.include "macros.inc"
|
||||
|
||||
start
|
||||
|
||||
test_name CALLI_1
|
||||
calli mark
|
||||
return:
|
||||
|
||||
tc_fail
|
||||
end
|
||||
|
||||
mark:
|
||||
mv r3, ra
|
||||
check_r3 return
|
||||
end
|
40
tests/lm32/test_cmpe.S
Normal file
40
tests/lm32/test_cmpe.S
Normal file
|
@ -0,0 +1,40 @@
|
|||
.include "macros.inc"
|
||||
|
||||
start
|
||||
|
||||
test_name CMPE_1
|
||||
mvi r1, 0
|
||||
mvi r2, 0
|
||||
cmpe r3, r1, r2
|
||||
check_r3 1
|
||||
|
||||
test_name CMPE_2
|
||||
mvi r1, 0
|
||||
mvi r2, 1
|
||||
cmpe r3, r1, r2
|
||||
check_r3 0
|
||||
|
||||
test_name CMPE_3
|
||||
mvi r1, 1
|
||||
mvi r2, 0
|
||||
cmpe r3, r1, r2
|
||||
check_r3 0
|
||||
|
||||
test_name CMPE_4
|
||||
mvi r3, 0
|
||||
mvi r2, 1
|
||||
cmpe r3, r3, r2
|
||||
check_r3 0
|
||||
|
||||
test_name CMPE_5
|
||||
mvi r3, 0
|
||||
mvi r2, 0
|
||||
cmpe r3, r3, r2
|
||||
check_r3 1
|
||||
|
||||
test_name CMPE_6
|
||||
mvi r3, 0
|
||||
cmpe r3, r3, r3
|
||||
check_r3 1
|
||||
|
||||
end
|
35
tests/lm32/test_cmpei.S
Normal file
35
tests/lm32/test_cmpei.S
Normal file
|
@ -0,0 +1,35 @@
|
|||
.include "macros.inc"
|
||||
|
||||
start
|
||||
|
||||
test_name CMPEI_1
|
||||
mvi r1, 0
|
||||
cmpei r3, r1, 0
|
||||
check_r3 1
|
||||
|
||||
test_name CMPEI_2
|
||||
mvi r1, 0
|
||||
cmpei r3, r1, 1
|
||||
check_r3 0
|
||||
|
||||
test_name CMPEI_3
|
||||
mvi r1, 1
|
||||
cmpei r3, r1, 0
|
||||
check_r3 0
|
||||
|
||||
test_name CMPEI_4
|
||||
load r1 0xffffffff
|
||||
cmpei r3, r1, -1
|
||||
check_r3 1
|
||||
|
||||
test_name CMPEI_5
|
||||
mvi r3, 0
|
||||
cmpei r3, r3, 0
|
||||
check_r3 1
|
||||
|
||||
test_name CMPEI_6
|
||||
mvi r3, 0
|
||||
cmpei r3, r3, 1
|
||||
check_r3 0
|
||||
|
||||
end
|
64
tests/lm32/test_cmpg.S
Normal file
64
tests/lm32/test_cmpg.S
Normal file
|
@ -0,0 +1,64 @@
|
|||
.include "macros.inc"
|
||||
|
||||
start
|
||||
|
||||
test_name CMPG_1
|
||||
mvi r1, 0
|
||||
mvi r2, 0
|
||||
cmpg r3, r1, r2
|
||||
check_r3 0
|
||||
|
||||
test_name CMPG_2
|
||||
mvi r1, 0
|
||||
mvi r2, 1
|
||||
cmpg r3, r1, r2
|
||||
check_r3 0
|
||||
|
||||
test_name CMPG_3
|
||||
mvi r1, 1
|
||||
mvi r2, 0
|
||||
cmpg r3, r1, r2
|
||||
check_r3 1
|
||||
|
||||
test_name CMPG_4
|
||||
mvi r1, 1
|
||||
mvi r2, 1
|
||||
cmpg r3, r1, r2
|
||||
check_r3 0
|
||||
|
||||
test_name CMPG_5
|
||||
mvi r1, 0
|
||||
mvi r2, -1
|
||||
cmpg r3, r1, r2
|
||||
check_r3 1
|
||||
|
||||
test_name CMPG_6
|
||||
mvi r1, -1
|
||||
mvi r2, 0
|
||||
cmpg r3, r1, r2
|
||||
check_r3 0
|
||||
|
||||
test_name CMPG_7
|
||||
mvi r1, -1
|
||||
mvi r2, -1
|
||||
cmpg r3, r1, r2
|
||||
check_r3 0
|
||||
|
||||
test_name CMPG_8
|
||||
mvi r3, 0
|
||||
mvi r2, 1
|
||||
cmpg r3, r3, r2
|
||||
check_r3 0
|
||||
|
||||
test_name CMPG_9
|
||||
mvi r3, 1
|
||||
mvi r2, 0
|
||||
cmpg r3, r3, r2
|
||||
check_r3 1
|
||||
|
||||
test_name CMPG_10
|
||||
mvi r3, 0
|
||||
cmpg r3, r3, r3
|
||||
check_r3 0
|
||||
|
||||
end
|
64
tests/lm32/test_cmpge.S
Normal file
64
tests/lm32/test_cmpge.S
Normal file
|
@ -0,0 +1,64 @@
|
|||
.include "macros.inc"
|
||||
|
||||
start
|
||||
|
||||
test_name CMPGE_1
|
||||
mvi r1, 0
|
||||
mvi r2, 0
|
||||
cmpge r3, r1, r2
|
||||
check_r3 1
|
||||
|
||||
test_name CMPGE_2
|
||||
mvi r1, 0
|
||||
mvi r2, 1
|
||||
cmpge r3, r1, r2
|
||||
check_r3 0
|
||||
|
||||
test_name CMPGE_3
|
||||
mvi r1, 1
|
||||
mvi r2, 0
|
||||
cmpge r3, r1, r2
|
||||
check_r3 1
|
||||
|
||||
test_name CMPGE_4
|
||||
mvi r1, 1
|
||||
mvi r2, 1
|
||||
cmpge r3, r1, r2
|
||||
check_r3 1
|
||||
|
||||
test_name CMPGE_5
|
||||
mvi r1, 0
|
||||
mvi r2, -1
|
||||
cmpge r3, r1, r2
|
||||
check_r3 1
|
||||
|
||||
test_name CMPGE_6
|
||||
mvi r1, -1
|
||||
mvi r2, 0
|
||||
cmpge r3, r1, r2
|
||||
check_r3 0
|
||||
|
||||
test_name CMPGE_7
|
||||
mvi r1, -1
|
||||
mvi r2, -1
|
||||
cmpge r3, r1, r2
|
||||
check_r3 1
|
||||
|
||||
test_name CMPGE_8
|
||||
mvi r3, 0
|
||||
mvi r2, 1
|
||||
cmpge r3, r3, r2
|
||||
check_r3 0
|
||||
|
||||
test_name CMPGE_9
|
||||
mvi r3, 1
|
||||
mvi r2, 0
|
||||
cmpge r3, r3, r2
|
||||
check_r3 1
|
||||
|
||||
test_name CMPGE_10
|
||||
mvi r3, 0
|
||||
cmpge r3, r3, r3
|
||||
check_r3 1
|
||||
|
||||
end
|
55
tests/lm32/test_cmpgei.S
Normal file
55
tests/lm32/test_cmpgei.S
Normal file
|
@ -0,0 +1,55 @@
|
|||
.include "macros.inc"
|
||||
|
||||
start
|
||||
|
||||
test_name CMPGEI_1
|
||||
mvi r1, 0
|
||||
cmpgei r3, r1, 0
|
||||
check_r3 1
|
||||
|
||||
test_name CMPGEI_2
|
||||
mvi r1, 0
|
||||
cmpgei r3, r1, 1
|
||||
check_r3 0
|
||||
|
||||
test_name CMPGEI_3
|
||||
mvi r1, 1
|
||||
cmpgei r3, r1, 0
|
||||
check_r3 1
|
||||
|
||||
test_name CMPGEI_4
|
||||
mvi r1, 1
|
||||
cmpgei r3, r1, 1
|
||||
check_r3 1
|
||||
|
||||
test_name CMPGEI_5
|
||||
mvi r1, 0
|
||||
cmpgei r3, r1, -1
|
||||
check_r3 1
|
||||
|
||||
test_name CMPGEI_6
|
||||
mvi r1, -1
|
||||
cmpgei r3, r1, 0
|
||||
check_r3 0
|
||||
|
||||
test_name CMPGEI_7
|
||||
mvi r1, -1
|
||||
cmpgei r3, r1, -1
|
||||
check_r3 1
|
||||
|
||||
test_name CMPGEI_8
|
||||
mvi r3, 0
|
||||
cmpgei r3, r3, 1
|
||||
check_r3 0
|
||||
|
||||
test_name CMPGEI_9
|
||||
mvi r3, 1
|
||||
cmpgei r3, r3, 0
|
||||
check_r3 1
|
||||
|
||||
test_name CMPGEI_10
|
||||
mvi r3, 0
|
||||
cmpgei r3, r3, 0
|
||||
check_r3 1
|
||||
|
||||
end
|
64
tests/lm32/test_cmpgeu.S
Normal file
64
tests/lm32/test_cmpgeu.S
Normal file
|
@ -0,0 +1,64 @@
|
|||
.include "macros.inc"
|
||||
|
||||
start
|
||||
|
||||
test_name CMPGEU_1
|
||||
mvi r1, 0
|
||||
mvi r2, 0
|
||||
cmpgeu r3, r1, r2
|
||||
check_r3 1
|
||||
|
||||
test_name CMPGEU_2
|
||||
mvi r1, 0
|
||||
mvi r2, 1
|
||||
cmpgeu r3, r1, r2
|
||||
check_r3 0
|
||||
|
||||
test_name CMPGEU_3
|
||||
mvi r1, 1
|
||||
mvi r2, 0
|
||||
cmpgeu r3, r1, r2
|
||||
check_r3 1
|
||||
|
||||
test_name CMPGEU_4
|
||||
mvi r1, 1
|
||||
mvi r2, 1
|
||||
cmpgeu r3, r1, r2
|
||||
check_r3 1
|
||||
|
||||
test_name CMPGEU_5
|
||||
mvi r1, 0
|
||||
mvi r2, -1
|
||||
cmpgeu r3, r1, r2
|
||||
check_r3 0
|
||||
|
||||
test_name CMPGEU_6
|
||||
mvi r1, -1
|
||||
mvi r2, 0
|
||||
cmpgeu r3, r1, r2
|
||||
check_r3 1
|
||||
|
||||
test_name CMPGEU_7
|
||||
mvi r1, -1
|
||||
mvi r2, -1
|
||||
cmpgeu r3, r1, r2
|
||||
check_r3 1
|
||||
|
||||
test_name CMPGEU_8
|
||||
mvi r3, 0
|
||||
mvi r2, 1
|
||||
cmpgeu r3, r3, r2
|
||||
check_r3 0
|
||||
|
||||
test_name CMPGEU_9
|
||||
mvi r3, 1
|
||||
mvi r2, 0
|
||||
cmpgeu r3, r3, r2
|
||||
check_r3 1
|
||||
|
||||
test_name CMPGEU_10
|
||||
mvi r3, 0
|
||||
cmpgeu r3, r3, r3
|
||||
check_r3 1
|
||||
|
||||
end
|
55
tests/lm32/test_cmpgeui.S
Normal file
55
tests/lm32/test_cmpgeui.S
Normal file
|
@ -0,0 +1,55 @@
|
|||
.include "macros.inc"
|
||||
|
||||
start
|
||||
|
||||
test_name CMPGEUI_1
|
||||
mvi r1, 0
|
||||
cmpgeui r3, r1, 0
|
||||
check_r3 1
|
||||
|
||||
test_name CMPGEUI_2
|
||||
mvi r1, 0
|
||||
cmpgeui r3, r1, 1
|
||||
check_r3 0
|
||||
|
||||
test_name CMPGEUI_3
|
||||
mvi r1, 1
|
||||
cmpgeui r3, r1, 0
|
||||
check_r3 1
|
||||
|
||||
test_name CMPGEUI_4
|
||||
mvi r1, 1
|
||||
cmpgeui r3, r1, 1
|
||||
check_r3 1
|
||||
|
||||
test_name CMPGEUI_5
|
||||
mvi r1, 0
|
||||
cmpgeui r3, r1, 0xffff
|
||||
check_r3 0
|
||||
|
||||
test_name CMPGEUI_6
|
||||
mvi r1, -1
|
||||
cmpgeui r3, r1, 0
|
||||
check_r3 1
|
||||
|
||||
test_name CMPGEUI_7
|
||||
mvi r1, -1
|
||||
cmpgeui r3, r1, 0xffff
|
||||
check_r3 1
|
||||
|
||||
test_name CMPGEUI_8
|
||||
mvi r3, 0
|
||||
cmpgeui r3, r3, 1
|
||||
check_r3 0
|
||||
|
||||
test_name CMPGEUI_9
|
||||
mvi r3, 1
|
||||
cmpgeui r3, r3, 0
|
||||
check_r3 1
|
||||
|
||||
test_name CMPGEUI_10
|
||||
mvi r3, 0
|
||||
cmpgeui r3, r3, 0
|
||||
check_r3 1
|
||||
|
||||
end
|
55
tests/lm32/test_cmpgi.S
Normal file
55
tests/lm32/test_cmpgi.S
Normal file
|
@ -0,0 +1,55 @@
|
|||
.include "macros.inc"
|
||||
|
||||
start
|
||||
|
||||
test_name CMPGI_1
|
||||
mvi r1, 0
|
||||
cmpgi r3, r1, 0
|
||||
check_r3 0
|
||||
|
||||
test_name CMPGI_2
|
||||
mvi r1, 0
|
||||
cmpgi r3, r1, 1
|
||||
check_r3 0
|
||||
|
||||
test_name CMPGI_3
|
||||
mvi r1, 1
|
||||
cmpgi r3, r1, 0
|
||||
check_r3 1
|
||||
|
||||
test_name CMPGI_4
|
||||
mvi r1, 1
|
||||
cmpgi r3, r1, 1
|
||||
check_r3 0
|
||||
|
||||
test_name CMPGI_5
|
||||
mvi r1, 0
|
||||
cmpgi r3, r1, -1
|
||||
check_r3 1
|
||||
|
||||
test_name CMPGI_6
|
||||
mvi r1, -1
|
||||
cmpgi r3, r1, 0
|
||||
check_r3 0
|
||||
|
||||
test_name CMPGI_7
|
||||
mvi r1, -1
|
||||
cmpgi r3, r1, -1
|
||||
check_r3 0
|
||||
|
||||
test_name CMPGI_8
|
||||
mvi r3, 0
|
||||
cmpgi r3, r3, 1
|
||||
check_r3 0
|
||||
|
||||
test_name CMPGI_9
|
||||
mvi r3, 1
|
||||
cmpgi r3, r3, 0
|
||||
check_r3 1
|
||||
|
||||
test_name CMPGI_10
|
||||
mvi r3, 0
|
||||
cmpgi r3, r3, 0
|
||||
check_r3 0
|
||||
|
||||
end
|
64
tests/lm32/test_cmpgu.S
Normal file
64
tests/lm32/test_cmpgu.S
Normal file
|
@ -0,0 +1,64 @@
|
|||
.include "macros.inc"
|
||||
|
||||
start
|
||||
|
||||
test_name CMPGU_1
|
||||
mvi r1, 0
|
||||
mvi r2, 0
|
||||
cmpgu r3, r1, r2
|
||||
check_r3 0
|
||||
|
||||
test_name CMPGU_2
|
||||
mvi r1, 0
|
||||
mvi r2, 1
|
||||
cmpgu r3, r1, r2
|
||||
check_r3 0
|
||||
|
||||
test_name CMPGU_3
|
||||
mvi r1, 1
|
||||
mvi r2, 0
|
||||
cmpgu r3, r1, r2
|
||||
check_r3 1
|
||||
|
||||
test_name CMPGU_4
|
||||
mvi r1, 1
|
||||
mvi r2, 1
|
||||
cmpgu r3, r1, r2
|
||||
check_r3 0
|
||||
|
||||
test_name CMPGU_5
|
||||
mvi r1, 0
|
||||
mvi r2, -1
|
||||
cmpgu r3, r1, r2
|
||||
check_r3 0
|
||||
|
||||
test_name CMPGU_6
|
||||
mvi r1, -1
|
||||
mvi r2, 0
|
||||
cmpgu r3, r1, r2
|
||||
check_r3 1
|
||||
|
||||
test_name CMPGU_7
|
||||
mvi r1, -1
|
||||
mvi r2, -1
|
||||
cmpgu r3, r1, r2
|
||||
check_r3 0
|
||||
|
||||
test_name CMPGU_8
|
||||
mvi r3, 0
|
||||
mvi r2, 1
|
||||
cmpgu r3, r3, r2
|
||||
check_r3 0
|
||||
|
||||
test_name CMPGU_9
|
||||
mvi r3, 1
|
||||
mvi r2, 0
|
||||
cmpgu r3, r3, r2
|
||||
check_r3 1
|
||||
|
||||
test_name CMPGU_10
|
||||
mvi r3, 0
|
||||
cmpgu r3, r3, r3
|
||||
check_r3 0
|
||||
|
||||
end
|
55
tests/lm32/test_cmpgui.S
Normal file
55
tests/lm32/test_cmpgui.S
Normal file
|
@ -0,0 +1,55 @@
|
|||
.include "macros.inc"
|
||||
|
||||
start
|
||||
|
||||
test_name CMPGUI_1
|
||||
mvi r1, 0
|
||||
cmpgui r3, r1, 0
|
||||
check_r3 0
|
||||
|
||||
test_name CMPGUI_2
|
||||
mvi r1, 0
|
||||
cmpgui r3, r1, 1
|
||||
check_r3 0
|
||||
|
||||
test_name CMPGUI_3
|
||||
mvi r1, 1
|
||||
cmpgui r3, r1, 0
|
||||
check_r3 1
|
||||
|
||||
test_name CMPGUI_4
|
||||
mvi r1, 1
|
||||
cmpgui r3, r1, 1
|
||||
check_r3 0
|
||||
|
||||
test_name CMPGUI_5
|
||||
mvi r1, 0
|
||||
cmpgui r3, r1, 0xffff
|
||||
check_r3 0
|
||||
|
||||
test_name CMPGUI_6
|
||||
mvi r1, -1
|
||||
cmpgui r3, r1, 0
|
||||
check_r3 1
|
||||
|
||||
test_name CMPGUI_7
|
||||
mvi r1, -1
|
||||
cmpgui r3, r1, 0xffff
|
||||
check_r3 0
|
||||
|
||||
test_name CMPGUI_8
|
||||
mvi r3, 0
|
||||
cmpgui r3, r3, 1
|
||||
check_r3 0
|
||||
|
||||
test_name CMPGUI_9
|
||||
mvi r3, 1
|
||||
cmpgui r3, r3, 0
|
||||
check_r3 1
|
||||
|
||||
test_name CMPGUI_10
|
||||
mvi r3, 0
|
||||
cmpgui r3, r3, 0
|
||||
check_r3 0
|
||||
|
||||
end
|
40
tests/lm32/test_cmpne.S
Normal file
40
tests/lm32/test_cmpne.S
Normal file
|
@ -0,0 +1,40 @@
|
|||
.include "macros.inc"
|
||||
|
||||
start
|
||||
|
||||
test_name CMPNE_1
|
||||
mvi r1, 0
|
||||
mvi r2, 0
|
||||
cmpne r3, r1, r2
|
||||
check_r3 0
|
||||
|
||||
test_name CMPNE_2
|
||||
mvi r1, 0
|
||||
mvi r2, 1
|
||||
cmpne r3, r1, r2
|
||||
check_r3 1
|
||||
|
||||
test_name CMPNE_3
|
||||
mvi r1, 1
|
||||
mvi r2, 0
|
||||
cmpne r3, r1, r2
|
||||
check_r3 1
|
||||
|
||||
test_name CMPNE_4
|
||||
mvi r3, 0
|
||||
mvi r2, 1
|
||||
cmpne r3, r3, r2
|
||||
check_r3 1
|
||||
|
||||
test_name CMPNE_5
|
||||
mvi r3, 0
|
||||
mvi r2, 0
|
||||
cmpne r3, r3, r2
|
||||
check_r3 0
|
||||
|
||||
test_name CMPNE_6
|
||||
mvi r3, 0
|
||||
cmpne r3, r3, r3
|
||||
check_r3 0
|
||||
|
||||
end
|
35
tests/lm32/test_cmpnei.S
Normal file
35
tests/lm32/test_cmpnei.S
Normal file
|
@ -0,0 +1,35 @@
|
|||
.include "macros.inc"
|
||||
|
||||
start
|
||||
|
||||
test_name CMPNEI_1
|
||||
mvi r1, 0
|
||||
cmpnei r3, r1, 0
|
||||
check_r3 0
|
||||
|
||||
test_name CMPNEI_2
|
||||
mvi r1, 0
|
||||
cmpnei r3, r1, 1
|
||||
check_r3 1
|
||||
|
||||
test_name CMPNEI_3
|
||||
mvi r1, 1
|
||||
cmpnei r3, r1, 0
|
||||
check_r3 1
|
||||
|
||||
test_name CMPNEI_4
|
||||
load r1 0xffffffff
|
||||
cmpnei r3, r1, -1
|
||||
check_r3 0
|
||||
|
||||
test_name CMPNEI_5
|
||||
mvi r3, 0
|
||||
cmpnei r3, r3, 0
|
||||
check_r3 0
|
||||
|
||||
test_name CMPNEI_6
|
||||
mvi r3, 0
|
||||
cmpnei r3, r3, 1
|
||||
check_r3 1
|
||||
|
||||
end
|
29
tests/lm32/test_divu.S
Normal file
29
tests/lm32/test_divu.S
Normal file
|
@ -0,0 +1,29 @@
|
|||
.include "macros.inc"
|
||||
|
||||
start
|
||||
|
||||
test_name DIVU_1
|
||||
mvi r1, 0
|
||||
mvi r2, 1
|
||||
divu r3, r1, r2
|
||||
check_r3 0
|
||||
|
||||
test_name DIVU_2
|
||||
mvi r1, 1
|
||||
mvi r2, 1
|
||||
divu r3, r1, r2
|
||||
check_r3 1
|
||||
|
||||
test_name DIVU_3
|
||||
mvi r1, 0
|
||||
mvi r2, 0
|
||||
divu r3, r1, r2
|
||||
check_excp 16
|
||||
|
||||
test_name DIVU_4
|
||||
load r1 0xabcdef12
|
||||
load r2 0x12345
|
||||
divu r3, r1, r2
|
||||
check_r3 0x9700
|
||||
|
||||
end
|
38
tests/lm32/test_eret.S
Normal file
38
tests/lm32/test_eret.S
Normal file
|
@ -0,0 +1,38 @@
|
|||
.include "macros.inc"
|
||||
|
||||
start
|
||||
|
||||
test_name ERET_1
|
||||
mvi r1, 2
|
||||
wcsr IE, r1
|
||||
load ea mark
|
||||
eret
|
||||
tc_fail
|
||||
bi 1f
|
||||
|
||||
mark:
|
||||
tc_pass
|
||||
|
||||
1:
|
||||
test_name ERET_2
|
||||
rcsr r3, IE
|
||||
check_r3 3
|
||||
|
||||
test_name ERET_3
|
||||
mvi r1, 0
|
||||
wcsr IE, r1
|
||||
load ea mark2
|
||||
eret
|
||||
tc_fail
|
||||
bi 1f
|
||||
|
||||
mark2:
|
||||
tc_pass
|
||||
|
||||
1:
|
||||
test_name ERET_4
|
||||
rcsr r3, IE
|
||||
check_r3 0
|
||||
|
||||
end
|
||||
|
45
tests/lm32/test_lb.S
Normal file
45
tests/lm32/test_lb.S
Normal file
|
@ -0,0 +1,45 @@
|
|||
.include "macros.inc"
|
||||
|
||||
start
|
||||
|
||||
test_name LB_1
|
||||
load r1 data
|
||||
lb r3, (r1+0)
|
||||
check_r3 0x7e
|
||||
|
||||
test_name LB_2
|
||||
lb r3, (r1+1)
|
||||
check_r3 0x7f
|
||||
|
||||
test_name LB_3
|
||||
lb r3, (r1+-1)
|
||||
check_r3 0x7d
|
||||
|
||||
test_name LB_4
|
||||
load r1 data_msb
|
||||
lb r3, (r1+0)
|
||||
check_r3 0xfffffffe
|
||||
|
||||
test_name LB_5
|
||||
lb r3, (r1+1)
|
||||
check_r3 0xffffffff
|
||||
|
||||
test_name LB_6
|
||||
lb r3, (r1+-1)
|
||||
check_r3 0xfffffffd
|
||||
|
||||
test_name LB_7
|
||||
load r3 data
|
||||
lb r3, (r3+0)
|
||||
check_r3 0x7e
|
||||
|
||||
end
|
||||
|
||||
.data
|
||||
.align 4
|
||||
.byte 0x7a, 0x7b, 0x7c, 0x7d
|
||||
data:
|
||||
.byte 0x7e, 0x7f, 0x70, 0x71
|
||||
.byte 0xfa, 0xfb, 0xfc, 0xfd
|
||||
data_msb:
|
||||
.byte 0xfe, 0xff, 0xf0, 0xf1
|
45
tests/lm32/test_lbu.S
Normal file
45
tests/lm32/test_lbu.S
Normal file
|
@ -0,0 +1,45 @@
|
|||
.include "macros.inc"
|
||||
|
||||
start
|
||||
|
||||
test_name LBU_1
|
||||
load r1 data
|
||||
lbu r3, (r1+0)
|
||||
check_r3 0x7e
|
||||
|
||||
test_name LBU_2
|
||||
lbu r3, (r1+1)
|
||||
check_r3 0x7f
|
||||
|
||||
test_name LBU_3
|
||||
lbu r3, (r1+-1)
|
||||
check_r3 0x7d
|
||||
|
||||
test_name LBU_4
|
||||
load r1 data_msb
|
||||
lbu r3, (r1+0)
|
||||
check_r3 0xfe
|
||||
|
||||
test_name LBU_5
|
||||
lbu r3, (r1+1)
|
||||
check_r3 0xff
|
||||
|
||||
test_name LBU_6
|
||||
lbu r3, (r1+-1)
|
||||
check_r3 0xfd
|
||||
|
||||
test_name LBU_7
|
||||
load r3 data
|
||||
lbu r3, (r3+0)
|
||||
check_r3 0x7e
|
||||
|
||||
end
|
||||
|
||||
.data
|
||||
.align 4
|
||||
.byte 0x7a, 0x7b, 0x7c, 0x7d
|
||||
data:
|
||||
.byte 0x7e, 0x7f, 0x70, 0x71
|
||||
.byte 0xfa, 0xfb, 0xfc, 0xfd
|
||||
data_msb:
|
||||
.byte 0xfe, 0xff, 0xf0, 0xf1
|
45
tests/lm32/test_lh.S
Normal file
45
tests/lm32/test_lh.S
Normal file
|
@ -0,0 +1,45 @@
|
|||
.include "macros.inc"
|
||||
|
||||
start
|
||||
|
||||
test_name LH_1
|
||||
load r1 data
|
||||
lh r3, (r1+0)
|
||||
check_r3 0x7e7f
|
||||
|
||||
test_name LH_2
|
||||
lh r3, (r1+2)
|
||||
check_r3 0x7071
|
||||
|
||||
test_name LH_3
|
||||
lh r3, (r1+-2)
|
||||
check_r3 0x7c7d
|
||||
|
||||
test_name LH_4
|
||||
load r1 data_msb
|
||||
lh r3, (r1+0)
|
||||
check_r3 0xfffffeff
|
||||
|
||||
test_name LH_5
|
||||
lh r3, (r1+2)
|
||||
check_r3 0xfffff0f1
|
||||
|
||||
test_name LH_6
|
||||
lh r3, (r1+-2)
|
||||
check_r3 0xfffffcfd
|
||||
|
||||
test_name LH_7
|
||||
load r3 data
|
||||
lh r3, (r3+0)
|
||||
check_r3 0x7e7f
|
||||
|
||||
end
|
||||
|
||||
.data
|
||||
.align 4
|
||||
.byte 0x7a, 0x7b, 0x7c, 0x7d
|
||||
data:
|
||||
.byte 0x7e, 0x7f, 0x70, 0x71
|
||||
.byte 0xfa, 0xfb, 0xfc, 0xfd
|
||||
data_msb:
|
||||
.byte 0xfe, 0xff, 0xf0, 0xf1
|
45
tests/lm32/test_lhu.S
Normal file
45
tests/lm32/test_lhu.S
Normal file
|
@ -0,0 +1,45 @@
|
|||
.include "macros.inc"
|
||||
|
||||
start
|
||||
|
||||
test_name LHU_1
|
||||
load r1 data
|
||||
lhu r3, (r1+0)
|
||||
check_r3 0x7e7f
|
||||
|
||||
test_name LHU_2
|
||||
lhu r3, (r1+2)
|
||||
check_r3 0x7071
|
||||
|
||||
test_name LHU_3
|
||||
lhu r3, (r1+-2)
|
||||
check_r3 0x7c7d
|
||||
|
||||
test_name LHU_4
|
||||
load r1 data_msb
|
||||
lhu r3, (r1+0)
|
||||
check_r3 0xfeff
|
||||
|
||||
test_name LHU_5
|
||||
lhu r3, (r1+2)
|
||||
check_r3 0xf0f1
|
||||
|
||||
test_name LHU_6
|
||||
lhu r3, (r1+-2)
|
||||
check_r3 0xfcfd
|
||||
|
||||
test_name LHU_7
|
||||
load r3 data
|
||||
lhu r3, (r3+0)
|
||||
check_r3 0x7e7f
|
||||
|
||||
end
|
||||
|
||||
.data
|
||||
.align 4
|
||||
.byte 0x7a, 0x7b, 0x7c, 0x7d
|
||||
data:
|
||||
.byte 0x7e, 0x7f, 0x70, 0x71
|
||||
.byte 0xfa, 0xfb, 0xfc, 0xfd
|
||||
data_msb:
|
||||
.byte 0xfe, 0xff, 0xf0, 0xf1
|
30
tests/lm32/test_lw.S
Normal file
30
tests/lm32/test_lw.S
Normal file
|
@ -0,0 +1,30 @@
|
|||
.include "macros.inc"
|
||||
|
||||
start
|
||||
|
||||
test_name LW_1
|
||||
load r1 data
|
||||
lw r3, (r1+0)
|
||||
check_r3 0x7e7f7071
|
||||
|
||||
test_name LW_2
|
||||
lw r3, (r1+4)
|
||||
check_r3 0x72737475
|
||||
|
||||
test_name LW_3
|
||||
lw r3, (r1+-4)
|
||||
check_r3 0x7a7b7c7d
|
||||
|
||||
test_name LW_4
|
||||
load r3 data
|
||||
lw r3, (r3+0)
|
||||
check_r3 0x7e7f7071
|
||||
|
||||
end
|
||||
|
||||
.data
|
||||
.align 4
|
||||
.byte 0x7a, 0x7b, 0x7c, 0x7d
|
||||
data:
|
||||
.byte 0x7e, 0x7f, 0x70, 0x71
|
||||
.byte 0x72, 0x73, 0x74, 0x75
|
35
tests/lm32/test_modu.S
Normal file
35
tests/lm32/test_modu.S
Normal file
|
@ -0,0 +1,35 @@
|
|||
.include "macros.inc"
|
||||
|
||||
start
|
||||
|
||||
test_name MODU_1
|
||||
mvi r1, 0
|
||||
mvi r2, 1
|
||||
modu r3, r1, r2
|
||||
check_r3 0
|
||||
|
||||
test_name MODU_2
|
||||
mvi r1, 1
|
||||
mvi r2, 1
|
||||
modu r3, r1, r2
|
||||
check_r3 0
|
||||
|
||||
test_name MODU_3
|
||||
mvi r1, 3
|
||||
mvi r2, 2
|
||||
modu r3, r1, r2
|
||||
check_r3 1
|
||||
|
||||
test_name MODU_4
|
||||
mvi r1, 0
|
||||
mvi r2, 0
|
||||
modu r3, r1, r2
|
||||
check_excp 16
|
||||
|
||||
test_name MODU_5
|
||||
load r1 0xabcdef12
|
||||
load r2 0x12345
|
||||
modu r3, r1, r2
|
||||
check_r3 0x3c12
|
||||
|
||||
end
|
70
tests/lm32/test_mul.S
Normal file
70
tests/lm32/test_mul.S
Normal file
|
@ -0,0 +1,70 @@
|
|||
.include "macros.inc"
|
||||
|
||||
start
|
||||
|
||||
test_name MUL_1
|
||||
mvi r1, 0
|
||||
mvi r2, 0
|
||||
mul r3, r1, r2
|
||||
check_r3 0
|
||||
|
||||
test_name MUL_2
|
||||
mvi r1, 1
|
||||
mvi r2, 0
|
||||
mul r3, r1, r2
|
||||
check_r3 0
|
||||
|
||||
test_name MUL_3
|
||||
mvi r1, 0
|
||||
mvi r2, 1
|
||||
mul r3, r1, r2
|
||||
check_r3 0
|
||||
|
||||
test_name MUL_4
|
||||
mvi r1, 1
|
||||
mvi r2, 1
|
||||
mul r3, r1, r2
|
||||
check_r3 1
|
||||
|
||||
test_name MUL_5
|
||||
mvi r1, 2
|
||||
mvi r2, -1
|
||||
mul r3, r1, r2
|
||||
check_r3 -2
|
||||
|
||||
test_name MUL_6
|
||||
mvi r1, -2
|
||||
mvi r2, -1
|
||||
mul r3, r1, r2
|
||||
check_r3 2
|
||||
|
||||
test_name MUL_7
|
||||
mvi r1, 0x1234
|
||||
mvi r2, 0x789
|
||||
mul r3, r1, r2
|
||||
check_r3 0x8929d4
|
||||
|
||||
test_name MUL_8
|
||||
mvi r3, 4
|
||||
mul r3, r3, r3
|
||||
check_r3 16
|
||||
|
||||
test_name MUL_9
|
||||
mvi r2, 2
|
||||
mvi r3, 4
|
||||
mul r3, r3, r2
|
||||
check_r3 8
|
||||
|
||||
test_name MUL_10
|
||||
load r1 0x12345678
|
||||
load r2 0x7bcdef12
|
||||
mul r3, r1, r2
|
||||
check_r3 0xa801c70
|
||||
|
||||
test_name MUL_11
|
||||
load r1 0x12345678
|
||||
load r2 0xabcdef12
|
||||
mul r3, r1, r2
|
||||
check_r3 0x8a801c70
|
||||
|
||||
end
|
45
tests/lm32/test_muli.S
Normal file
45
tests/lm32/test_muli.S
Normal file
|
@ -0,0 +1,45 @@
|
|||
.include "macros.inc"
|
||||
|
||||
start
|
||||
|
||||
test_name MULI_1
|
||||
mvi r1, 0
|
||||
muli r3, r1, 0
|
||||
check_r3 0
|
||||
|
||||
test_name MULI_2
|
||||
mvi r1, 1
|
||||
muli r3, r1, 0
|
||||
check_r3 0
|
||||
|
||||
test_name MULI_3
|
||||
mvi r1, 0
|
||||
muli r3, r1, 1
|
||||
check_r3 0
|
||||
|
||||
test_name MULI_4
|
||||
mvi r1, 1
|
||||
muli r3, r1, 1
|
||||
check_r3 1
|
||||
|
||||
test_name MULI_5
|
||||
mvi r1, 2
|
||||
muli r3, r1, -1
|
||||
check_r3 -2
|
||||
|
||||
test_name MULI_6
|
||||
mvi r1, -2
|
||||
muli r3, r1, -1
|
||||
check_r3 2
|
||||
|
||||
test_name MULI_7
|
||||
mvi r1, 0x1234
|
||||
muli r3, r1, 0x789
|
||||
check_r3 0x8929d4
|
||||
|
||||
test_name MULI_8
|
||||
mvi r3, 4
|
||||
muli r3, r3, 4
|
||||
check_r3 16
|
||||
|
||||
end
|
51
tests/lm32/test_nor.S
Normal file
51
tests/lm32/test_nor.S
Normal file
|
@ -0,0 +1,51 @@
|
|||
.include "macros.inc"
|
||||
|
||||
start
|
||||
|
||||
test_name NOR_1
|
||||
mvi r1, 0
|
||||
mvi r2, 0
|
||||
nor r3, r1, r2
|
||||
check_r3 0xffffffff
|
||||
|
||||
test_name NOR_2
|
||||
mvi r1, 0
|
||||
mvi r2, 1
|
||||
nor r3, r1, r2
|
||||
check_r3 0xfffffffe
|
||||
|
||||
test_name NOR_3
|
||||
mvi r1, 1
|
||||
mvi r2, 1
|
||||
nor r3, r1, r2
|
||||
check_r3 0xfffffffe
|
||||
|
||||
test_name NOR_4
|
||||
mvi r1, 1
|
||||
mvi r2, 0
|
||||
nor r3, r1, r2
|
||||
check_r3 0xfffffffe
|
||||
|
||||
test_name NOR_5
|
||||
load r1 0xaa55aa55
|
||||
load r2 0x55aa55aa
|
||||
nor r3, r1, r2
|
||||
check_r3 0
|
||||
|
||||
test_name NOR_6
|
||||
load r1 0xaa550000
|
||||
load r2 0x0000aa55
|
||||
nor r3, r1, r2
|
||||
check_r3 0x55aa55aa
|
||||
|
||||
test_name NOR_7
|
||||
load r1 0xaa55aa55
|
||||
nor r3, r1, r1
|
||||
check_r3 0x55aa55aa
|
||||
|
||||
test_name NOR_8
|
||||
load r3 0xaa55aa55
|
||||
nor r3, r3, r3
|
||||
check_r3 0x55aa55aa
|
||||
|
||||
end
|
35
tests/lm32/test_nori.S
Normal file
35
tests/lm32/test_nori.S
Normal file
|
@ -0,0 +1,35 @@
|
|||
.include "macros.inc"
|
||||
|
||||
start
|
||||
|
||||
test_name NORI_1
|
||||
mvi r1, 0
|
||||
nori r3, r1, 0
|
||||
check_r3 0xffffffff
|
||||
|
||||
test_name NORI_2
|
||||
mvi r1, 0
|
||||
nori r3, r1, 1
|
||||
check_r3 0xfffffffe
|
||||
|
||||
test_name NORI_3
|
||||
mvi r1, 1
|
||||
nori r3, r1, 1
|
||||
check_r3 0xfffffffe
|
||||
|
||||
test_name NORI_4
|
||||
mvi r1, 1
|
||||
nori r3, r1, 0
|
||||
check_r3 0xfffffffe
|
||||
|
||||
test_name NORI_5
|
||||
load r1 0xaa55aa55
|
||||
nori r3, r1, 0x55aa
|
||||
check_r3 0x55aa0000
|
||||
|
||||
test_name NORI_6
|
||||
load r3 0xaa55aa55
|
||||
nori r3, r3, 0x55aa
|
||||
check_r3 0x55aa0000
|
||||
|
||||
end
|
51
tests/lm32/test_or.S
Normal file
51
tests/lm32/test_or.S
Normal file
|
@ -0,0 +1,51 @@
|
|||
.include "macros.inc"
|
||||
|
||||
start
|
||||
|
||||
test_name OR_1
|
||||
mvi r1, 0
|
||||
mvi r2, 0
|
||||
or r3, r1, r2
|
||||
check_r3 0
|
||||
|
||||
test_name OR_2
|
||||
mvi r1, 0
|
||||
mvi r2, 1
|
||||
or r3, r1, r2
|
||||
check_r3 1
|
||||
|
||||
test_name OR_3
|
||||
mvi r1, 1
|
||||
mvi r2, 1
|
||||
or r3, r1, r2
|
||||
check_r3 1
|
||||
|
||||
test_name OR_4
|
||||
mvi r1, 1
|
||||
mvi r2, 0
|
||||
or r3, r1, r2
|
||||
check_r3 1
|
||||
|
||||
test_name OR_5
|
||||
load r1 0xaa55aa55
|
||||
load r2 0x55aa55aa
|
||||
or r3, r1, r2
|
||||
check_r3 0xffffffff
|
||||
|
||||
test_name OR_6
|
||||
load r1 0xaa550000
|
||||
load r2 0x0000aa55
|
||||
or r3, r1, r2
|
||||
check_r3 0xaa55aa55
|
||||
|
||||
test_name OR_7
|
||||
load r1 0xaa55aa55
|
||||
or r3, r1, r1
|
||||
check_r3 0xaa55aa55
|
||||
|
||||
test_name OR_8
|
||||
load r3 0xaa55aa55
|
||||
or r3, r3, r3
|
||||
check_r3 0xaa55aa55
|
||||
|
||||
end
|
35
tests/lm32/test_orhi.S
Normal file
35
tests/lm32/test_orhi.S
Normal file
|
@ -0,0 +1,35 @@
|
|||
.include "macros.inc"
|
||||
|
||||
start
|
||||
|
||||
test_name ORHI_1
|
||||
mvi r1, 0
|
||||
orhi r3, r1, 0
|
||||
check_r3 0
|
||||
|
||||
test_name ORHI_2
|
||||
mvi r1, 0
|
||||
orhi r3, r1, 1
|
||||
check_r3 0x00010000
|
||||
|
||||
test_name ORHI_3
|
||||
load r1 0x00010000
|
||||
orhi r3, r1, 1
|
||||
check_r3 0x00010000
|
||||
|
||||
test_name ORHI_4
|
||||
mvi r1, 1
|
||||
orhi r3, r1, 0
|
||||
check_r3 1
|
||||
|
||||
test_name ORHI_5
|
||||
load r1 0xaa55aa55
|
||||
orhi r3, r1, 0x55aa
|
||||
check_r3 0xffffaa55
|
||||
|
||||
test_name ORHI_6
|
||||
load r3 0xaa55aa55
|
||||
orhi r3, r3, 0x55aa
|
||||
check_r3 0xffffaa55
|
||||
|
||||
end
|
35
tests/lm32/test_ori.S
Normal file
35
tests/lm32/test_ori.S
Normal file
|
@ -0,0 +1,35 @@
|
|||
.include "macros.inc"
|
||||
|
||||
start
|
||||
|
||||
test_name ORI_1
|
||||
mvi r1, 0
|
||||
ori r3, r1, 0
|
||||
check_r3 0
|
||||
|
||||
test_name ORI_2
|
||||
mvi r1, 0
|
||||
ori r3, r1, 1
|
||||
check_r3 1
|
||||
|
||||
test_name ORI_3
|
||||
mvi r1, 1
|
||||
ori r3, r1, 1
|
||||
check_r3 1
|
||||
|
||||
test_name ORI_4
|
||||
mvi r1, 1
|
||||
ori r3, r1, 0
|
||||
check_r3 1
|
||||
|
||||
test_name ORI_5
|
||||
load r1 0xaa55aa55
|
||||
ori r3, r1, 0x55aa
|
||||
check_r3 0xaa55ffff
|
||||
|
||||
test_name ORI_6
|
||||
load r3 0xaa55aa55
|
||||
ori r3, r3, 0x55aa
|
||||
check_r3 0xaa55ffff
|
||||
|
||||
end
|
14
tests/lm32/test_ret.S
Normal file
14
tests/lm32/test_ret.S
Normal file
|
@ -0,0 +1,14 @@
|
|||
.include "macros.inc"
|
||||
|
||||
start
|
||||
|
||||
test_name RET_1
|
||||
load ra mark
|
||||
ret
|
||||
|
||||
tc_fail
|
||||
end
|
||||
|
||||
mark:
|
||||
tc_pass
|
||||
end
|
30
tests/lm32/test_sb.S
Normal file
30
tests/lm32/test_sb.S
Normal file
|
@ -0,0 +1,30 @@
|
|||
.include "macros.inc"
|
||||
|
||||
start
|
||||
|
||||
test_name SB_1
|
||||
load r1 data
|
||||
load r2 0xf0f1f2aa
|
||||
sb (r1+0), r2
|
||||
check_mem data 0xaa000000
|
||||
|
||||
test_name SB_2
|
||||
load r2 0xf0f1f2bb
|
||||
sb (r1+1), r2
|
||||
check_mem data 0xaabb0000
|
||||
|
||||
test_name SB_3
|
||||
load r2 0xf0f1f2cc
|
||||
sb (r1+-1), r2
|
||||
check_mem data0 0x000000cc
|
||||
|
||||
end
|
||||
|
||||
.data
|
||||
.align 4
|
||||
data0:
|
||||
.byte 0, 0, 0, 0
|
||||
data:
|
||||
.byte 0, 0, 0, 0
|
||||
data1:
|
||||
.byte 0, 0, 0, 0
|
20
tests/lm32/test_scall.S
Normal file
20
tests/lm32/test_scall.S
Normal file
|
@ -0,0 +1,20 @@
|
|||
.include "macros.inc"
|
||||
|
||||
start
|
||||
|
||||
test_name SCALL_1
|
||||
mvi r1, 1
|
||||
wcsr IE, r1
|
||||
insn:
|
||||
scall
|
||||
check_excp 64
|
||||
|
||||
test_name SCALL_2
|
||||
mv r3, ea
|
||||
check_r3 insn
|
||||
|
||||
test_name SCALL_3
|
||||
rcsr r3, IE
|
||||
check_r3 2
|
||||
|
||||
end
|
20
tests/lm32/test_sextb.S
Normal file
20
tests/lm32/test_sextb.S
Normal file
|
@ -0,0 +1,20 @@
|
|||
.include "macros.inc"
|
||||
|
||||
start
|
||||
|
||||
test_name SEXTB_1
|
||||
mvi r1, 0
|
||||
sextb r3, r1
|
||||
check_r3 0
|
||||
|
||||
test_name SEXTB_2
|
||||
mvi r1, 0x7f
|
||||
sextb r3, r1
|
||||
check_r3 0x0000007f
|
||||
|
||||
test_name SEXTB_3
|
||||
mvi r1, 0x80
|
||||
sextb r3, r1
|
||||
check_r3 0xffffff80
|
||||
|
||||
end
|
20
tests/lm32/test_sexth.S
Normal file
20
tests/lm32/test_sexth.S
Normal file
|
@ -0,0 +1,20 @@
|
|||
.include "macros.inc"
|
||||
|
||||
start
|
||||
|
||||
test_name SEXTH_1
|
||||
mvi r1, 0
|
||||
sexth r3, r1
|
||||
check_r3 0
|
||||
|
||||
test_name SEXTH_2
|
||||
load r1 0x7fff
|
||||
sexth r3, r1
|
||||
check_r3 0x00007fff
|
||||
|
||||
test_name SEXTH_3
|
||||
load r1 0x8000
|
||||
sexth r3, r1
|
||||
check_r3 0xffff8000
|
||||
|
||||
end
|
30
tests/lm32/test_sh.S
Normal file
30
tests/lm32/test_sh.S
Normal file
|
@ -0,0 +1,30 @@
|
|||
.include "macros.inc"
|
||||
|
||||
start
|
||||
|
||||
test_name SH_1
|
||||
load r1 data
|
||||
load r2 0xf0f1aaaa
|
||||
sh (r1+0), r2
|
||||
check_mem data 0xaaaa0000
|
||||
|
||||
test_name SH_2
|
||||
load r2 0xf0f1bbbb
|
||||
sh (r1+2), r2
|
||||
check_mem data 0xaaaabbbb
|
||||
|
||||
test_name SH_3
|
||||
load r2 0xf0f1cccc
|
||||
sh (r1+-2), r2
|
||||
check_mem data0 0x0000cccc
|
||||
|
||||
end
|
||||
|
||||
.data
|
||||
.align 4
|
||||
data0:
|
||||
.byte 0, 0, 0, 0
|
||||
data:
|
||||
.byte 0, 0, 0, 0
|
||||
data1:
|
||||
.byte 0, 0, 0, 0
|
45
tests/lm32/test_sl.S
Normal file
45
tests/lm32/test_sl.S
Normal file
|
@ -0,0 +1,45 @@
|
|||
.include "macros.inc"
|
||||
|
||||
start
|
||||
|
||||
test_name SL_1
|
||||
mvi r1, 1
|
||||
mvi r2, 0
|
||||
sl r3, r1, r2
|
||||
check_r3 1
|
||||
|
||||
test_name SL_2
|
||||
mvi r1, 0
|
||||
mvi r2, 1
|
||||
sl r3, r1, r2
|
||||
check_r3 0
|
||||
|
||||
test_name SL_3
|
||||
mvi r1, 1
|
||||
mvi r2, 31
|
||||
sl r3, r1, r2
|
||||
check_r3 0x80000000
|
||||
|
||||
test_name SL_4
|
||||
mvi r1, 16
|
||||
mvi r2, 31
|
||||
sl r3, r1, r2
|
||||
check_r3 0
|
||||
|
||||
test_name SL_5
|
||||
mvi r1, 1
|
||||
mvi r2, 34
|
||||
sl r3, r1, r2
|
||||
check_r3 4
|
||||
|
||||
test_name SL_6
|
||||
mvi r1, 2
|
||||
sl r3, r1, r1
|
||||
check_r3 8
|
||||
|
||||
test_name SL_7
|
||||
mvi r3, 2
|
||||
sl r3, r3, r3
|
||||
check_r3 8
|
||||
|
||||
end
|
30
tests/lm32/test_sli.S
Normal file
30
tests/lm32/test_sli.S
Normal file
|
@ -0,0 +1,30 @@
|
|||
.include "macros.inc"
|
||||
|
||||
start
|
||||
|
||||
test_name SLI_1
|
||||
mvi r1, 1
|
||||
sli r3, r1, 0
|
||||
check_r3 1
|
||||
|
||||
test_name SLI_2
|
||||
mvi r1, 0
|
||||
sli r3, r1, 1
|
||||
check_r3 0
|
||||
|
||||
test_name SLI_3
|
||||
mvi r1, 1
|
||||
sli r3, r1, 31
|
||||
check_r3 0x80000000
|
||||
|
||||
test_name SLI_4
|
||||
mvi r1, 16
|
||||
sli r3, r1, 31
|
||||
check_r3 0
|
||||
|
||||
test_name SLI_7
|
||||
mvi r3, 2
|
||||
sli r3, r3, 2
|
||||
check_r3 8
|
||||
|
||||
end
|
57
tests/lm32/test_sr.S
Normal file
57
tests/lm32/test_sr.S
Normal file
|
@ -0,0 +1,57 @@
|
|||
.include "macros.inc"
|
||||
|
||||
start
|
||||
|
||||
test_name SR_1
|
||||
mvi r1, 1
|
||||
mvi r2, 0
|
||||
sr r3, r1, r2
|
||||
check_r3 1
|
||||
|
||||
test_name SR_2
|
||||
mvi r1, 0
|
||||
mvi r2, 1
|
||||
sr r3, r1, r2
|
||||
check_r3 0
|
||||
|
||||
test_name SR_3
|
||||
load r1 0x40000000
|
||||
mvi r2, 30
|
||||
sr r3, r1, r2
|
||||
check_r3 1
|
||||
|
||||
test_name SR_4
|
||||
load r1 0x40000000
|
||||
mvi r2, 31
|
||||
sr r3, r1, r2
|
||||
check_r3 0
|
||||
|
||||
test_name SR_5
|
||||
mvi r1, 16
|
||||
mvi r2, 34
|
||||
sr r3, r1, r2
|
||||
check_r3 4
|
||||
|
||||
test_name SR_6
|
||||
mvi r1, 2
|
||||
sr r3, r1, r1
|
||||
check_r3 0
|
||||
|
||||
test_name SR_7
|
||||
mvi r3, 2
|
||||
sr r3, r3, r3
|
||||
check_r3 0
|
||||
|
||||
test_name SR_8
|
||||
mvi r1, 0xfffffff0
|
||||
mvi r2, 2
|
||||
sr r3, r1, r2
|
||||
check_r3 0xfffffffc
|
||||
|
||||
test_name SR_9
|
||||
mvi r1, 0xfffffff0
|
||||
mvi r2, 4
|
||||
sr r3, r1, r2
|
||||
check_r3 0xffffffff
|
||||
|
||||
end
|
40
tests/lm32/test_sri.S
Normal file
40
tests/lm32/test_sri.S
Normal file
|
@ -0,0 +1,40 @@
|
|||
.include "macros.inc"
|
||||
|
||||
start
|
||||
|
||||
test_name SRI_1
|
||||
mvi r1, 1
|
||||
sri r3, r1, 0
|
||||
check_r3 1
|
||||
|
||||
test_name SRI_2
|
||||
mvi r1, 0
|
||||
sri r3, r1, 1
|
||||
check_r3 0
|
||||
|
||||
test_name SRI_3
|
||||
load r1 0x40000000
|
||||
sri r3, r1, 30
|
||||
check_r3 1
|
||||
|
||||
test_name SRI_4
|
||||
load r1 0x40000000
|
||||
sri r3, r1, 31
|
||||
check_r3 0
|
||||
|
||||
test_name SRI_5
|
||||
mvi r3, 2
|
||||
sri r3, r3, 2
|
||||
check_r3 0
|
||||
|
||||
test_name SRI_6
|
||||
mvi r1, 0xfffffff0
|
||||
sri r3, r1, 2
|
||||
check_r3 0xfffffffc
|
||||
|
||||
test_name SRI_7
|
||||
mvi r1, 0xfffffff0
|
||||
sri r3, r1, 4
|
||||
check_r3 0xffffffff
|
||||
|
||||
end
|
57
tests/lm32/test_sru.S
Normal file
57
tests/lm32/test_sru.S
Normal file
|
@ -0,0 +1,57 @@
|
|||
.include "macros.inc"
|
||||
|
||||
start
|
||||
|
||||
test_name SRU_1
|
||||
mvi r1, 1
|
||||
mvi r2, 0
|
||||
sru r3, r1, r2
|
||||
check_r3 1
|
||||
|
||||
test_name SRU_2
|
||||
mvi r1, 0
|
||||
mvi r2, 1
|
||||
sru r3, r1, r2
|
||||
check_r3 0
|
||||
|
||||
test_name SRU_3
|
||||
load r1 0x40000000
|
||||
mvi r2, 30
|
||||
sru r3, r1, r2
|
||||
check_r3 1
|
||||
|
||||
test_name SRU_4
|
||||
load r1 0x40000000
|
||||
mvi r2, 31
|
||||
sru r3, r1, r2
|
||||
check_r3 0
|
||||
|
||||
test_name SRU_5
|
||||
mvi r1, 16
|
||||
mvi r2, 34
|
||||
sru r3, r1, r2
|
||||
check_r3 4
|
||||
|
||||
test_name SRU_6
|
||||
mvi r1, 2
|
||||
sru r3, r1, r1
|
||||
check_r3 0
|
||||
|
||||
test_name SRU_7
|
||||
mvi r3, 2
|
||||
sru r3, r3, r3
|
||||
check_r3 0
|
||||
|
||||
test_name SRU_8
|
||||
mvi r1, 0xfffffff0
|
||||
mvi r2, 2
|
||||
sru r3, r1, r2
|
||||
check_r3 0x3ffffffc
|
||||
|
||||
test_name SRU_9
|
||||
mvi r1, 0xfffffff0
|
||||
mvi r2, 4
|
||||
sru r3, r1, r2
|
||||
check_r3 0x0fffffff
|
||||
|
||||
end
|
40
tests/lm32/test_srui.S
Normal file
40
tests/lm32/test_srui.S
Normal file
|
@ -0,0 +1,40 @@
|
|||
.include "macros.inc"
|
||||
|
||||
start
|
||||
|
||||
test_name SRUI_1
|
||||
mvi r1, 1
|
||||
srui r3, r1, 0
|
||||
check_r3 1
|
||||
|
||||
test_name SRUI_2
|
||||
mvi r1, 0
|
||||
srui r3, r1, 1
|
||||
check_r3 0
|
||||
|
||||
test_name SRUI_3
|
||||
load r1 0x40000000
|
||||
srui r3, r1, 30
|
||||
check_r3 1
|
||||
|
||||
test_name SRUI_4
|
||||
load r1 0x40000000
|
||||
srui r3, r1, 31
|
||||
check_r3 0
|
||||
|
||||
test_name SRUI_5
|
||||
mvi r3, 2
|
||||
srui r3, r3, 2
|
||||
check_r3 0
|
||||
|
||||
test_name SRUI_6
|
||||
mvi r1, 0xfffffff0
|
||||
srui r3, r1, 2
|
||||
check_r3 0x3ffffffc
|
||||
|
||||
test_name SRUI_7
|
||||
mvi r1, 0xfffffff0
|
||||
srui r3, r1, 4
|
||||
check_r3 0x0fffffff
|
||||
|
||||
end
|
75
tests/lm32/test_sub.S
Normal file
75
tests/lm32/test_sub.S
Normal file
|
@ -0,0 +1,75 @@
|
|||
.include "macros.inc"
|
||||
|
||||
start
|
||||
|
||||
test_name SUB_1
|
||||
mvi r1, 0
|
||||
mvi r2, 0
|
||||
sub r3, r1, r2
|
||||
check_r3 0
|
||||
|
||||
test_name SUB_2
|
||||
mvi r1, 0
|
||||
mvi r2, 1
|
||||
sub r3, r1, r2
|
||||
check_r3 -1
|
||||
|
||||
test_name SUB_3
|
||||
mvi r1, 1
|
||||
mvi r2, 0
|
||||
sub r3, r1, r2
|
||||
check_r3 1
|
||||
|
||||
test_name SUB_4
|
||||
mvi r1, 1
|
||||
mvi r2, -1
|
||||
sub r3, r1, r2
|
||||
check_r3 2
|
||||
|
||||
test_name SUB_5
|
||||
mvi r1, -1
|
||||
mvi r2, 1
|
||||
sub r3, r1, r2
|
||||
check_r3 -2
|
||||
|
||||
test_name SUB_6
|
||||
mvi r1, -1
|
||||
mvi r2, 0
|
||||
sub r3, r1, r2
|
||||
check_r3 -1
|
||||
|
||||
test_name SUB_7
|
||||
mvi r1, 0
|
||||
mvi r2, -1
|
||||
sub r3, r1, r2
|
||||
check_r3 1
|
||||
|
||||
test_name SUB_8
|
||||
mvi r3, 2
|
||||
sub r3, r3, r3
|
||||
check_r3 0
|
||||
|
||||
test_name SUB_9
|
||||
mvi r1, 4
|
||||
mvi r3, 2
|
||||
sub r3, r1, r3
|
||||
check_r3 2
|
||||
|
||||
test_name SUB_10
|
||||
mvi r1, 4
|
||||
mvi r3, 2
|
||||
sub r3, r3, r1
|
||||
check_r3 -2
|
||||
|
||||
test_name SUB_11
|
||||
mvi r1, 4
|
||||
sub r3, r1, r1
|
||||
check_r3 0
|
||||
|
||||
test_name SUB_12
|
||||
load r1 0x12345678
|
||||
load r2 0xabcdef97
|
||||
sub r3, r1, r2
|
||||
check_r3 0x666666e1
|
||||
|
||||
end
|
35
tests/lm32/test_sw.S
Normal file
35
tests/lm32/test_sw.S
Normal file
|
@ -0,0 +1,35 @@
|
|||
.include "macros.inc"
|
||||
|
||||
start
|
||||
|
||||
test_name SW_1
|
||||
load r1 data
|
||||
load r2 0xaabbccdd
|
||||
sw (r1+0), r2
|
||||
check_mem data 0xaabbccdd
|
||||
|
||||
test_name SW_2
|
||||
load r2 0x00112233
|
||||
sw (r1+4), r2
|
||||
check_mem data1 0x00112233
|
||||
|
||||
test_name SW_3
|
||||
load r2 0x44556677
|
||||
sw (r1+-4), r2
|
||||
check_mem data0 0x44556677
|
||||
|
||||
test_name SW_4
|
||||
sw (r1+0), r1
|
||||
lw r3, (r1+0)
|
||||
check_r3 data
|
||||
|
||||
end
|
||||
|
||||
.data
|
||||
.align 4
|
||||
data0:
|
||||
.byte 0, 0, 0, 0
|
||||
data:
|
||||
.byte 0, 0, 0, 0
|
||||
data1:
|
||||
.byte 0, 0, 0, 0
|
51
tests/lm32/test_xnor.S
Normal file
51
tests/lm32/test_xnor.S
Normal file
|
@ -0,0 +1,51 @@
|
|||
.include "macros.inc"
|
||||
|
||||
start
|
||||
|
||||
test_name XNOR_1
|
||||
mvi r1, 0
|
||||
mvi r2, 0
|
||||
xnor r3, r1, r2
|
||||
check_r3 0xffffffff
|
||||
|
||||
test_name XNOR_2
|
||||
mvi r1, 0
|
||||
mvi r2, 1
|
||||
xnor r3, r1, r2
|
||||
check_r3 0xfffffffe
|
||||
|
||||
test_name XNOR_3
|
||||
mvi r1, 1
|
||||
mvi r2, 1
|
||||
xnor r3, r1, r2
|
||||
check_r3 0xffffffff
|
||||
|
||||
test_name XNOR_4
|
||||
mvi r1, 1
|
||||
mvi r2, 0
|
||||
xnor r3, r1, r2
|
||||
check_r3 0xfffffffe
|
||||
|
||||
test_name XNOR_5
|
||||
load r1 0xaa55aa55
|
||||
load r2 0x55aa55aa
|
||||
xnor r3, r1, r2
|
||||
check_r3 0
|
||||
|
||||
test_name XNOR_6
|
||||
load r1 0xaa550000
|
||||
load r2 0x0000aa55
|
||||
xnor r3, r1, r2
|
||||
check_r3 0x55aa55aa
|
||||
|
||||
test_name XNOR_7
|
||||
load r1 0xaa55aa55
|
||||
xnor r3, r1, r1
|
||||
check_r3 0xffffffff
|
||||
|
||||
test_name XNOR_8
|
||||
load r3 0xaa55aa55
|
||||
xnor r3, r3, r3
|
||||
check_r3 0xffffffff
|
||||
|
||||
end
|
35
tests/lm32/test_xnori.S
Normal file
35
tests/lm32/test_xnori.S
Normal file
|
@ -0,0 +1,35 @@
|
|||
.include "macros.inc"
|
||||
|
||||
start
|
||||
|
||||
test_name XNORI_1
|
||||
mvi r1, 0
|
||||
xnori r3, r1, 0
|
||||
check_r3 0xffffffff
|
||||
|
||||
test_name XNORI_2
|
||||
mvi r1, 0
|
||||
xnori r3, r1, 1
|
||||
check_r3 0xfffffffe
|
||||
|
||||
test_name XNORI_3
|
||||
mvi r1, 1
|
||||
xnori r3, r1, 1
|
||||
check_r3 0xffffffff
|
||||
|
||||
test_name XNORI_4
|
||||
mvi r1, 1
|
||||
xnori r3, r1, 0
|
||||
check_r3 0xfffffffe
|
||||
|
||||
test_name XNORI_5
|
||||
load r1 0xaa55aa55
|
||||
xnori r3, r1, 0x5555
|
||||
check_r3 0x55aa00ff
|
||||
|
||||
test_name XNORI_6
|
||||
load r3 0xaa55aa55
|
||||
xnori r3, r3, 0x5555
|
||||
check_r3 0x55aa00ff
|
||||
|
||||
end
|
51
tests/lm32/test_xor.S
Normal file
51
tests/lm32/test_xor.S
Normal file
|
@ -0,0 +1,51 @@
|
|||
.include "macros.inc"
|
||||
|
||||
start
|
||||
|
||||
test_name XOR_1
|
||||
mvi r1, 0
|
||||
mvi r2, 0
|
||||
xor r3, r1, r2
|
||||
check_r3 0
|
||||
|
||||
test_name XOR_2
|
||||
mvi r1, 0
|
||||
mvi r2, 1
|
||||
xor r3, r1, r2
|
||||
check_r3 1
|
||||
|
||||
test_name XOR_3
|
||||
mvi r1, 1
|
||||
mvi r2, 1
|
||||
xor r3, r1, r2
|
||||
check_r3 0
|
||||
|
||||
test_name XOR_4
|
||||
mvi r1, 1
|
||||
mvi r2, 0
|
||||
xor r3, r1, r2
|
||||
check_r3 1
|
||||
|
||||
test_name XOR_5
|
||||
load r1 0xaa55aa55
|
||||
load r2 0x55aa55aa
|
||||
xor r3, r1, r2
|
||||
check_r3 0xffffffff
|
||||
|
||||
test_name XOR_6
|
||||
load r1 0xaa550000
|
||||
load r2 0x0000aa55
|
||||
xor r3, r1, r2
|
||||
check_r3 0xaa55aa55
|
||||
|
||||
test_name XOR_7
|
||||
load r1 0xaa55aa55
|
||||
xor r3, r1, r1
|
||||
check_r3 0
|
||||
|
||||
test_name XOR_8
|
||||
load r3 0xaa55aa55
|
||||
xor r3, r3, r3
|
||||
check_r3 0
|
||||
|
||||
end
|
35
tests/lm32/test_xori.S
Normal file
35
tests/lm32/test_xori.S
Normal file
|
@ -0,0 +1,35 @@
|
|||
.include "macros.inc"
|
||||
|
||||
start
|
||||
|
||||
test_name XORI_1
|
||||
mvi r1, 0
|
||||
xori r3, r1, 0
|
||||
check_r3 0
|
||||
|
||||
test_name XORI_2
|
||||
mvi r1, 0
|
||||
xori r3, r1, 1
|
||||
check_r3 1
|
||||
|
||||
test_name XORI_3
|
||||
mvi r1, 1
|
||||
xori r3, r1, 1
|
||||
check_r3 0
|
||||
|
||||
test_name XORI_4
|
||||
mvi r1, 1
|
||||
xori r3, r1, 0
|
||||
check_r3 1
|
||||
|
||||
test_name XORI_5
|
||||
load r1 0xaa55aa55
|
||||
xori r3, r1, 0x5555
|
||||
check_r3 0xaa55ff00
|
||||
|
||||
test_name XORI_6
|
||||
load r3 0xaa55aa55
|
||||
xori r3, r3, 0x5555
|
||||
check_r3 0xaa55ff00
|
||||
|
||||
end
|
Loading…
Reference in a new issue