mirror of https://github.com/xemu-project/xemu.git
tests/tcg: Remove CRIS bare test files
We are going to remove the CRIS target. Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> Reviewed-by: Thomas Huth <thuth@redhat.com> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Acked-by: Edgar E. Iglesias <edgar.iglesias@amd.com> Message-ID: <20240904143603.52934-3-philmd@linaro.org>
This commit is contained in:
parent
c66c51461c
commit
0024b62a21
|
@ -230,7 +230,6 @@ S: Maintained
|
|||
F: target/cris/
|
||||
F: hw/cris/
|
||||
F: include/hw/cris/
|
||||
F: tests/tcg/cris/
|
||||
F: disas/cris.c
|
||||
|
||||
Hexagon TCG CPUs
|
||||
|
|
|
@ -28,7 +28,6 @@ mappings = {
|
|||
"armv7": "arm",
|
||||
"armv8-a" : ["aarch64", "aarch64_be"],
|
||||
"avr" : "avr",
|
||||
"cris" : "cris",
|
||||
# no hexagon in upstream gdb
|
||||
"hppa1.0" : "hppa",
|
||||
"i386" : "i386",
|
||||
|
|
|
@ -1,11 +0,0 @@
|
|||
b main
|
||||
b _fail
|
||||
b exit
|
||||
display /i $pc
|
||||
display /x $srp
|
||||
display /x $r0
|
||||
display /x $r1
|
||||
display /x $r2
|
||||
display /x $r3
|
||||
display /x $r4
|
||||
display /t $ccs
|
|
@ -1,62 +0,0 @@
|
|||
# -*- Mode: makefile -*-
|
||||
#
|
||||
# Cris tests
|
||||
#
|
||||
# Currently we can only build the "bare" tests with the docker
|
||||
# supplied cross-compiler.
|
||||
#
|
||||
|
||||
CRIS_SRC = $(SRC_PATH)/tests/tcg/cris/bare
|
||||
CRIS_ALL = $(wildcard $(CRIS_SRC)/*.s)
|
||||
CRIS_TESTS = $(patsubst $(CRIS_SRC)/%.s, %, $(CRIS_ALL))
|
||||
# Filter out common blobs and broken tests
|
||||
CRIS_BROKEN_TESTS = crt check_jsr
|
||||
# upstream GCC doesn't support v32
|
||||
CRIS_BROKEN_TESTS += check_mcp check_mulv32 check_addiv32 check_movpmv32
|
||||
CRIS_BROKEN_TESTS += check_movprv32 check_clearfv32 check_movemrv32 check_bas
|
||||
CRIS_BROKEN_TESTS += check_lapc check_movei
|
||||
# no sure why
|
||||
CRIS_BROKEN_TESTS += check_scc check_xarith
|
||||
|
||||
CRIS_USABLE_TESTS = $(filter-out $(CRIS_BROKEN_TESTS), $(CRIS_TESTS))
|
||||
CRIS_RUNS = $(patsubst %, run-%, $(CRIS_USABLE_TESTS))
|
||||
|
||||
# override the list of tests, as we can't build the multiarch tests
|
||||
TESTS = $(CRIS_USABLE_TESTS)
|
||||
EXTRA_RUNS =
|
||||
VPATH = $(CRIS_SRC)
|
||||
|
||||
AS = $(CC) -x assembler-with-cpp
|
||||
LD = $(CC)
|
||||
|
||||
# we rely on GCC inline:ing the stuff we tell it to in many places here.
|
||||
CFLAGS = -Winline -Wall -g -O2 -static -fno-stack-protector
|
||||
NOSTDFLAGS = -nostartfiles -nostdlib
|
||||
ASFLAGS += -mcpu=v10 -g -Wa,-I,$(SRC_PATH)/tests/tcg/cris/bare
|
||||
CRT_FILES = crt.o sys.o
|
||||
|
||||
# stop make deleting crt files if build fails
|
||||
.PRECIOUS: $(CRT_FILES)
|
||||
|
||||
%.o: %.c
|
||||
$(CC) -c $< -o $@
|
||||
|
||||
%.o: %.s
|
||||
$(AS) $(ASFLAGS) -c $< -o $@
|
||||
|
||||
%: %.s $(CRT_FILES)
|
||||
$(CC) $(ASFLAGS) $< -o $@ $(LDFLAGS) $(NOSTDFLAGS) $(CRT_FILES)
|
||||
|
||||
# The default CPU breaks (possibly as it's max?) so force crisv17
|
||||
QEMU_OPTS=-cpu crisv17
|
||||
|
||||
# Additional runners to run under GNU SIM
|
||||
CRIS_RUNS_ON_SIM=$(patsubst %, %-on-sim, $(CRIS_RUNS))
|
||||
SIMG:=cris-axis-linux-gnu-run
|
||||
|
||||
# e.g.: make -f ../../tests/tcg/Makefile run-check_orm-on-sim
|
||||
run-%-on-sim:
|
||||
$(call run-test, $<, $(SIMG) $<)
|
||||
|
||||
# We don't currently support the multiarch tests
|
||||
undefine MULTIARCH_TESTS
|
|
@ -1 +0,0 @@
|
|||
Test-suite for the cris port. Heavily based on the test-suite for the CRIS port of sim by Hans-Peter Nilsson.
|
|
@ -1,65 +0,0 @@
|
|||
# mach: crisv17
|
||||
|
||||
.include "testutils.inc"
|
||||
|
||||
.macro addc Rs Rd inc=0
|
||||
# Create the instruction manually since there is no assembler support yet
|
||||
.word (\Rd << 12) | \Rs | (\inc << 10) | 0x09a0
|
||||
.endm
|
||||
|
||||
start
|
||||
|
||||
.data
|
||||
mem1:
|
||||
.dword 0x0
|
||||
mem2:
|
||||
.dword 0x12345678
|
||||
|
||||
.text
|
||||
move.d mem1,r4
|
||||
clearf nzvc
|
||||
addc 4 3
|
||||
test_cc 0 1 0 0
|
||||
checkr3 0
|
||||
|
||||
move.d mem1,r4
|
||||
clearf nzvc
|
||||
ax
|
||||
addc 4 3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 0
|
||||
|
||||
move.d mem1,r4
|
||||
clearf nzvc
|
||||
setf c
|
||||
addc 4 3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 1
|
||||
|
||||
move.d mem2,r4
|
||||
moveq 2, r3
|
||||
clearf nzvc
|
||||
setf c
|
||||
addc 4 3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 1234567b
|
||||
|
||||
move.d mem2,r5
|
||||
clearf nzvc
|
||||
cmp.d r4,r5
|
||||
test_cc 0 1 0 0
|
||||
|
||||
move.d mem2,r4
|
||||
moveq 2, r3
|
||||
clearf nzvc
|
||||
addc 4 3 inc=1
|
||||
test_cc 0 0 0 0
|
||||
checkr3 1234567a
|
||||
|
||||
move.d mem2,r5
|
||||
clearf nzvc
|
||||
addq 4,r5
|
||||
cmp.d r4,r5
|
||||
test_cc 0 1 0 0
|
||||
|
||||
quit
|
|
@ -1,57 +0,0 @@
|
|||
# mach: crisv0 crisv3 crisv8 crisv10 crisv32
|
||||
# output: 0\n1\n2\n4\nbe02460f\n69d035a6\nc16c14d4\n
|
||||
|
||||
.include "testutils.inc"
|
||||
start
|
||||
moveq 0,r3
|
||||
moveq 0,r4
|
||||
clearf zcvn
|
||||
addi r4.b,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 0
|
||||
|
||||
moveq 0,r3
|
||||
moveq 1,r4
|
||||
setf zcvn
|
||||
addi r4.b,r3
|
||||
test_cc 1 1 1 1
|
||||
checkr3 1
|
||||
|
||||
moveq 0,r3
|
||||
moveq 1,r4
|
||||
setf cv
|
||||
clearf zn
|
||||
addi r4.w,r3
|
||||
test_cc 0 0 1 1
|
||||
checkr3 2
|
||||
|
||||
moveq 0,r3
|
||||
moveq 1,r4
|
||||
clearf cv
|
||||
setf zn
|
||||
addi r4.d,r3
|
||||
test_cc 1 1 0 0
|
||||
checkr3 4
|
||||
|
||||
move.d 0x12345678,r3
|
||||
move.d 0xabcdef97,r4
|
||||
clearf cn
|
||||
setf zv
|
||||
addi r4.b,r3
|
||||
test_cc 0 1 1 0
|
||||
checkr3 be02460f
|
||||
|
||||
move.d 0x12345678,r3
|
||||
move.d 0xabcdef97,r4
|
||||
setf cn
|
||||
clearf zv
|
||||
addi r4.w,r3
|
||||
test_cc 1 0 0 1
|
||||
checkr3 69d035a6
|
||||
|
||||
move.d 0x12345678,r3
|
||||
move.d 0xabcdef97,r4
|
||||
addi r4.d,r3
|
||||
checkr3 c16c14d4
|
||||
|
||||
quit
|
|
@ -1,62 +0,0 @@
|
|||
# mach: crisv32
|
||||
# output: 4455aa77\n4455aa77\nee19ccff\nff22\n4455aa77\nff224455\n55aa77ff\n
|
||||
|
||||
.include "testutils.inc"
|
||||
.data
|
||||
x:
|
||||
.dword 0x55aa77ff
|
||||
.dword 0xccff2244
|
||||
.dword 0x88ccee19
|
||||
|
||||
start
|
||||
setf cv
|
||||
moveq -1,r0
|
||||
move.d x-32768,r5
|
||||
move.d 32769,r6
|
||||
addi r6.b,r5,acr
|
||||
test_cc 0 0 1 1
|
||||
move.d [acr],r3
|
||||
checkr3 4455aa77
|
||||
|
||||
addu.w 32771,r5
|
||||
setf znvc
|
||||
moveq -1,r8
|
||||
addi r8.w,r5,acr
|
||||
test_cc 1 1 1 1
|
||||
move.d [acr],r3
|
||||
checkr3 4455aa77
|
||||
|
||||
moveq 5,r10
|
||||
clearf znvc
|
||||
addi r10.b,acr,acr
|
||||
test_cc 0 0 0 0
|
||||
move.d [acr],r3
|
||||
checkr3 ee19ccff
|
||||
|
||||
subq 1,r5
|
||||
move.d r5,r8
|
||||
subq 1,r8
|
||||
moveq 1,r9
|
||||
addi r9.d,r8,acr
|
||||
test_cc 0 0 0 0
|
||||
movu.w [acr],r3
|
||||
checkr3 ff22
|
||||
|
||||
moveq -2,r11
|
||||
addi r11.w,acr,acr
|
||||
move.d [acr],r3
|
||||
checkr3 4455aa77
|
||||
|
||||
moveq 5,r9
|
||||
addi r9.d,acr,acr
|
||||
subq 18,acr
|
||||
move.d [acr],r3
|
||||
checkr3 ff224455
|
||||
|
||||
move.d -76789888/4,r12
|
||||
addi r12.d,r5,acr
|
||||
add.d 76789886,acr
|
||||
move.d [acr],r3
|
||||
checkr3 55aa77ff
|
||||
|
||||
quit
|
|
@ -1,96 +0,0 @@
|
|||
# mach: crisv0 crisv3 crisv8 crisv10 crisv32
|
||||
# output: 1\n1\n1fffe\nfffffffe\ncc463bdb\nffff0001\n1\nfffe\nfedafffe\n78133bdb\nffffff01\n1\nfe\nfeda49fe\n781344db\n781344d0\n
|
||||
|
||||
.include "testutils.inc"
|
||||
.data
|
||||
x:
|
||||
.dword 2,-1,0xffff,-1,0x5432f789
|
||||
.word 2,-1,0xffff,0xf789
|
||||
.byte 2,0xff,0x89
|
||||
.byte 0x7e
|
||||
|
||||
start
|
||||
moveq -1,r3
|
||||
move.d x,r5
|
||||
add.d [r5+],r3
|
||||
test_cc 0 0 0 1
|
||||
checkr3 1
|
||||
|
||||
moveq 2,r3
|
||||
add.d [r5],r3
|
||||
test_cc 0 0 0 1
|
||||
addq 4,r5
|
||||
checkr3 1
|
||||
|
||||
move.d 0xffff,r3
|
||||
add.d [r5+],r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 1fffe
|
||||
|
||||
moveq -1,r3
|
||||
add.d [r5+],r3
|
||||
test_cc 1 0 0 1
|
||||
checkr3 fffffffe
|
||||
|
||||
move.d 0x78134452,r3
|
||||
add.d [r5+],r3
|
||||
test_cc 1 0 1 0
|
||||
checkr3 cc463bdb
|
||||
|
||||
moveq -1,r3
|
||||
add.w [r5+],r3
|
||||
test_cc 0 0 0 1
|
||||
checkr3 ffff0001
|
||||
|
||||
moveq 2,r3
|
||||
add.w [r5+],r3
|
||||
test_cc 0 0 0 1
|
||||
checkr3 1
|
||||
|
||||
move.d 0xffff,r3
|
||||
add.w [r5],r3
|
||||
test_cc 1 0 0 1
|
||||
checkr3 fffe
|
||||
|
||||
move.d 0xfedaffff,r3
|
||||
add.w [r5+],r3
|
||||
test_cc 1 0 0 1
|
||||
checkr3 fedafffe
|
||||
|
||||
move.d 0x78134452,r3
|
||||
add.w [r5+],r3
|
||||
test_cc 0 0 0 1
|
||||
checkr3 78133bdb
|
||||
|
||||
moveq -1,r3
|
||||
add.b [r5],r3
|
||||
test_cc 0 0 0 1
|
||||
addq 1,r5
|
||||
checkr3 ffffff01
|
||||
|
||||
moveq 2,r3
|
||||
add.b [r5],r3
|
||||
test_cc 0 0 0 1
|
||||
checkr3 1
|
||||
|
||||
move.d 0xff,r3
|
||||
add.b [r5],r3
|
||||
test_cc 1 0 0 1
|
||||
checkr3 fe
|
||||
|
||||
move.d 0xfeda49ff,r3
|
||||
add.b [r5+],r3
|
||||
test_cc 1 0 0 1
|
||||
checkr3 feda49fe
|
||||
|
||||
move.d 0x78134452,r3
|
||||
add.b [r5+],r3
|
||||
test_cc 1 0 0 0
|
||||
checkr3 781344db
|
||||
|
||||
move.d 0x78134452,r3
|
||||
add.b [r5],r3
|
||||
test_cc 1 0 1 0
|
||||
checkr3 781344d0
|
||||
|
||||
quit
|
|
@ -1,47 +0,0 @@
|
|||
# mach: crisv3 crisv8 crisv10 crisv32
|
||||
# output: ffffffff\n0\n1\n100\n10000\n47\n67\na6\n80000001\n
|
||||
|
||||
.include "testutils.inc"
|
||||
start
|
||||
moveq -2,r3
|
||||
addq 1,r3
|
||||
test_cc 1 0 0 0
|
||||
checkr3 ffffffff
|
||||
|
||||
addq 1,r3
|
||||
test_cc 0 1 0 1
|
||||
checkr3 0
|
||||
|
||||
addq 1,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 1
|
||||
|
||||
move.d 0xff,r3
|
||||
addq 1,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 100
|
||||
|
||||
move.d 0xffff,r3
|
||||
addq 1,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 10000
|
||||
|
||||
move.d 0x42,r3
|
||||
addq 5,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 47
|
||||
|
||||
addq 32,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 67
|
||||
|
||||
addq 63,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 a6
|
||||
|
||||
move.d 0x7ffffffe,r3
|
||||
addq 3,r3
|
||||
test_cc 1 0 1 0
|
||||
checkr3 80000001
|
||||
|
||||
quit
|
|
@ -1,96 +0,0 @@
|
|||
# mach: crisv0 crisv3 crisv8 crisv10 crisv32
|
||||
# output: 1\n1\n1fffe\nfffffffe\ncc463bdb\nffff0001\n1\nfffe\nfedafffe\n78133bdb\nffffff01\n1\nfe\nfeda49fe\n781344db\n
|
||||
|
||||
.include "testutils.inc"
|
||||
start
|
||||
moveq -1,r3
|
||||
moveq 2,r4
|
||||
add.d r4,r3
|
||||
test_cc 0 0 0 1
|
||||
checkr3 1
|
||||
|
||||
moveq 2,r3
|
||||
moveq -1,r4
|
||||
add.d r4,r3
|
||||
test_cc 0 0 0 1
|
||||
checkr3 1
|
||||
|
||||
move.d 0xffff,r4
|
||||
move.d r4,r3
|
||||
add.d r4,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 1fffe
|
||||
|
||||
moveq -1,r4
|
||||
move.d r4,r3
|
||||
add.d r4,r3
|
||||
test_cc 1 0 0 1
|
||||
checkr3 fffffffe
|
||||
|
||||
move.d 0x5432f789,r4
|
||||
move.d 0x78134452,r3
|
||||
add.d r4,r3
|
||||
test_cc 1 0 1 0
|
||||
checkr3 cc463bdb
|
||||
|
||||
moveq -1,r3
|
||||
moveq 2,r4
|
||||
add.w r4,r3
|
||||
test_cc 0 0 0 1
|
||||
checkr3 ffff0001
|
||||
|
||||
moveq 2,r3
|
||||
moveq -1,r4
|
||||
add.w r4,r3
|
||||
test_cc 0 0 0 1
|
||||
checkr3 1
|
||||
|
||||
move.d 0xffff,r4
|
||||
move.d r4,r3
|
||||
add.w r4,r3
|
||||
test_cc 1 0 0 1
|
||||
checkr3 fffe
|
||||
|
||||
move.d 0xfedaffff,r4
|
||||
move.d r4,r3
|
||||
add.w r4,r3
|
||||
test_cc 1 0 0 1
|
||||
checkr3 fedafffe
|
||||
|
||||
move.d 0x5432f789,r4
|
||||
move.d 0x78134452,r3
|
||||
add.w r4,r3
|
||||
test_cc 0 0 0 1
|
||||
checkr3 78133bdb
|
||||
|
||||
moveq -1,r3
|
||||
moveq 2,r4
|
||||
add.b r4,r3
|
||||
test_cc 0 0 0 1
|
||||
checkr3 ffffff01
|
||||
|
||||
moveq 2,r3
|
||||
moveq -1,r4
|
||||
add.b r4,r3
|
||||
test_cc 0 0 0 1
|
||||
checkr3 1
|
||||
|
||||
move.d 0xff,r4
|
||||
move.d r4,r3
|
||||
add.b r4,r3
|
||||
test_cc 1 0 0 1
|
||||
checkr3 fe
|
||||
|
||||
move.d 0xfeda49ff,r4
|
||||
move.d r4,r3
|
||||
add.b r4,r3
|
||||
test_cc 1 0 0 1
|
||||
checkr3 feda49fe
|
||||
|
||||
move.d 0x5432f789,r4
|
||||
move.d 0x78134452,r3
|
||||
add.b r4,r3
|
||||
test_cc 1 0 0 0
|
||||
checkr3 781344db
|
||||
|
||||
quit
|
|
@ -1,91 +0,0 @@
|
|||
# mach: crisv0 crisv3 crisv8 crisv10 crisv32
|
||||
# output: 1\n1\n101\n10001\n100fe\n1fffe\nfffe\nfffe\nfffffffe\nfe\nfffffffe\n781344db\n781343db\n78143bdb\n78133bdb\n800000ed\n0\n
|
||||
|
||||
.include "testutils.inc"
|
||||
start
|
||||
moveq 2,r3
|
||||
adds.b 0xff,r3
|
||||
test_cc 0 0 0 1
|
||||
checkr3 1
|
||||
|
||||
moveq 2,r3
|
||||
adds.w 0xffff,r3
|
||||
test_cc 0 0 0 1
|
||||
checkr3 1
|
||||
|
||||
moveq 2,r3
|
||||
addu.b 0xff,r3
|
||||
checkr3 101
|
||||
|
||||
moveq 2,r3
|
||||
move.d 0xffffffff,r4
|
||||
addu.w -1,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 10001
|
||||
|
||||
move.d 0xffff,r3
|
||||
addu.b -1,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 100fe
|
||||
|
||||
move.d 0xffff,r3
|
||||
addu.w -1,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 1fffe
|
||||
|
||||
move.d 0xffff,r3
|
||||
adds.b 0xff,r3
|
||||
test_cc 0 0 0 1
|
||||
checkr3 fffe
|
||||
|
||||
move.d 0xffff,r3
|
||||
adds.w 0xffff,r3
|
||||
test_cc 0 0 0 1
|
||||
checkr3 fffe
|
||||
|
||||
moveq -1,r3
|
||||
adds.b 0xff,r3
|
||||
test_cc 1 0 0 1
|
||||
checkr3 fffffffe
|
||||
|
||||
moveq -1,r3
|
||||
adds.w 0xff,r3
|
||||
test_cc 0 0 0 1
|
||||
checkr3 fe
|
||||
|
||||
moveq -1,r3
|
||||
adds.w 0xffff,r3
|
||||
test_cc 1 0 0 1
|
||||
checkr3 fffffffe
|
||||
|
||||
move.d 0x78134452,r3
|
||||
addu.b 0x89,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 781344db
|
||||
|
||||
move.d 0x78134452,r3
|
||||
adds.b 0x89,r3
|
||||
test_cc 0 0 0 1
|
||||
checkr3 781343db
|
||||
|
||||
move.d 0x78134452,r3
|
||||
addu.w 0xf789,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 78143bdb
|
||||
|
||||
move.d 0x78134452,r3
|
||||
adds.w 0xf789,r3
|
||||
test_cc 0 0 0 1
|
||||
checkr3 78133bdb
|
||||
|
||||
move.d 0x7fffffee,r3
|
||||
addu.b 0xff,r3
|
||||
test_cc 1 0 1 0
|
||||
checkr3 800000ed
|
||||
|
||||
move.d 0x1,r3
|
||||
adds.w 0xffff,r3
|
||||
test_cc 0 1 0 1
|
||||
checkr3 0
|
||||
|
||||
quit
|
|
@ -1,106 +0,0 @@
|
|||
# mach: crisv0 crisv3 crisv8 crisv10 crisv32
|
||||
# output: 1\n1\n101\n10001\n100fe\n1fffe\nfffe\nfffe\nfffffffe\nfe\nfffffffe\n781344db\n781343db\n78143bdb\n78133bdb\n800000ed\n0\n
|
||||
|
||||
.include "testutils.inc"
|
||||
.data
|
||||
x:
|
||||
.byte 0xff
|
||||
.word 0xffff
|
||||
.word 0xff
|
||||
.word 0xffff
|
||||
.byte 0x89
|
||||
.word 0xf789
|
||||
.byte 0xff
|
||||
.word 0xffff
|
||||
|
||||
start
|
||||
moveq 2,r3
|
||||
move.d x,r5
|
||||
adds.b [r5+],r3
|
||||
test_cc 0 0 0 1
|
||||
checkr3 1
|
||||
|
||||
moveq 2,r3
|
||||
adds.w [r5+],r3
|
||||
test_cc 0 0 0 1
|
||||
checkr3 1
|
||||
|
||||
moveq 2,r3
|
||||
subq 3,r5
|
||||
addu.b [r5+],r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 101
|
||||
|
||||
moveq 2,r3
|
||||
addu.w [r5+],r3
|
||||
subq 3,r5
|
||||
test_cc 0 0 0 0
|
||||
checkr3 10001
|
||||
|
||||
move.d 0xffff,r3
|
||||
addu.b [r5],r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 100fe
|
||||
|
||||
move.d 0xffff,r3
|
||||
addu.w [r5],r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 1fffe
|
||||
|
||||
move.d 0xffff,r3
|
||||
adds.b [r5],r3
|
||||
test_cc 0 0 0 1
|
||||
checkr3 fffe
|
||||
|
||||
move.d 0xffff,r3
|
||||
adds.w [r5],r3
|
||||
test_cc 0 0 0 1
|
||||
checkr3 fffe
|
||||
|
||||
moveq -1,r3
|
||||
adds.b [r5],r3
|
||||
test_cc 1 0 0 1
|
||||
addq 3,r5
|
||||
checkr3 fffffffe
|
||||
|
||||
moveq -1,r3
|
||||
adds.w [r5+],r3
|
||||
test_cc 0 0 0 1
|
||||
checkr3 fe
|
||||
|
||||
moveq -1,r3
|
||||
adds.w [r5+],r3
|
||||
test_cc 1 0 0 1
|
||||
checkr3 fffffffe
|
||||
|
||||
move.d 0x78134452,r3
|
||||
addu.b [r5],r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 781344db
|
||||
|
||||
move.d 0x78134452,r3
|
||||
adds.b [r5+],r3
|
||||
test_cc 0 0 0 1
|
||||
checkr3 781343db
|
||||
|
||||
move.d 0x78134452,r3
|
||||
addu.w [r5],r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 78143bdb
|
||||
|
||||
move.d 0x78134452,r3
|
||||
adds.w [r5+],r3
|
||||
test_cc 0 0 0 1
|
||||
checkr3 78133bdb
|
||||
|
||||
move.d 0x7fffffee,r3
|
||||
addu.b [r5+],r3
|
||||
test_cc 1 0 1 0
|
||||
checkr3 800000ed
|
||||
|
||||
move.d 0x1,r3
|
||||
adds.w [r5+],r3
|
||||
test_cc 0 1 0 1
|
||||
checkr3 0
|
||||
|
||||
quit
|
|
@ -1,96 +0,0 @@
|
|||
# mach: crisv0 crisv3 crisv8 crisv10 crisv32
|
||||
# output: 1\n1\n1fffe\nfffffffe\ncc463bdb\nffff0001\n1\nfffe\nfedafffe\n78133bdb\nffffff01\n1\nfe\nfeda49fe\n781344db\n
|
||||
|
||||
.include "testutils.inc"
|
||||
start
|
||||
moveq -1,r3
|
||||
moveq 2,r4
|
||||
add.d r4,r3
|
||||
test_cc 0 0 0 1
|
||||
checkr3 1
|
||||
|
||||
moveq 2,r3
|
||||
moveq -1,r4
|
||||
add.d r4,r3
|
||||
test_cc 0 0 0 1
|
||||
checkr3 1
|
||||
|
||||
move.d 0xffff,r4
|
||||
move.d r4,r3
|
||||
add.d r4,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 1fffe
|
||||
|
||||
moveq -1,r4
|
||||
move.d r4,r3
|
||||
add.d r4,r3
|
||||
test_cc 1 0 0 1
|
||||
checkr3 fffffffe
|
||||
|
||||
move.d 0x5432f789,r4
|
||||
move.d 0x78134452,r3
|
||||
add.d r4,r3
|
||||
test_cc 1 0 1 0
|
||||
checkr3 cc463bdb
|
||||
|
||||
moveq -1,r3
|
||||
moveq 2,r4
|
||||
add.w r4,r3
|
||||
test_cc 0 0 0 1
|
||||
checkr3 ffff0001
|
||||
|
||||
moveq 2,r3
|
||||
moveq -1,r4
|
||||
add.w r4,r3
|
||||
test_cc 0 0 0 1
|
||||
checkr3 1
|
||||
|
||||
move.d 0xffff,r4
|
||||
move.d r4,r3
|
||||
add.w r4,r3
|
||||
test_cc 1 0 0 1
|
||||
checkr3 fffe
|
||||
|
||||
move.d 0xfedaffff,r4
|
||||
move.d r4,r3
|
||||
add.w r4,r3
|
||||
test_cc 1 0 0 1
|
||||
checkr3 fedafffe
|
||||
|
||||
move.d 0x5432f789,r4
|
||||
move.d 0x78134452,r3
|
||||
add.w r4,r3
|
||||
test_cc 0 0 0 1
|
||||
checkr3 78133bdb
|
||||
|
||||
moveq -1,r3
|
||||
moveq 2,r4
|
||||
add.b r4,r3
|
||||
test_cc 0 0 0 1
|
||||
checkr3 ffffff01
|
||||
|
||||
moveq 2,r3
|
||||
moveq -1,r4
|
||||
add.b r4,r3
|
||||
test_cc 0 0 0 1
|
||||
checkr3 1
|
||||
|
||||
move.d 0xff,r4
|
||||
move.d r4,r3
|
||||
add.b r4,r3
|
||||
test_cc 1 0 0 1
|
||||
checkr3 fe
|
||||
|
||||
move.d 0xfeda49ff,r4
|
||||
move.d r4,r3
|
||||
add.b r4,r3
|
||||
test_cc 1 0 0 1
|
||||
checkr3 feda49fe
|
||||
|
||||
move.d 0x5432f789,r4
|
||||
move.d 0x78134452,r3
|
||||
add.b r4,r3
|
||||
test_cc 1 0 0 0
|
||||
checkr3 781344db
|
||||
|
||||
quit
|
|
@ -1,80 +0,0 @@
|
|||
# mach: crisv0 crisv3 crisv8 crisv10 crisv32
|
||||
# output: 2\n2\nffff\nffffffff\n50124400\nffff0002\n2\nfffff\nfedaff0f\n78134400\nffffff02\n2\nf02\n78134401\n78134400\n
|
||||
|
||||
.include "testutils.inc"
|
||||
start
|
||||
moveq -1,r3
|
||||
and.d 2,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 2
|
||||
|
||||
moveq 2,r3
|
||||
and.d -1,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 2
|
||||
|
||||
move.d 0xffff,r3
|
||||
and.d 0xffff,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 ffff
|
||||
|
||||
moveq -1,r3
|
||||
and.d -1,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 ffffffff
|
||||
|
||||
move.d 0x78134452,r3
|
||||
and.d 0x5432f789,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 50124400
|
||||
|
||||
moveq -1,r3
|
||||
and.w 2,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 ffff0002
|
||||
|
||||
moveq 2,r3
|
||||
and.w -1,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 2
|
||||
|
||||
move.d 0xfffff,r3
|
||||
and.w 0xffff,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 fffff
|
||||
|
||||
move.d 0xfedaffaf,r3
|
||||
and.w 0xff5f,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 fedaff0f
|
||||
|
||||
move.d 0x78134452,r3
|
||||
and.w 0xf789,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 78134400
|
||||
|
||||
moveq -1,r3
|
||||
and.b 2,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 ffffff02
|
||||
|
||||
moveq 2,r3
|
||||
and.b -1,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 2
|
||||
|
||||
move.d 0xfa7,r3
|
||||
and.b 0x5a,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 f02
|
||||
|
||||
move.d 0x78134453,r3
|
||||
and.b 0x89,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 78134401
|
||||
|
||||
and.b 0,r3
|
||||
test_move_cc 0 1 0 0
|
||||
checkr3 78134400
|
||||
|
||||
quit
|
|
@ -1,90 +0,0 @@
|
|||
# mach: crisv0 crisv3 crisv8 crisv10 crisv32
|
||||
# output: 2\n2\nffff\nffffffff\n50124400\nffff0002\n2\nfffff\nfedaff0f\n78134400\nffffff02\n2\nf02\n78134401\n78134400\n
|
||||
|
||||
.include "testutils.inc"
|
||||
.data
|
||||
x:
|
||||
.dword 2,-1,0xffff,-1,0x5432f789
|
||||
.word 2,-1,0xffff,0xff5f,0xf789
|
||||
.byte 2,-1,0x5a,0x89,0
|
||||
|
||||
start
|
||||
moveq -1,r3
|
||||
move.d x,r5
|
||||
and.d [r5+],r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 2
|
||||
|
||||
moveq 2,r3
|
||||
and.d [r5],r3
|
||||
test_move_cc 0 0 0 0
|
||||
addq 4,r5
|
||||
checkr3 2
|
||||
|
||||
move.d 0xffff,r3
|
||||
and.d [r5+],r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 ffff
|
||||
|
||||
moveq -1,r3
|
||||
and.d [r5+],r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 ffffffff
|
||||
|
||||
move.d 0x78134452,r3
|
||||
and.d [r5+],r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 50124400
|
||||
|
||||
moveq -1,r3
|
||||
and.w [r5+],r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 ffff0002
|
||||
|
||||
moveq 2,r3
|
||||
and.w [r5+],r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 2
|
||||
|
||||
move.d 0xfffff,r3
|
||||
and.w [r5],r3
|
||||
test_move_cc 1 0 0 0
|
||||
addq 2,r5
|
||||
checkr3 fffff
|
||||
|
||||
move.d 0xfedaffaf,r3
|
||||
and.w [r5+],r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 fedaff0f
|
||||
|
||||
move.d 0x78134452,r3
|
||||
and.w [r5+],r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 78134400
|
||||
|
||||
moveq -1,r3
|
||||
and.b [r5],r3
|
||||
test_move_cc 0 0 0 0
|
||||
addq 1,r5
|
||||
checkr3 ffffff02
|
||||
|
||||
moveq 2,r3
|
||||
and.b [r5+],r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 2
|
||||
|
||||
move.d 0xfa7,r3
|
||||
and.b [r5+],r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 f02
|
||||
|
||||
move.d 0x78134453,r3
|
||||
and.b [r5+],r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 78134401
|
||||
|
||||
and.b [r5],r3
|
||||
test_move_cc 0 1 0 0
|
||||
checkr3 78134400
|
||||
|
||||
quit
|
|
@ -1,46 +0,0 @@
|
|||
# mach: crisv0 crisv3 crisv8 crisv10 crisv32
|
||||
# output: 2\n2\nffff\nffffffff\n1f\nffffffe0\n78134452\n0\n
|
||||
|
||||
.include "testutils.inc"
|
||||
start
|
||||
moveq -1,r3
|
||||
andq 2,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 2
|
||||
|
||||
moveq 2,r3
|
||||
andq -1,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 2
|
||||
|
||||
move.d 0xffff,r3
|
||||
andq -1,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 ffff
|
||||
|
||||
moveq -1,r3
|
||||
andq -1,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 ffffffff
|
||||
|
||||
moveq -1,r3
|
||||
andq 31,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 1f
|
||||
|
||||
moveq -1,r3
|
||||
andq -32,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 ffffffe0
|
||||
|
||||
move.d 0x78134457,r3
|
||||
andq -14,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 78134452
|
||||
|
||||
moveq 0,r3
|
||||
andq -14,r3
|
||||
test_move_cc 0 1 0 0
|
||||
checkr3 0
|
||||
|
||||
quit
|
|
@ -1,95 +0,0 @@
|
|||
# mach: crisv0 crisv3 crisv8 crisv10 crisv32
|
||||
# output: 2\n2\nffff\nffffffff\n50124400\nffff0002\n2\nfffff\nfedaff0f\n78134400\nffffff02\n2\nf02\n78134401\n78134400\n
|
||||
|
||||
.include "testutils.inc"
|
||||
start
|
||||
moveq -1,r3
|
||||
moveq 2,r4
|
||||
and.d r4,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 2
|
||||
|
||||
moveq 2,r3
|
||||
moveq -1,r4
|
||||
and.d r4,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 2
|
||||
|
||||
move.d 0xffff,r4
|
||||
move.d r4,r3
|
||||
and.d r4,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 ffff
|
||||
|
||||
moveq -1,r4
|
||||
move.d r4,r3
|
||||
and.d r4,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 ffffffff
|
||||
|
||||
move.d 0x5432f789,r4
|
||||
move.d 0x78134452,r3
|
||||
and.d r4,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 50124400
|
||||
|
||||
moveq -1,r3
|
||||
moveq 2,r4
|
||||
and.w r4,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 ffff0002
|
||||
|
||||
moveq 2,r3
|
||||
moveq -1,r4
|
||||
and.w r4,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 2
|
||||
|
||||
move.d 0xfffff,r3
|
||||
move.d 0xffff,r4
|
||||
and.w r4,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 fffff
|
||||
|
||||
move.d 0xfedaffaf,r3
|
||||
move.d 0xff5f,r4
|
||||
and.w r4,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 fedaff0f
|
||||
|
||||
move.d 0x5432f789,r4
|
||||
move.d 0x78134452,r3
|
||||
and.w r4,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 78134400
|
||||
|
||||
moveq -1,r3
|
||||
moveq 2,r4
|
||||
and.b r4,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 ffffff02
|
||||
|
||||
moveq 2,r3
|
||||
moveq -1,r4
|
||||
and.b r4,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 2
|
||||
|
||||
move.d 0x5a,r4
|
||||
move.d 0xfa7,r3
|
||||
and.b r4,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 f02
|
||||
|
||||
move.d 0x5432f789,r4
|
||||
move.d 0x78134453,r3
|
||||
and.b r4,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 78134401
|
||||
|
||||
moveq 0,r7
|
||||
and.b r7,r3
|
||||
test_move_cc 0 1 0 0
|
||||
checkr3 78134400
|
||||
|
||||
quit
|
|
@ -1,230 +0,0 @@
|
|||
# mach: crisv0 crisv3 crisv8 crisv10 crisv32
|
||||
# output: ffffffff\n1\nffffffff\nffffffff\n5a67f\nffffffff\nffffffff\nffffffff\nf699fc67\nffffffff\n1\nffffffff\nffffffff\n5a67f\nda67ffff\nda67ffff\nda67ffff\nda67fc67\nffffffff\nffffffff\n1\nffffffff\nffffffff\n5a670007\nda67f1ff\nda67f1ff\nda67f1ff\nda67f1e7\nffffffff\nffffffff\n1\nffffffff\nffffffff\nffffffff\n5a67f1ff\n5a67f1f9\n0\n5a670000\n
|
||||
|
||||
.include "testutils.inc"
|
||||
start
|
||||
moveq -1,r3
|
||||
asrq 0,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 ffffffff
|
||||
|
||||
moveq 2,r3
|
||||
asrq 1,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 1
|
||||
|
||||
moveq -1,r3
|
||||
asrq 31,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 ffffffff
|
||||
|
||||
moveq -1,r3
|
||||
asrq 15,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 ffffffff
|
||||
|
||||
move.d 0x5a67f19f,r3
|
||||
asrq 12,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 5a67f
|
||||
|
||||
move.d 0xda67f19f,r3
|
||||
move.d 31,r4
|
||||
asr.d r4,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 ffffffff
|
||||
|
||||
move.d 0xda67f19f,r3
|
||||
move.d 32,r4
|
||||
asr.d r4,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 ffffffff
|
||||
|
||||
move.d 0xda67f19f,r3
|
||||
move.d 33,r4
|
||||
asr.d r4,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 ffffffff
|
||||
|
||||
move.d 0xda67f19f,r3
|
||||
move.d 66,r4
|
||||
asr.d r4,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 f699fc67
|
||||
|
||||
moveq -1,r3
|
||||
moveq 0,r4
|
||||
asr.d r4,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 ffffffff
|
||||
|
||||
moveq 2,r3
|
||||
moveq 1,r4
|
||||
asr.d r4,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 1
|
||||
|
||||
moveq -1,r3
|
||||
moveq 31,r4
|
||||
asr.d r4,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 ffffffff
|
||||
|
||||
moveq -1,r3
|
||||
moveq 15,r4
|
||||
asr.d r4,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 ffffffff
|
||||
|
||||
move.d 0x5a67f19f,r3
|
||||
moveq 12,r4
|
||||
asr.d r4,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 5a67f
|
||||
|
||||
move.d 0xda67f19f,r3
|
||||
move.d 31,r4
|
||||
asr.w r4,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 da67ffff
|
||||
|
||||
move.d 0xda67f19f,r3
|
||||
move.d 32,r4
|
||||
asr.w r4,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 da67ffff
|
||||
|
||||
move.d 0xda67f19f,r3
|
||||
move.d 33,r4
|
||||
asr.w r4,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 da67ffff
|
||||
|
||||
move.d 0xda67f19f,r3
|
||||
move.d 66,r4
|
||||
asr.w r4,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 da67fc67
|
||||
|
||||
moveq -1,r3
|
||||
moveq 0,r4
|
||||
asr.w r4,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 ffffffff
|
||||
|
||||
moveq -1,r3
|
||||
moveq 1,r4
|
||||
asr.w r4,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 ffffffff
|
||||
|
||||
moveq 2,r3
|
||||
moveq 1,r4
|
||||
asr.w r4,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 1
|
||||
|
||||
moveq -1,r3
|
||||
moveq 31,r4
|
||||
asr.w r4,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 ffffffff
|
||||
|
||||
moveq -1,r3
|
||||
moveq 15,r4
|
||||
asr.w r4,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 ffffffff
|
||||
|
||||
move.d 0x5a67719f,r3
|
||||
moveq 12,r4
|
||||
asr.w r4,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 5a670007
|
||||
|
||||
move.d 0xda67f19f,r3
|
||||
move.d 31,r4
|
||||
asr.b r4,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 da67f1ff
|
||||
|
||||
move.d 0xda67f19f,r3
|
||||
move.d 32,r4
|
||||
asr.b r4,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 da67f1ff
|
||||
|
||||
move.d 0xda67f19f,r3
|
||||
move.d 33,r4
|
||||
asr.b r4,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 da67f1ff
|
||||
|
||||
move.d 0xda67f19f,r3
|
||||
move.d 66,r4
|
||||
asr.b r4,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 da67f1e7
|
||||
|
||||
moveq -1,r3
|
||||
moveq 0,r4
|
||||
asr.b r4,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 ffffffff
|
||||
|
||||
moveq -1,r3
|
||||
moveq 1,r4
|
||||
asr.b r4,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 ffffffff
|
||||
|
||||
moveq 2,r3
|
||||
moveq 1,r4
|
||||
asr.b r4,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 1
|
||||
|
||||
moveq -1,r3
|
||||
moveq 31,r4
|
||||
asr.b r4,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 ffffffff
|
||||
|
||||
moveq -1,r3
|
||||
moveq 15,r4
|
||||
asr.b r4,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 ffffffff
|
||||
|
||||
moveq -1,r3
|
||||
moveq 7,r4
|
||||
asr.b r4,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 ffffffff
|
||||
|
||||
; FIXME: was wrong.
|
||||
move.d 0x5a67f19f,r3
|
||||
moveq 12,r4
|
||||
asr.b r4,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 5a67f1ff
|
||||
|
||||
; FIXME: was wrong.
|
||||
move.d 0x5a67f19f,r3
|
||||
moveq 4,r4
|
||||
asr.b r4,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 5a67f1f9
|
||||
|
||||
move.d 0x5a67f19f,r3
|
||||
asrq 31,r3
|
||||
test_move_cc 0 1 0 0
|
||||
checkr3 0
|
||||
|
||||
move.d 0x5a67419f,r3
|
||||
moveq 16,r4
|
||||
asr.w r4,r3
|
||||
test_move_cc 0 1 0 0
|
||||
checkr3 5a670000
|
||||
|
||||
quit
|
|
@ -1,93 +0,0 @@
|
|||
# mach: crisv0 crisv3 crisv8 crisv10 crisv32
|
||||
# output: a\n
|
||||
|
||||
|
||||
.set smalloffset,0
|
||||
.set largeoffset,0
|
||||
|
||||
|
||||
.macro fail
|
||||
jump _fail
|
||||
.endm
|
||||
|
||||
.global main
|
||||
main:
|
||||
moveq 0,$r3
|
||||
|
||||
; Short forward branch.
|
||||
ba 0f
|
||||
addq 1,$r3
|
||||
fail
|
||||
|
||||
; Max short forward branch.
|
||||
1:
|
||||
ba 2f
|
||||
addq 1,$r3
|
||||
fail
|
||||
|
||||
; Short backward branch.
|
||||
0:
|
||||
ba 1b
|
||||
addq 1,$r3
|
||||
fail
|
||||
|
||||
.space 254-2+smalloffset+1b-.,0
|
||||
moveq 0,$r3
|
||||
|
||||
2:
|
||||
; Transit branch (long).
|
||||
ba 3f
|
||||
addq 1,$r3
|
||||
fail
|
||||
|
||||
moveq 0,$r3
|
||||
4:
|
||||
; Long forward branch.
|
||||
ba 5f
|
||||
addq 1,$r3
|
||||
fail
|
||||
|
||||
.space 256-2-smalloffset+4b-.,0
|
||||
|
||||
moveq 0,$r3
|
||||
|
||||
; Max short backward branch.
|
||||
3:
|
||||
ba 4b
|
||||
addq 1,$r3
|
||||
fail
|
||||
|
||||
5:
|
||||
; Max long forward branch.
|
||||
ba 6f
|
||||
addq 1,$r3
|
||||
fail
|
||||
|
||||
.space 32766+largeoffset-2+5b-.,0
|
||||
|
||||
moveq 0,$r3
|
||||
6:
|
||||
; Transit branch.
|
||||
ba 7f
|
||||
addq 1,$r3
|
||||
fail
|
||||
|
||||
moveq 0,$r3
|
||||
9:
|
||||
jsr pass
|
||||
nop
|
||||
|
||||
; Transit branch.
|
||||
moveq 0,$r3
|
||||
7:
|
||||
ba 8f
|
||||
addq 1,$r3
|
||||
fail
|
||||
|
||||
.space 32768-largeoffset+9b-.,0
|
||||
|
||||
8:
|
||||
; Max long backward branch.
|
||||
ba 9b
|
||||
addq 1,$r3
|
||||
fail
|
|
@ -1,102 +0,0 @@
|
|||
# mach: crisv32
|
||||
# output: 0\n0\n0\nfb349abc\n0\n12124243\n0\n0\neab5baad\n0\nefb37832\n
|
||||
|
||||
.include "testutils.inc"
|
||||
start
|
||||
x:
|
||||
setf zncv
|
||||
bsr 0f
|
||||
nop
|
||||
0:
|
||||
test_cc 1 1 1 1
|
||||
move srp,r3
|
||||
sub.d 0b,r3
|
||||
checkr3 0
|
||||
|
||||
bas 1f,mof
|
||||
moveq 0,r0
|
||||
6:
|
||||
nop
|
||||
quit
|
||||
|
||||
2:
|
||||
move srp,r3
|
||||
sub.d 3f,r3
|
||||
checkr3 0
|
||||
move srp,r4
|
||||
subq 4,r4
|
||||
move.d [r4],r3
|
||||
checkr3 fb349abc
|
||||
|
||||
basc 4f,mof
|
||||
nop
|
||||
.dword 0x12124243
|
||||
7:
|
||||
nop
|
||||
quit
|
||||
|
||||
8:
|
||||
move mof,r3
|
||||
sub.d 7f,r3
|
||||
checkr3 0
|
||||
|
||||
move mof,r4
|
||||
subq 4,r4
|
||||
move.d [r4],r3
|
||||
checkr3 eab5baad
|
||||
|
||||
jasc 9f,mof
|
||||
nop
|
||||
.dword 0xefb37832
|
||||
0:
|
||||
quit
|
||||
|
||||
quit
|
||||
9:
|
||||
move mof,r3
|
||||
sub.d 0b,r3
|
||||
checkr3 0
|
||||
|
||||
move mof,r4
|
||||
subq 4,r4
|
||||
move.d [r4],r3
|
||||
checkr3 efb37832
|
||||
|
||||
quit
|
||||
|
||||
4:
|
||||
move mof,r3
|
||||
sub.d 7b,r3
|
||||
checkr3 0
|
||||
move mof,r4
|
||||
subq 4,r4
|
||||
move.d [r4],r3
|
||||
checkr3 12124243
|
||||
basc 5f,bz
|
||||
moveq 0,r3
|
||||
.dword 0x7634aeba
|
||||
quit
|
||||
|
||||
.space 32770,0
|
||||
1:
|
||||
move mof,r3
|
||||
sub.d 6b,r3
|
||||
checkr3 0
|
||||
|
||||
bsrc 2b
|
||||
nop
|
||||
.dword 0xfb349abc
|
||||
3:
|
||||
|
||||
quit
|
||||
|
||||
5:
|
||||
move mof,r3
|
||||
sub.d 7b,r3
|
||||
checkr3 0
|
||||
move.d 8b,r6
|
||||
jasc r6,mof
|
||||
nop
|
||||
.dword 0xeab5baad
|
||||
7:
|
||||
quit
|
|
@ -1,197 +0,0 @@
|
|||
.global main
|
||||
.type main, @function
|
||||
main:
|
||||
clearf nzvc
|
||||
setf nzv
|
||||
bcc 0f
|
||||
addq 1, $r3
|
||||
jump dofail
|
||||
|
||||
0:
|
||||
clearf nzvc
|
||||
setf nzv
|
||||
bcs dofail
|
||||
addq 1,$r3
|
||||
|
||||
clearf nzvc
|
||||
setf ncv
|
||||
bne 1f
|
||||
addq 1, $r3
|
||||
|
||||
fail:
|
||||
dofail:
|
||||
jump _fail
|
||||
|
||||
1:
|
||||
clearf nzvc
|
||||
setf ncv
|
||||
beq dofail
|
||||
addq 1,$r3
|
||||
|
||||
clearf nzvc
|
||||
setf ncz
|
||||
bvc 2f
|
||||
addq 1,$r3
|
||||
jump dofail
|
||||
|
||||
2:
|
||||
clearf nzvc
|
||||
setf ncz
|
||||
bvs dofail
|
||||
addq 1,$r3
|
||||
|
||||
clearf nzvc
|
||||
setf vcz
|
||||
bpl 3f
|
||||
addq 1,$r3
|
||||
jump fail
|
||||
3:
|
||||
clearf nzvc
|
||||
setf vcz
|
||||
bmi dofail
|
||||
addq 1,$r3
|
||||
|
||||
clearf nzvc
|
||||
setf nv
|
||||
bls dofail
|
||||
addq 1,$r3
|
||||
|
||||
clearf nzvc
|
||||
setf nv
|
||||
bhi 4f
|
||||
addq 1,$r3
|
||||
jump dofail
|
||||
|
||||
4:
|
||||
clearf nzvc
|
||||
setf zc
|
||||
bge 5f
|
||||
addq 1,$r3
|
||||
jump dofail
|
||||
|
||||
5:
|
||||
clearf nzvc
|
||||
setf zc
|
||||
blt dofail
|
||||
addq 1,$r3
|
||||
|
||||
clearf nzvc
|
||||
setf c
|
||||
bgt 6f
|
||||
addq 1,$r3
|
||||
jump fail
|
||||
|
||||
6:
|
||||
clearf nzvc
|
||||
setf c
|
||||
ble dofail
|
||||
addq 1,$r3
|
||||
|
||||
;;;;;;;;;;
|
||||
|
||||
setf nzvc
|
||||
clearf nzv
|
||||
bcc dofail
|
||||
addq 1,$r3
|
||||
|
||||
setf nzvc
|
||||
clearf nzv
|
||||
bcs 0f
|
||||
addq 1,$r3
|
||||
jump fail
|
||||
|
||||
0:
|
||||
setf nzvc
|
||||
clearf ncv
|
||||
bne dofail
|
||||
addq 1,$r3
|
||||
|
||||
setf nzvc
|
||||
clearf ncv
|
||||
beq 1f
|
||||
addq 1,$r3
|
||||
jump fail
|
||||
|
||||
1:
|
||||
setf nzvc
|
||||
clearf ncz
|
||||
bvc dofail
|
||||
addq 1,$r3
|
||||
|
||||
setf nzvc
|
||||
clearf ncz
|
||||
bvs 2f
|
||||
addq 1,$r3
|
||||
jump fail
|
||||
|
||||
2:
|
||||
setf nzvc
|
||||
clearf vcz
|
||||
bpl dofail
|
||||
addq 1,$r3
|
||||
|
||||
setf nzvc
|
||||
clearf vcz
|
||||
bmi 3f
|
||||
addq 1,$r3
|
||||
jump fail
|
||||
|
||||
3:
|
||||
setf nzvc
|
||||
clearf nv
|
||||
bls 4f
|
||||
addq 1,$r3
|
||||
jump fail
|
||||
|
||||
4:
|
||||
setf nzvc
|
||||
clearf nv
|
||||
bhi dofail
|
||||
addq 1,$r3
|
||||
|
||||
setf zvc
|
||||
clearf nzc
|
||||
bge dofail
|
||||
addq 1,$r3
|
||||
|
||||
setf nzc
|
||||
clearf vzc
|
||||
blt 5f
|
||||
addq 1,$r3
|
||||
jump fail
|
||||
|
||||
5:
|
||||
setf nzvc
|
||||
clearf c
|
||||
bgt dofail
|
||||
addq 1,$r3
|
||||
|
||||
setf nzvc
|
||||
clearf c
|
||||
ble 6f
|
||||
addq 1,$r3
|
||||
jump fail
|
||||
|
||||
6:
|
||||
; do a forward branch.
|
||||
ba 2f
|
||||
nop
|
||||
.fill 100
|
||||
1:
|
||||
ba 3f
|
||||
nop
|
||||
.fill 800
|
||||
2:
|
||||
ba 1b
|
||||
nop
|
||||
.fill 1024
|
||||
3:
|
||||
|
||||
moveq 31, $r0
|
||||
1: bne 1b
|
||||
subq 1, $r0
|
||||
|
||||
jsr pass
|
||||
moveq 0, $r10
|
||||
ret
|
||||
nop
|
|
@ -1,101 +0,0 @@
|
|||
# mach: crisv0 crisv3 crisv8 crisv10 crisv32
|
||||
# output: 2\n2\nffff\nffffffff\n5432f789\n2\nffff\n2\nffff\nffff\nf789\n2\n2\nff\nff\nff\n89\n0\nff\n
|
||||
|
||||
.include "testutils.inc"
|
||||
start
|
||||
moveq -1,r3
|
||||
moveq 2,r4
|
||||
bound.d 2,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 2
|
||||
|
||||
moveq 2,r3
|
||||
bound.d 0xffffffff,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 2
|
||||
|
||||
move.d 0xffff,r3
|
||||
bound.d 0xffff,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 ffff
|
||||
|
||||
moveq -1,r3
|
||||
bound.d 0xffffffff,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 ffffffff
|
||||
|
||||
move.d 0x78134452,r3
|
||||
bound.d 0x5432f789,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 5432f789
|
||||
|
||||
moveq -1,r3
|
||||
bound.w 2,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 2
|
||||
|
||||
moveq -1,r3
|
||||
bound.w 0xffff,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 ffff
|
||||
|
||||
moveq 2,r3
|
||||
bound.w 0xffff,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 2
|
||||
|
||||
move.d 0xffff,r3
|
||||
bound.w 0xffff,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 ffff
|
||||
|
||||
move.d 0xfedaffff,r3
|
||||
bound.w 0xffff,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 ffff
|
||||
|
||||
move.d 0x78134452,r3
|
||||
bound.w 0xf789,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 f789
|
||||
|
||||
moveq -1,r3
|
||||
bound.b 2,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 2
|
||||
|
||||
moveq 2,r3
|
||||
bound.b 0xff,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 2
|
||||
|
||||
moveq -1,r3
|
||||
bound.b 0xff,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 ff
|
||||
|
||||
move.d 0xff,r3
|
||||
bound.b 0xff,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 ff
|
||||
|
||||
move.d 0xfeda49ff,r3
|
||||
bound.b 0xff,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 ff
|
||||
|
||||
move.d 0x78134452,r3
|
||||
bound.b 0x89,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 89
|
||||
|
||||
bound.w 0,r3
|
||||
test_move_cc 0 1 0 0
|
||||
checkr3 0
|
||||
|
||||
move.d 0xffff,r3
|
||||
bound.b -1,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 ff
|
||||
|
||||
quit
|
|
@ -1,125 +0,0 @@
|
|||
# mach: crisv0 crisv3 crisv8 crisv10 crisv32
|
||||
# output: 2\n2\nffff\nffffffff\n5432f789\n2\n2\nffff\nffff\nffff\nf789\n2\n2\nff\nff\n89\nfeda4953\nfeda4962\n0\n0\n
|
||||
|
||||
.include "testutils.inc"
|
||||
start
|
||||
moveq -1,r3
|
||||
moveq 2,r4
|
||||
bound.d r4,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 2
|
||||
|
||||
moveq 2,r3
|
||||
moveq -1,r4
|
||||
bound.d r4,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 2
|
||||
|
||||
move.d 0xffff,r4
|
||||
move.d r4,r3
|
||||
bound.d r4,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 ffff
|
||||
|
||||
moveq -1,r4
|
||||
move.d r4,r3
|
||||
bound.d r4,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 ffffffff
|
||||
|
||||
move.d 0x5432f789,r4
|
||||
move.d 0x78134452,r3
|
||||
bound.d r4,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 5432f789
|
||||
|
||||
moveq -1,r3
|
||||
moveq 2,r4
|
||||
bound.w r4,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 2
|
||||
|
||||
moveq 2,r3
|
||||
moveq -1,r4
|
||||
bound.w r4,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 2
|
||||
|
||||
moveq -1,r3
|
||||
bound.w r3,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 ffff
|
||||
|
||||
move.d 0xffff,r4
|
||||
move.d r4,r3
|
||||
bound.w r4,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 ffff
|
||||
|
||||
move.d 0xfedaffff,r4
|
||||
move.d r4,r3
|
||||
bound.w r4,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 ffff
|
||||
|
||||
move.d 0x5432f789,r4
|
||||
move.d 0x78134452,r3
|
||||
bound.w r4,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 f789
|
||||
|
||||
moveq -1,r3
|
||||
moveq 2,r4
|
||||
bound.b r4,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 2
|
||||
|
||||
moveq 2,r3
|
||||
moveq -1,r4
|
||||
bound.b r4,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 2
|
||||
|
||||
move.d 0xff,r4
|
||||
move.d r4,r3
|
||||
bound.b r4,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 ff
|
||||
|
||||
move.d 0xfeda49ff,r4
|
||||
move.d r4,r3
|
||||
bound.b r4,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 ff
|
||||
|
||||
move.d 0x5432f789,r4
|
||||
move.d 0x78134452,r3
|
||||
bound.b r4,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 89
|
||||
|
||||
move.d 0xfeda4956,r3
|
||||
move.d 0xfeda4953,r4
|
||||
bound.d r4,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 feda4953
|
||||
|
||||
move.d 0xfeda4962,r3
|
||||
move.d 0xfeda4963,r4
|
||||
bound.d r4,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 feda4962
|
||||
|
||||
move.d 0xfeda4956,r3
|
||||
move.d 0,r4
|
||||
bound.d r4,r3
|
||||
test_move_cc 0 1 0 0
|
||||
checkr3 0
|
||||
|
||||
move.d 0xfeda4956,r4
|
||||
move.d 0,r3
|
||||
bound.d r4,r3
|
||||
test_move_cc 0 1 0 0
|
||||
checkr3 0
|
||||
|
||||
quit
|
|
@ -1,96 +0,0 @@
|
|||
# mach: crisv0 crisv3 crisv8 crisv10 crisv32
|
||||
# output: 1111\n
|
||||
|
||||
.include "testutils.inc"
|
||||
start
|
||||
clearf nzvc
|
||||
moveq -1,r3
|
||||
.if 1 ;..asm.arch.cris.v32
|
||||
.else
|
||||
setf vc
|
||||
.endif
|
||||
btstq 0,r3
|
||||
test_cc 1 0 0 0
|
||||
|
||||
moveq 2,r3
|
||||
btstq 1,r3
|
||||
test_cc 1 0 0 0
|
||||
|
||||
moveq 4,r3
|
||||
btstq 1,r3
|
||||
test_cc 0 1 0 0
|
||||
|
||||
moveq -1,r3
|
||||
btstq 31,r3
|
||||
test_cc 1 0 0 0
|
||||
|
||||
move.d 0x5a67f19f,r3
|
||||
btstq 12,r3
|
||||
test_cc 1 0 0 0
|
||||
|
||||
move.d 0xda67f19f,r3
|
||||
move.d 29,r4
|
||||
btst r4,r3
|
||||
test_cc 0 0 0 0
|
||||
|
||||
move.d 0xda67f19f,r3
|
||||
move.d 32,r4
|
||||
btst r4,r3
|
||||
test_cc 1 0 0 0
|
||||
|
||||
move.d 0xda67f191,r3
|
||||
move.d 33,r4
|
||||
btst r4,r3
|
||||
test_cc 0 0 0 0
|
||||
|
||||
moveq -1,r3
|
||||
moveq 0,r4
|
||||
btst r4,r3
|
||||
test_cc 1 0 0 0
|
||||
|
||||
moveq 2,r3
|
||||
moveq 1,r4
|
||||
btst r4,r3
|
||||
test_cc 1 0 0 0
|
||||
|
||||
moveq -1,r3
|
||||
moveq 31,r4
|
||||
btst r4,r3
|
||||
test_cc 1 0 0 0
|
||||
|
||||
moveq 4,r3
|
||||
btstq 1,r3
|
||||
test_cc 0 1 0 0
|
||||
|
||||
moveq -1,r3
|
||||
moveq 15,r4
|
||||
btst r4,r3
|
||||
test_cc 1 0 0 0
|
||||
|
||||
move.d 0x5a67f19f,r3
|
||||
moveq 12,r4
|
||||
btst r4,r3
|
||||
test_cc 1 0 0 0
|
||||
|
||||
move.d 0x5a678000,r3
|
||||
moveq 11,r4
|
||||
btst r4,r3
|
||||
test_cc 0 1 0 0
|
||||
|
||||
move.d 0x5a67f19f,r3
|
||||
btst r3,r3
|
||||
test_cc 0 0 0 0
|
||||
|
||||
move.d 0x1111,r3
|
||||
checkr3 1111
|
||||
|
||||
; check that X gets cleared and that only the NZ flags are touched.
|
||||
;; move.d 0xff, $r0
|
||||
;; move $r0, $ccs
|
||||
;; btst r3,r3
|
||||
;; move $ccs, $r0
|
||||
;; and.d 0xff, $r0
|
||||
;; cmp.d 0xe3, $r0
|
||||
;; test_cc 0 1 0 0
|
||||
|
||||
quit
|
|
@ -1,19 +0,0 @@
|
|||
# mach: crisv32
|
||||
# output: ef\nef\n
|
||||
|
||||
; Check that "clearf x" doesn't trivially fail.
|
||||
|
||||
.include "testutils.inc"
|
||||
start
|
||||
setf puixnzvc
|
||||
clearf x ; Actually, x would be cleared by almost-all other insns.
|
||||
move ccs,r3
|
||||
and.d 0xff, $r3
|
||||
checkr3 ef
|
||||
|
||||
setf puixnzvc
|
||||
moveq 0, $r3 ; moveq should only clear the xflag.
|
||||
move ccs,r3
|
||||
and.d 0xff, $r3
|
||||
checkr3 ef
|
||||
quit
|
|
@ -1,36 +0,0 @@
|
|||
# mach: crisv3 crisv8 crisv10 crisv32
|
||||
# output: ffffff00\n
|
||||
|
||||
; A bug resulting in a non-effectual clear.b discovered running the GCC
|
||||
; testsuite; jump actually wrote to p0.
|
||||
|
||||
.include "testutils.inc"
|
||||
|
||||
start
|
||||
jump 1f
|
||||
nop
|
||||
.p2align 8
|
||||
1:
|
||||
move.d y,r4
|
||||
|
||||
.if 0 ;0 == ..asm.arch.cris.v32
|
||||
; There was a bug causing this insn to set special register p0
|
||||
; (byte-clear) to 8 (low 8 bits of location after insn).
|
||||
jump [r4+]
|
||||
.endif
|
||||
|
||||
1:
|
||||
move.d 0f,r4
|
||||
|
||||
; The corresponding bug would cause this insn too, to set p0.
|
||||
jump r4
|
||||
nop
|
||||
quit
|
||||
0:
|
||||
moveq -1,r3
|
||||
clear.b r3
|
||||
checkr3 ffffff00
|
||||
quit
|
||||
|
||||
y:
|
||||
.dword 1b
|
|
@ -1,15 +0,0 @@
|
|||
|
||||
|
||||
.include "testutils.inc"
|
||||
|
||||
start
|
||||
|
||||
move.d 4294967283, $r0
|
||||
move.d $r0, $r10
|
||||
cmp.d $r0, $r10
|
||||
beq 1f
|
||||
move.d $r10, $r3
|
||||
fail
|
||||
1:
|
||||
pass
|
||||
quit
|
|
@ -1,86 +0,0 @@
|
|||
# mach: crisv0 crisv3 crisv8 crisv10 crisv32
|
||||
# output: ffffffff\n2\nffff\nffffffff\n78134452\nffffffff\n2\nffff\nfedaffff\n78134452\nffffffff\n2\nff\nfeda49ff\n78134452\n85649282\n
|
||||
|
||||
.include "testutils.inc"
|
||||
start
|
||||
moveq -1,r3
|
||||
cmp.d -2,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 ffffffff
|
||||
|
||||
moveq 2,r3
|
||||
cmp.d 1,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 2
|
||||
|
||||
move.d 0xffff,r3
|
||||
cmp.d -0xffff,r3
|
||||
test_cc 0 0 0 1
|
||||
checkr3 ffff
|
||||
|
||||
moveq -1,r3
|
||||
cmp.d 1,r3
|
||||
test_cc 1 0 0 0
|
||||
checkr3 ffffffff
|
||||
|
||||
move.d 0x78134452,r3
|
||||
cmp.d -0x5432f789,r3
|
||||
test_cc 1 0 1 1
|
||||
checkr3 78134452
|
||||
|
||||
moveq -1,r3
|
||||
cmp.w -2,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 ffffffff
|
||||
|
||||
moveq 2,r3
|
||||
cmp.w 1,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 2
|
||||
|
||||
move.d 0xffff,r3
|
||||
cmp.w 1,r3
|
||||
test_cc 1 0 0 0
|
||||
checkr3 ffff
|
||||
|
||||
move.d 0xfedaffff,r3
|
||||
cmp.w 1,r3
|
||||
test_cc 1 0 0 0
|
||||
checkr3 fedaffff
|
||||
|
||||
move.d 0x78134452,r3
|
||||
cmp.w 0x877,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 78134452
|
||||
|
||||
moveq -1,r3
|
||||
cmp.b -2,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 ffffffff
|
||||
|
||||
moveq 2,r3
|
||||
cmp.b 1,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 2
|
||||
|
||||
move.d 0xff,r3
|
||||
cmp.b 1,r3
|
||||
test_cc 1 0 0 0
|
||||
checkr3 ff
|
||||
|
||||
move.d 0xfeda49ff,r3
|
||||
cmp.b 1,r3
|
||||
test_cc 1 0 0 0
|
||||
checkr3 feda49ff
|
||||
|
||||
move.d 0x78134452,r3
|
||||
cmp.b 0x77,r3
|
||||
test_cc 1 0 0 1
|
||||
checkr3 78134452
|
||||
|
||||
move.d 0x85649282,r3
|
||||
cmp.b 0x82,r3
|
||||
test_cc 0 1 0 0
|
||||
checkr3 85649282
|
||||
|
||||
quit
|
|
@ -1,96 +0,0 @@
|
|||
# mach: crisv0 crisv3 crisv8 crisv10 crisv32
|
||||
# output: ffffffff\n2\nffff\nffffffff\n78134452\nffffffff\n2\nffff\nfedaffff\n78134452\nffffffff\n2\nff\nfeda49ff\n78134452\n85649222\n
|
||||
|
||||
.include "testutils.inc"
|
||||
.data
|
||||
x:
|
||||
.dword -2,1,-0xffff,1,-0x5432f789
|
||||
.word -2,1,1,0x877
|
||||
.byte -2,1,0x77
|
||||
.byte 0x22
|
||||
|
||||
start
|
||||
moveq -1,r3
|
||||
move.d x,r5
|
||||
cmp.d [r5+],r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 ffffffff
|
||||
|
||||
moveq 2,r3
|
||||
cmp.d [r5],r3
|
||||
test_cc 0 0 0 0
|
||||
addq 4,r5
|
||||
checkr3 2
|
||||
|
||||
move.d 0xffff,r3
|
||||
cmp.d [r5+],r3
|
||||
test_cc 0 0 0 1
|
||||
checkr3 ffff
|
||||
|
||||
moveq -1,r3
|
||||
cmp.d [r5+],r3
|
||||
test_cc 1 0 0 0
|
||||
checkr3 ffffffff
|
||||
|
||||
move.d 0x78134452,r3
|
||||
cmp.d [r5+],r3
|
||||
test_cc 1 0 1 1
|
||||
checkr3 78134452
|
||||
|
||||
moveq -1,r3
|
||||
cmp.w [r5+],r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 ffffffff
|
||||
|
||||
moveq 2,r3
|
||||
cmp.w [r5+],r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 2
|
||||
|
||||
move.d 0xffff,r3
|
||||
cmp.w [r5],r3
|
||||
test_cc 1 0 0 0
|
||||
checkr3 ffff
|
||||
|
||||
move.d 0xfedaffff,r3
|
||||
cmp.w [r5+],r3
|
||||
test_cc 1 0 0 0
|
||||
checkr3 fedaffff
|
||||
|
||||
move.d 0x78134452,r3
|
||||
cmp.w [r5+],r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 78134452
|
||||
|
||||
moveq -1,r3
|
||||
cmp.b [r5],r3
|
||||
test_cc 0 0 0 0
|
||||
addq 1,r5
|
||||
checkr3 ffffffff
|
||||
|
||||
moveq 2,r3
|
||||
cmp.b [r5],r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 2
|
||||
|
||||
move.d 0xff,r3
|
||||
cmp.b [r5],r3
|
||||
test_cc 1 0 0 0
|
||||
checkr3 ff
|
||||
|
||||
move.d 0xfeda49ff,r3
|
||||
cmp.b [r5+],r3
|
||||
test_cc 1 0 0 0
|
||||
checkr3 feda49ff
|
||||
|
||||
move.d 0x78134452,r3
|
||||
cmp.b [r5+],r3
|
||||
test_cc 1 0 0 1
|
||||
checkr3 78134452
|
||||
|
||||
move.d 0x85649222,r3
|
||||
cmp.b [r5],r3
|
||||
test_cc 0 1 0 0
|
||||
checkr3 85649222
|
||||
|
||||
quit
|
|
@ -1,75 +0,0 @@
|
|||
# mach: crisv3 crisv8 crisv10 crisv32
|
||||
# output: 1\n1\n1\n1f\n1f\nffffffe1\nffffffe1\nffffffe0\n0\n0\nffffffff\nffffffff\n10000\n100\n5678900\n
|
||||
|
||||
.include "testutils.inc"
|
||||
start
|
||||
moveq 1,r3
|
||||
cmpq 1,r3
|
||||
test_cc 0 1 0 0
|
||||
checkr3 1
|
||||
|
||||
cmpq -1,r3
|
||||
test_cc 0 0 0 1
|
||||
checkr3 1
|
||||
|
||||
cmpq 31,r3
|
||||
test_cc 1 0 0 1
|
||||
checkr3 1
|
||||
|
||||
moveq 31,r3
|
||||
cmpq 31,r3
|
||||
test_cc 0 1 0 0
|
||||
checkr3 1f
|
||||
|
||||
cmpq -31,r3
|
||||
test_cc 0 0 0 1
|
||||
checkr3 1f
|
||||
|
||||
movs.b -31,r3
|
||||
cmpq -31,r3
|
||||
test_cc 0 1 0 0
|
||||
checkr3 ffffffe1
|
||||
|
||||
cmpq -32,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 ffffffe1
|
||||
|
||||
movs.b -32,r3
|
||||
cmpq -32,r3
|
||||
test_cc 0 1 0 0
|
||||
checkr3 ffffffe0
|
||||
|
||||
moveq 0,r3
|
||||
cmpq 1,r3
|
||||
test_cc 1 0 0 1
|
||||
checkr3 0
|
||||
|
||||
cmpq -32,r3
|
||||
test_cc 0 0 0 1
|
||||
checkr3 0
|
||||
|
||||
moveq -1,r3
|
||||
cmpq 1,r3
|
||||
test_cc 1 0 0 0
|
||||
checkr3 ffffffff
|
||||
|
||||
cmpq -1,r3
|
||||
test_cc 0 1 0 0
|
||||
checkr3 ffffffff
|
||||
|
||||
move.d 0x10000,r3
|
||||
cmpq 1,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 10000
|
||||
|
||||
move.d 0x100,r3
|
||||
cmpq 1,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 100
|
||||
|
||||
move.d 0x5678900,r3
|
||||
cmpq 7,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 5678900
|
||||
|
||||
quit
|
|
@ -1,102 +0,0 @@
|
|||
# mach: crisv0 crisv3 crisv8 crisv10 crisv32
|
||||
# output: ffffffff\n2\nffff\nffffffff\n78134452\nffffffff\n2\nffff\nfedaffff\n78134452\nffffffff\n2\nff\nfeda49ff\n78134452\n85649222\n
|
||||
|
||||
.include "testutils.inc"
|
||||
start
|
||||
moveq -1,r3
|
||||
moveq -2,r4
|
||||
cmp.d r4,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 ffffffff
|
||||
|
||||
moveq 2,r3
|
||||
moveq 1,r4
|
||||
cmp.d r4,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 2
|
||||
|
||||
move.d 0xffff,r3
|
||||
move.d -0xffff,r4
|
||||
cmp.d r4,r3
|
||||
test_cc 0 0 0 1
|
||||
checkr3 ffff
|
||||
|
||||
moveq 1,r4
|
||||
moveq -1,r3
|
||||
cmp.d r4,r3
|
||||
test_cc 1 0 0 0
|
||||
checkr3 ffffffff
|
||||
|
||||
move.d -0x5432f789,r4
|
||||
move.d 0x78134452,r3
|
||||
cmp.d r4,r3
|
||||
test_cc 1 0 1 1
|
||||
checkr3 78134452
|
||||
|
||||
moveq -1,r3
|
||||
moveq -2,r4
|
||||
cmp.w r4,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 ffffffff
|
||||
|
||||
moveq 2,r3
|
||||
moveq 1,r4
|
||||
cmp.w r4,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 2
|
||||
|
||||
move.d 0xffff,r3
|
||||
move.d -0xffff,r4
|
||||
cmp.w r4,r3
|
||||
test_cc 1 0 0 0
|
||||
checkr3 ffff
|
||||
|
||||
move.d 0xfedaffff,r3
|
||||
move.d -0xfedaffff,r4
|
||||
cmp.w r4,r3
|
||||
test_cc 1 0 0 0
|
||||
checkr3 fedaffff
|
||||
|
||||
move.d -0x5432f789,r4
|
||||
move.d 0x78134452,r3
|
||||
cmp.w r4,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 78134452
|
||||
|
||||
moveq -1,r3
|
||||
moveq -2,r4
|
||||
cmp.b r4,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 ffffffff
|
||||
|
||||
moveq 2,r3
|
||||
moveq 1,r4
|
||||
cmp.b r4,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 2
|
||||
|
||||
move.d -0xff,r4
|
||||
move.d 0xff,r3
|
||||
cmp.b r4,r3
|
||||
test_cc 1 0 0 0
|
||||
checkr3 ff
|
||||
|
||||
move.d -0xfeda49ff,r4
|
||||
move.d 0xfeda49ff,r3
|
||||
cmp.b r4,r3
|
||||
test_cc 1 0 0 0
|
||||
checkr3 feda49ff
|
||||
|
||||
move.d -0x5432f789,r4
|
||||
move.d 0x78134452,r3
|
||||
cmp.b r4,r3
|
||||
test_cc 1 0 0 1
|
||||
checkr3 78134452
|
||||
|
||||
move.d 0x85649222,r3
|
||||
move.d 0x77445622,r4
|
||||
cmp.b r4,r3
|
||||
test_cc 0 1 0 0
|
||||
checkr3 85649222
|
||||
|
||||
quit
|
|
@ -1,92 +0,0 @@
|
|||
# mach: crisv0 crisv3 crisv8 crisv10 crisv32
|
||||
# output: 2\n2\n2\n2\nffff\nffff\nffff\nffff\nffffffff\nffffffff\nffffffff\n78134452\n78134452\n78134452\n78134452\n4452\n80000032\n
|
||||
|
||||
.include "testutils.inc"
|
||||
start
|
||||
moveq 2,r3
|
||||
cmps.b 0xff,r3
|
||||
test_cc 0 0 0 1
|
||||
checkr3 2
|
||||
|
||||
moveq 2,r3
|
||||
cmps.w 0xffff,r3
|
||||
test_cc 0 0 0 1
|
||||
checkr3 2
|
||||
|
||||
moveq 2,r3
|
||||
cmpu.b 0xff,r3
|
||||
test_cc 1 0 0 1
|
||||
checkr3 2
|
||||
|
||||
moveq 2,r3
|
||||
move.d 0xffffffff,r4
|
||||
cmpu.w -1,r3
|
||||
test_cc 1 0 0 1
|
||||
checkr3 2
|
||||
|
||||
move.d 0xffff,r3
|
||||
cmpu.b -1,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 ffff
|
||||
|
||||
move.d 0xffff,r3
|
||||
cmpu.w -1,r3
|
||||
test_cc 0 1 0 0
|
||||
checkr3 ffff
|
||||
|
||||
move.d 0xffff,r3
|
||||
cmps.b 0xff,r3
|
||||
test_cc 0 0 0 1
|
||||
checkr3 ffff
|
||||
|
||||
move.d 0xffff,r3
|
||||
cmps.w 0xffff,r3
|
||||
test_cc 0 0 0 1
|
||||
checkr3 ffff
|
||||
|
||||
moveq -1,r3
|
||||
cmps.b 0xff,r3
|
||||
test_cc 0 1 0 0
|
||||
checkr3 ffffffff
|
||||
|
||||
moveq -1,r3
|
||||
cmps.w 0xff,r3
|
||||
test_cc 1 0 0 0
|
||||
checkr3 ffffffff
|
||||
|
||||
moveq -1,r3
|
||||
cmps.w 0xffff,r3
|
||||
test_cc 0 1 0 0
|
||||
checkr3 ffffffff
|
||||
|
||||
move.d 0x78134452,r3
|
||||
cmpu.b 0x89,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 78134452
|
||||
|
||||
move.d 0x78134452,r3
|
||||
cmps.b 0x89,r3
|
||||
test_cc 0 0 0 1
|
||||
checkr3 78134452
|
||||
|
||||
move.d 0x78134452,r3
|
||||
cmpu.w 0xf789,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 78134452
|
||||
|
||||
move.d 0x78134452,r3
|
||||
cmps.w 0xf789,r3
|
||||
test_cc 0 0 0 1
|
||||
checkr3 78134452
|
||||
|
||||
move.d 0x4452,r3
|
||||
cmps.w 0x8002,r3
|
||||
test_cc 0 0 0 1
|
||||
checkr3 4452
|
||||
|
||||
move.d 0x80000032,r3
|
||||
cmpu.w 0x764,r3
|
||||
test_cc 0 0 1 0
|
||||
checkr3 80000032
|
||||
|
||||
quit
|
|
@ -1,106 +0,0 @@
|
|||
# mach: crisv0 crisv3 crisv8 crisv10 crisv32
|
||||
# output: 2\n2\n2\n2\nffff\nffff\nffff\nffff\nffffffff\nffffffff\nffffffff\n78134452\n78134452\n78134452\n78134452\n4452\n80000032\n
|
||||
|
||||
.include "testutils.inc"
|
||||
.data
|
||||
x:
|
||||
.byte 0xff
|
||||
.word 0xffff
|
||||
.word 0xff
|
||||
.word 0xffff
|
||||
.byte 0x89
|
||||
.word 0xf789
|
||||
.word 0x8002
|
||||
.word 0x764
|
||||
|
||||
start
|
||||
moveq 2,r3
|
||||
move.d x,r5
|
||||
cmps.b [r5+],r3
|
||||
test_cc 0 0 0 1
|
||||
checkr3 2
|
||||
|
||||
moveq 2,r3
|
||||
cmps.w [r5+],r3
|
||||
test_cc 0 0 0 1
|
||||
checkr3 2
|
||||
|
||||
moveq 2,r3
|
||||
subq 3,r5
|
||||
cmpu.b [r5+],r3
|
||||
test_cc 1 0 0 1
|
||||
checkr3 2
|
||||
|
||||
moveq 2,r3
|
||||
cmpu.w [r5+],r3
|
||||
test_cc 1 0 0 1
|
||||
subq 3,r5
|
||||
checkr3 2
|
||||
|
||||
move.d 0xffff,r3
|
||||
cmpu.b [r5],r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 ffff
|
||||
|
||||
move.d 0xffff,r3
|
||||
cmpu.w [r5],r3
|
||||
test_cc 0 1 0 0
|
||||
checkr3 ffff
|
||||
|
||||
move.d 0xffff,r3
|
||||
cmps.b [r5],r3
|
||||
test_cc 0 0 0 1
|
||||
checkr3 ffff
|
||||
|
||||
move.d 0xffff,r3
|
||||
cmps.w [r5],r3
|
||||
test_cc 0 0 0 1
|
||||
checkr3 ffff
|
||||
|
||||
moveq -1,r3
|
||||
cmps.b [r5],r3
|
||||
test_cc 0 1 0 0
|
||||
addq 3,r5
|
||||
checkr3 ffffffff
|
||||
|
||||
moveq -1,r3
|
||||
cmps.w [r5+],r3
|
||||
test_cc 1 0 0 0
|
||||
checkr3 ffffffff
|
||||
|
||||
moveq -1,r3
|
||||
cmps.w [r5+],r3
|
||||
test_cc 0 1 0 0
|
||||
checkr3 ffffffff
|
||||
|
||||
move.d 0x78134452,r3
|
||||
cmpu.b [r5],r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 78134452
|
||||
|
||||
move.d 0x78134452,r3
|
||||
cmps.b [r5+],r3
|
||||
test_cc 0 0 0 1
|
||||
checkr3 78134452
|
||||
|
||||
move.d 0x78134452,r3
|
||||
cmpu.w [r5],r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 78134452
|
||||
|
||||
move.d 0x78134452,r3
|
||||
cmps.w [r5+],r3
|
||||
test_cc 0 0 0 1
|
||||
checkr3 78134452
|
||||
|
||||
move.d 0x4452,r3
|
||||
cmps.w [r5+],r3
|
||||
test_cc 0 0 0 1
|
||||
checkr3 4452
|
||||
|
||||
move.d 0x80000032,r3
|
||||
cmpu.w [r5+],r3
|
||||
test_cc 0 0 1 0
|
||||
checkr3 80000032
|
||||
|
||||
quit
|
|
@ -1,42 +0,0 @@
|
|||
# mach: crisv0 crisv3 crisv8 crisv10 crisv32
|
||||
# output: fffffffc\n4\nffff\nfffffffe\n9bf3911b\n0\n
|
||||
|
||||
.include "testutils.inc"
|
||||
start
|
||||
moveq -1,r3
|
||||
moveq 2,r4
|
||||
dstep r4,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 fffffffc
|
||||
|
||||
moveq 2,r3
|
||||
moveq -1,r4
|
||||
dstep r4,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 4
|
||||
|
||||
move.d 0xffff,r4
|
||||
move.d r4,r3
|
||||
dstep r4,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 ffff
|
||||
|
||||
moveq -1,r4
|
||||
move.d r4,r3
|
||||
dstep r4,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 fffffffe
|
||||
|
||||
move.d 0x5432f789,r4
|
||||
move.d 0x78134452,r3
|
||||
dstep r4,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 9bf3911b
|
||||
|
||||
move.d 0xffff,r3
|
||||
move.d 0x1fffe,r4
|
||||
dstep r4,r3
|
||||
test_move_cc 0 1 0 0
|
||||
checkr3 0
|
||||
|
||||
quit
|
|
@ -1,85 +0,0 @@
|
|||
# mach: crisv3 crisv8 crisv10 crisv32
|
||||
# output: 0\n0\n0\n0\n0\n0\n
|
||||
|
||||
# Test that jsr Rn and jsr [PC+] work.
|
||||
|
||||
.include "testutils.inc"
|
||||
start
|
||||
x:
|
||||
move.d 0f,r6
|
||||
setf nzvc
|
||||
jsr r6
|
||||
.if 1; ..asm.arch.cris.v32
|
||||
nop
|
||||
.endif
|
||||
0:
|
||||
test_move_cc 1 1 1 1
|
||||
move srp,r3
|
||||
sub.d 0b,r3
|
||||
checkr3 0
|
||||
|
||||
move.d 1f,r0
|
||||
setf nzvc
|
||||
jsr r0
|
||||
.if 1 ; ..asm.arch.cris.v32
|
||||
moveq 0,r0
|
||||
.endif
|
||||
6:
|
||||
nop
|
||||
quit
|
||||
|
||||
2:
|
||||
test_move_cc 0 0 0 0
|
||||
move srp,r3
|
||||
sub.d 3f,r3
|
||||
checkr3 0
|
||||
jsr 4f
|
||||
.if 1 ; ..asm.arch.cris.v32
|
||||
nop
|
||||
.endif
|
||||
7:
|
||||
nop
|
||||
quit
|
||||
|
||||
8:
|
||||
move srp,r3
|
||||
sub.d 7b,r3
|
||||
checkr3 0
|
||||
quit
|
||||
|
||||
4:
|
||||
move srp,r3
|
||||
sub.d 7b,r3
|
||||
checkr3 0
|
||||
move.d 5f,r3
|
||||
jump r3
|
||||
.if 1; ..asm.arch.cris.v32
|
||||
moveq 0,r3
|
||||
.endif
|
||||
quit
|
||||
|
||||
.space 32770,0
|
||||
1:
|
||||
test_move_cc 1 1 1 1
|
||||
move srp,r3
|
||||
sub.d 6b,r3
|
||||
checkr3 0
|
||||
|
||||
clearf cznv
|
||||
jsr 2b
|
||||
.if 1; ..asm.arch.cris.v32
|
||||
nop
|
||||
.endif
|
||||
3:
|
||||
|
||||
quit
|
||||
|
||||
5:
|
||||
move srp,r3
|
||||
sub.d 7b,r3
|
||||
checkr3 0
|
||||
jump 8b
|
||||
.if 1 ; ..asm.arch.cris.v32
|
||||
nop
|
||||
.endif
|
||||
quit
|
|
@ -1,78 +0,0 @@
|
|||
# mach: crisv32
|
||||
# output: 0\n0\nfffffffa\nfffffffe\nffffffda\n1e\n1e\n0\n
|
||||
|
||||
.include "testutils.inc"
|
||||
|
||||
; To accommodate dumpr3 with more than one instruction, keep it
|
||||
; out of lapc operand ranges and difference calculations.
|
||||
|
||||
start
|
||||
lapc.d 0f,r3
|
||||
0:
|
||||
sub.d .,r3
|
||||
checkr3 0
|
||||
|
||||
lapcq 0f,r3
|
||||
0:
|
||||
sub.d .,r3
|
||||
checkr3 0
|
||||
|
||||
lapc.d .,r3
|
||||
sub.d .,r3
|
||||
checkr3 fffffffa
|
||||
|
||||
lapcq .,r3
|
||||
sub.d .,r3
|
||||
checkr3 fffffffe
|
||||
|
||||
0:
|
||||
.rept 16
|
||||
nop
|
||||
.endr
|
||||
lapc.d 0b,r3
|
||||
sub.d .,r3
|
||||
checkr3 ffffffda
|
||||
|
||||
setf zcvn
|
||||
lapc.d 0f,r3
|
||||
test_cc 1 1 1 1
|
||||
sub.d .,r3
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
0:
|
||||
checkr3 1e
|
||||
0:
|
||||
lapcq 0f,r3
|
||||
sub.d 0b,r3
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
0:
|
||||
checkr3 1e
|
||||
clearf cn
|
||||
setf zv
|
||||
1:
|
||||
lapcq .,r3
|
||||
test_cc 0 1 1 0
|
||||
sub.d 1b,r3
|
||||
checkr3 0
|
||||
|
||||
quit
|
|
@ -1,217 +0,0 @@
|
|||
# mach: crisv0 crisv3 crisv8 crisv10 crisv32
|
||||
# output: ffffffff\n4\n80000000\nffff8000\n7f19f000\n80000000\n0\n0\n699fc67c\nffffffff\n4\n80000000\nffff8000\n7f19f000\nda670000\nda670000\nda670000\nda67c67c\nffffffff\nfffafffe\n4\nffff0000\nffff8000\n5a67f000\nda67f100\nda67f100\nda67f100\nda67f17c\nfff3faff\nfff3fafe\n4\nffffff00\nffffff00\nffffff80\n5a67f100\n5a67f1f0\n
|
||||
|
||||
.include "testutils.inc"
|
||||
start
|
||||
moveq -1,r3
|
||||
lslq 0,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 ffffffff
|
||||
|
||||
moveq 2,r3
|
||||
lslq 1,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 4
|
||||
|
||||
moveq -1,r3
|
||||
lslq 31,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 80000000
|
||||
|
||||
moveq -1,r3
|
||||
lslq 15,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 ffff8000
|
||||
|
||||
move.d 0x5a67f19f,r3
|
||||
lslq 12,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 7f19f000
|
||||
|
||||
move.d 0xda67f19f,r3
|
||||
move.d 31,r4
|
||||
lsl.d r4,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 80000000
|
||||
|
||||
move.d 0xda67f19f,r3
|
||||
move.d 32,r4
|
||||
lsl.d r4,r3
|
||||
test_move_cc 0 1 0 0
|
||||
checkr3 0
|
||||
|
||||
move.d 0xda67f19f,r3
|
||||
move.d 33,r4
|
||||
lsl.d r4,r3
|
||||
test_move_cc 0 1 0 0
|
||||
checkr3 0
|
||||
|
||||
move.d 0xda67f19f,r3
|
||||
move.d 66,r4
|
||||
lsl.d r4,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 699fc67c
|
||||
|
||||
moveq -1,r3
|
||||
moveq 0,r4
|
||||
lsl.d r4,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 ffffffff
|
||||
|
||||
moveq 2,r3
|
||||
moveq 1,r4
|
||||
lsl.d r4,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 4
|
||||
|
||||
moveq -1,r3
|
||||
moveq 31,r4
|
||||
lsl.d r4,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 80000000
|
||||
|
||||
moveq -1,r3
|
||||
moveq 15,r4
|
||||
lsl.d r4,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 ffff8000
|
||||
|
||||
move.d 0x5a67f19f,r3
|
||||
moveq 12,r4
|
||||
lsl.d r4,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 7f19f000
|
||||
|
||||
move.d 0xda67f19f,r3
|
||||
move.d 31,r4
|
||||
lsl.w r4,r3
|
||||
test_move_cc 0 1 0 0
|
||||
checkr3 da670000
|
||||
|
||||
move.d 0xda67f19f,r3
|
||||
move.d 32,r4
|
||||
lsl.w r4,r3
|
||||
test_move_cc 0 1 0 0
|
||||
checkr3 da670000
|
||||
|
||||
move.d 0xda67f19f,r3
|
||||
move.d 33,r4
|
||||
lsl.w r4,r3
|
||||
test_move_cc 0 1 0 0
|
||||
checkr3 da670000
|
||||
|
||||
move.d 0xda67f19f,r3
|
||||
move.d 66,r4
|
||||
lsl.w r4,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 da67c67c
|
||||
|
||||
moveq -1,r3
|
||||
moveq 0,r4
|
||||
lsl.w r4,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 ffffffff
|
||||
|
||||
move.d 0xfffaffff,r3
|
||||
moveq 1,r4
|
||||
lsl.w r4,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 fffafffe
|
||||
|
||||
moveq 2,r3
|
||||
moveq 1,r4
|
||||
lsl.w r4,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 4
|
||||
|
||||
moveq -1,r3
|
||||
moveq 31,r4
|
||||
lsl.w r4,r3
|
||||
test_move_cc 0 1 0 0
|
||||
checkr3 ffff0000
|
||||
|
||||
moveq -1,r3
|
||||
moveq 15,r4
|
||||
lsl.w r4,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 ffff8000
|
||||
|
||||
move.d 0x5a67f19f,r3
|
||||
moveq 12,r4
|
||||
lsl.w r4,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 5a67f000
|
||||
|
||||
move.d 0xda67f19f,r3
|
||||
move.d 31,r4
|
||||
lsl.b r4,r3
|
||||
test_move_cc 0 1 0 0
|
||||
checkr3 da67f100
|
||||
|
||||
move.d 0xda67f19f,r3
|
||||
move.d 32,r4
|
||||
lsl.b r4,r3
|
||||
test_move_cc 0 1 0 0
|
||||
checkr3 da67f100
|
||||
|
||||
move.d 0xda67f19f,r3
|
||||
move.d 33,r4
|
||||
lsl.b r4,r3
|
||||
test_move_cc 0 1 0 0
|
||||
checkr3 da67f100
|
||||
|
||||
move.d 0xda67f19f,r3
|
||||
move.d 66,r4
|
||||
lsl.b r4,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 da67f17c
|
||||
|
||||
move.d 0xfff3faff,r3
|
||||
moveq 0,r4
|
||||
lsl.b r4,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 fff3faff
|
||||
|
||||
move.d 0xfff3faff,r3
|
||||
moveq 1,r4
|
||||
lsl.b r4,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 fff3fafe
|
||||
|
||||
moveq 2,r3
|
||||
moveq 1,r4
|
||||
lsl.b r4,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 4
|
||||
|
||||
moveq -1,r3
|
||||
moveq 31,r4
|
||||
lsl.b r4,r3
|
||||
test_move_cc 0 1 0 0
|
||||
checkr3 ffffff00
|
||||
|
||||
moveq -1,r3
|
||||
moveq 15,r4
|
||||
lsl.b r4,r3
|
||||
test_move_cc 0 1 0 0
|
||||
checkr3 ffffff00
|
||||
|
||||
moveq -1,r3
|
||||
moveq 7,r4
|
||||
lsl.b r4,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 ffffff80
|
||||
|
||||
move.d 0x5a67f19f,r3
|
||||
moveq 12,r4
|
||||
lsl.b r4,r3
|
||||
test_move_cc 0 1 0 0
|
||||
checkr3 5a67f100
|
||||
|
||||
move.d 0x5a67f19f,r3
|
||||
moveq 4,r4
|
||||
lsl.b r4,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 5a67f1f0
|
||||
|
||||
quit
|
|
@ -1,218 +0,0 @@
|
|||
# mach: crisv0 crisv3 crisv8 crisv10 crisv32
|
||||
# output: ffffffff\n1\n1\n1ffff\n5a67f\n1\n0\n0\n3699fc67\nffffffff\n1\n1\n1ffff\n5a67f\nda670000\nda670000\nda670000\nda673c67\nffffffff\nffff7fff\n1\nffff0000\nffff0001\n5a67000f\nda67f100\nda67f100\nda67f100\nda67f127\nffffffff\nffffff7f\n1\nffffff00\nffffff00\nffffff01\n5a67f100\n5a67f109\n
|
||||
|
||||
.include "testutils.inc"
|
||||
start
|
||||
moveq -1,r3
|
||||
lsrq 0,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 ffffffff
|
||||
|
||||
moveq 2,r3
|
||||
lsrq 1,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 1
|
||||
|
||||
moveq -1,r3
|
||||
lsrq 31,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 1
|
||||
|
||||
moveq -1,r3
|
||||
lsrq 15,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 1ffff
|
||||
|
||||
move.d 0x5a67f19f,r3
|
||||
lsrq 12,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 5a67f
|
||||
|
||||
move.d 0xda67f19f,r3
|
||||
move.d 31,r4
|
||||
lsr.d r4,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 1
|
||||
|
||||
move.d 0xda67f19f,r3
|
||||
move.d 32,r4
|
||||
lsr.d r4,r3
|
||||
test_move_cc 0 1 0 0
|
||||
checkr3 0
|
||||
|
||||
move.d 0xda67f19f,r3
|
||||
move.d 33,r4
|
||||
lsr.d r4,r3
|
||||
test_move_cc 0 1 0 0
|
||||
checkr3 0
|
||||
|
||||
move.d 0xda67f19f,r3
|
||||
move.d 66,r4
|
||||
lsr.d r4,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 3699fc67
|
||||
|
||||
moveq -1,r3
|
||||
moveq 0,r4
|
||||
lsr.d r4,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 ffffffff
|
||||
|
||||
moveq 2,r3
|
||||
moveq 1,r4
|
||||
lsr.d r4,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 1
|
||||
|
||||
moveq -1,r3
|
||||
moveq 31,r4
|
||||
lsr.d r4,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 1
|
||||
|
||||
moveq -1,r3
|
||||
moveq 15,r4
|
||||
lsr.d r4,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 1ffff
|
||||
|
||||
move.d 0x5a67f19f,r3
|
||||
moveq 12,r4
|
||||
lsr.d r4,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 5a67f
|
||||
|
||||
move.d 0xda67f19f,r3
|
||||
move.d 31,r4
|
||||
lsr.w r4,r3
|
||||
test_move_cc 0 1 0 0
|
||||
checkr3 da670000
|
||||
|
||||
move.d 0xda67f19f,r3
|
||||
move.d 32,r4
|
||||
lsr.w r4,r3
|
||||
test_move_cc 0 1 0 0
|
||||
checkr3 da670000
|
||||
|
||||
move.d 0xda67f19f,r3
|
||||
move.d 33,r4
|
||||
lsr.w r4,r3
|
||||
test_move_cc 0 1 0 0
|
||||
checkr3 da670000
|
||||
|
||||
move.d 0xda67f19f,r3
|
||||
move.d 66,r4
|
||||
lsr.w r4,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 da673c67
|
||||
|
||||
moveq -1,r3
|
||||
moveq 0,r4
|
||||
lsr.w r4,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 ffffffff
|
||||
|
||||
moveq -1,r3
|
||||
moveq 1,r4
|
||||
lsr.w r4,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 ffff7fff
|
||||
|
||||
moveq 2,r3
|
||||
moveq 1,r4
|
||||
lsr.w r4,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 1
|
||||
|
||||
;; FIXME: this was wrong. Z should be set.
|
||||
moveq -1,r3
|
||||
moveq 31,r4
|
||||
lsr.w r4,r3
|
||||
test_move_cc 0 1 0 0
|
||||
checkr3 ffff0000
|
||||
|
||||
moveq -1,r3
|
||||
moveq 15,r4
|
||||
lsr.w r4,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 ffff0001
|
||||
|
||||
move.d 0x5a67f19f,r3
|
||||
moveq 12,r4
|
||||
lsr.w r4,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 5a67000f
|
||||
|
||||
move.d 0xda67f19f,r3
|
||||
move.d 31,r4
|
||||
lsr.b r4,r3
|
||||
test_move_cc 0 1 0 0
|
||||
checkr3 da67f100
|
||||
|
||||
move.d 0xda67f19f,r3
|
||||
move.d 32,r4
|
||||
lsr.b r4,r3
|
||||
test_move_cc 0 1 0 0
|
||||
checkr3 da67f100
|
||||
|
||||
move.d 0xda67f19f,r3
|
||||
move.d 33,r4
|
||||
lsr.b r4,r3
|
||||
test_move_cc 0 1 0 0
|
||||
checkr3 da67f100
|
||||
|
||||
move.d 0xda67f19f,r3
|
||||
move.d 66,r4
|
||||
lsr.b r4,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 da67f127
|
||||
|
||||
moveq -1,r3
|
||||
moveq 0,r4
|
||||
lsr.b r4,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 ffffffff
|
||||
|
||||
moveq -1,r3
|
||||
moveq 1,r4
|
||||
lsr.b r4,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 ffffff7f
|
||||
|
||||
moveq 2,r3
|
||||
moveq 1,r4
|
||||
lsr.b r4,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 1
|
||||
|
||||
moveq -1,r3
|
||||
moveq 31,r4
|
||||
lsr.b r4,r3
|
||||
test_move_cc 0 1 0 0
|
||||
checkr3 ffffff00
|
||||
|
||||
moveq -1,r3
|
||||
moveq 15,r4
|
||||
lsr.b r4,r3
|
||||
test_move_cc 0 1 0 0
|
||||
checkr3 ffffff00
|
||||
|
||||
moveq -1,r3
|
||||
moveq 7,r4
|
||||
lsr.b r4,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 ffffff01
|
||||
|
||||
move.d 0x5a67f19f,r3
|
||||
moveq 12,r4
|
||||
lsr.b r4,r3
|
||||
test_move_cc 0 1 0 0
|
||||
checkr3 5a67f100
|
||||
|
||||
move.d 0x5a67f19f,r3
|
||||
moveq 4,r4
|
||||
lsr.b r4,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 5a67f109
|
||||
|
||||
quit
|
|
@ -1,49 +0,0 @@
|
|||
# mach: crisv32
|
||||
# output: fffffffe\n1\n1ffff\nfffffffe\ncc463bdc\n4c463bdc\n0\n
|
||||
|
||||
.include "testutils.inc"
|
||||
start
|
||||
|
||||
; Set R, clear C.
|
||||
move 0x100,ccs
|
||||
moveq -5,r3
|
||||
move 2,mof
|
||||
mcp mof,r3
|
||||
test_cc 1 0 0 0
|
||||
checkr3 fffffffe
|
||||
|
||||
moveq 2,r3
|
||||
move -1,srp
|
||||
mcp srp,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 1
|
||||
|
||||
move 0xffff,srp
|
||||
move srp,r3
|
||||
mcp srp,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 1ffff
|
||||
|
||||
move -1,mof
|
||||
move mof,r3
|
||||
mcp mof,r3
|
||||
test_cc 1 0 0 0
|
||||
checkr3 fffffffe
|
||||
|
||||
move 0x5432f789,mof
|
||||
move.d 0x78134452,r3
|
||||
mcp mof,r3
|
||||
test_cc 1 0 1 0
|
||||
checkr3 cc463bdc
|
||||
|
||||
move 0x80000000,srp
|
||||
mcp srp,r3
|
||||
test_cc 0 0 1 0
|
||||
checkr3 4c463bdc
|
||||
|
||||
move 0xb3b9c423,srp
|
||||
mcp srp,r3
|
||||
test_cc 0 1 0 0
|
||||
checkr3 0
|
||||
|
||||
quit
|
|
@ -1,33 +0,0 @@
|
|||
# mach: crisv0 crisv3 crisv8 crisv10 crisv32
|
||||
# output: aa117acd\n
|
||||
# output: eeaabb42\n
|
||||
|
||||
; Bug with move to special register in delay slot, due to
|
||||
; special flush-insn-cache simulator use. Ordinary move worked;
|
||||
; special register caused branch to fail.
|
||||
|
||||
.include "testutils.inc"
|
||||
start
|
||||
move -1,srp
|
||||
|
||||
move.d 0xaa117acd,r1
|
||||
moveq 3,r9
|
||||
cmpq 1,r9
|
||||
bhi 0f
|
||||
move.d r1,r3
|
||||
|
||||
fail
|
||||
0:
|
||||
checkr3 aa117acd
|
||||
|
||||
move.d 0xeeaabb42,r1
|
||||
moveq 3,r9
|
||||
cmpq 1,r9
|
||||
bhi 0f
|
||||
move r1,srp
|
||||
|
||||
fail
|
||||
0:
|
||||
move srp,r3
|
||||
checkr3 eeaabb42
|
||||
quit
|
|
@ -1,37 +0,0 @@
|
|||
# mach: crisv3 crisv8 crisv10 crisv32
|
||||
# output: ffffff42\n94\nffff4321\n9234\n76543210\n76540000\n
|
||||
|
||||
; Move constant byte, word, dword to register. Check that no extension is
|
||||
; performed, that only part of the register is set.
|
||||
|
||||
.include "testutils.inc"
|
||||
startnostack
|
||||
moveq -1,r3
|
||||
move.b 0x42,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 ffffff42
|
||||
|
||||
moveq 0,r3
|
||||
move.b 0x94,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 94
|
||||
|
||||
moveq -1,r3
|
||||
move.w 0x4321,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 ffff4321
|
||||
|
||||
moveq 0,r3
|
||||
move.w 0x9234,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 9234
|
||||
|
||||
move.d 0x76543210,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 76543210
|
||||
|
||||
move.w 0,r3
|
||||
test_move_cc 0 1 0 0
|
||||
checkr3 76540000
|
||||
|
||||
quit
|
|
@ -1,50 +0,0 @@
|
|||
# mach: crisv32
|
||||
# output: fffffffe\n
|
||||
# output: fffffffe\n
|
||||
|
||||
; Check basic integral-write semantics regarding flags.
|
||||
|
||||
.include "testutils.inc"
|
||||
start
|
||||
|
||||
move.d 0, $r3
|
||||
; A write that works. Check that flags are set correspondingly.
|
||||
move.d d,r4
|
||||
;; store to bring it into the tlb with the right prot bits
|
||||
move.d r3,[r4]
|
||||
moveq -2,r5
|
||||
setf c
|
||||
clearf p
|
||||
move.d [r4],r3
|
||||
ax
|
||||
move.d r5,[r4]
|
||||
move.d [r4],r3
|
||||
|
||||
bcc 0f
|
||||
nop
|
||||
fail
|
||||
|
||||
0:
|
||||
checkr3 fffffffe
|
||||
|
||||
; A write that fails; check flags too.
|
||||
move.d d,r4
|
||||
moveq 23,r5
|
||||
setf p
|
||||
clearf c
|
||||
move.d [r4],r3
|
||||
ax
|
||||
move.d r5,[r4]
|
||||
move.d [r4],r3
|
||||
|
||||
bcs 0f
|
||||
nop
|
||||
fail
|
||||
|
||||
0:
|
||||
checkr3 fffffffe
|
||||
quit
|
||||
|
||||
.data
|
||||
d:
|
||||
.dword 42424242
|
|
@ -1,78 +0,0 @@
|
|||
# mach: crisv3 crisv8 crisv10 crisv32
|
||||
# output: 12345678\n10234567\n12345678\n12344567\n12344523\n76543210\nffffffaa\naa\n9911\nffff9911\n78\n56\n3456\n6712\n
|
||||
|
||||
.include "testutils.inc"
|
||||
start
|
||||
|
||||
.data
|
||||
mem1:
|
||||
.dword 0x12345678
|
||||
mem2:
|
||||
.word 0x4567
|
||||
mem3:
|
||||
.byte 0x23
|
||||
.dword 0x76543210
|
||||
.byte 0xaa,0x11,0x99
|
||||
|
||||
.text
|
||||
move.d mem1,r2
|
||||
move.d [r2],r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 12345678
|
||||
|
||||
move.d mem2,r3
|
||||
move.d [r3],r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 10234567
|
||||
|
||||
move.d mem1,r2
|
||||
move.d [r2+],r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 12345678
|
||||
|
||||
move.w [r2+],r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 12344567
|
||||
|
||||
move.b [r2+],r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 12344523
|
||||
|
||||
move.d [r2+],r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 76543210
|
||||
|
||||
movs.b [r2],r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 ffffffaa
|
||||
|
||||
movu.b [r2+],r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 aa
|
||||
|
||||
movu.w [r2],r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 9911
|
||||
|
||||
movs.w [r2+],r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 ffff9911
|
||||
|
||||
move.d mem1,r13
|
||||
movs.b [r13+],r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 78
|
||||
|
||||
movu.b [r13],r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 56
|
||||
|
||||
movs.w [r13+],r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 3456
|
||||
|
||||
movu.w [r13+],r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 6712
|
||||
|
||||
quit
|
|
@ -1,96 +0,0 @@
|
|||
# mach: crisv32
|
||||
# output: 15\n7\n2\nffff1234\nb\n16\nf\n2\nffffffef\nf\nffff1234\nf\nfffffff4\nd\nfffffff2\n10\nfffffff2\nd\n
|
||||
|
||||
.include "testutils.inc"
|
||||
.data
|
||||
x:
|
||||
.dword 8,9,10,11
|
||||
y:
|
||||
.dword -12,13,-14,15,16
|
||||
|
||||
start
|
||||
moveq 7,r0
|
||||
moveq 2,r1
|
||||
move.d 0xffff1234,r2
|
||||
moveq 21,r3
|
||||
move.d x,r4
|
||||
setf zcvn
|
||||
movem r2,[r4+]
|
||||
test_cc 1 1 1 1
|
||||
subq 12,r4
|
||||
|
||||
checkr3 15
|
||||
|
||||
move.d [r4+],r3
|
||||
checkr3 7
|
||||
|
||||
move.d [r4+],r3
|
||||
checkr3 2
|
||||
|
||||
move.d [r4+],r3
|
||||
checkr3 ffff1234
|
||||
|
||||
move.d [r4+],r3
|
||||
checkr3 b
|
||||
|
||||
subq 16,r4
|
||||
moveq 22,r0
|
||||
moveq 15,r1
|
||||
clearf zcvn
|
||||
movem r0,[r4]
|
||||
test_cc 0 0 0 0
|
||||
move.d [r4+],r3
|
||||
checkr3 16
|
||||
|
||||
move.d r1,r3
|
||||
checkr3 f
|
||||
|
||||
move.d [r4+],r3
|
||||
checkr3 2
|
||||
|
||||
subq 8,r4
|
||||
moveq 10,r2
|
||||
moveq -17,r0
|
||||
clearf zc
|
||||
setf vn
|
||||
movem r1,[r4]
|
||||
test_cc 1 0 1 0
|
||||
move.d [r4+],r3
|
||||
checkr3 ffffffef
|
||||
|
||||
move.d [r4+],r3
|
||||
checkr3 f
|
||||
|
||||
move.d [r4+],r3
|
||||
checkr3 ffff1234
|
||||
|
||||
move.d y,r4
|
||||
setf zc
|
||||
clearf vn
|
||||
movem [r4+],r3
|
||||
test_cc 0 1 0 1
|
||||
checkr3 f
|
||||
|
||||
move.d r0,r3
|
||||
checkr3 fffffff4
|
||||
|
||||
move.d r1,r3
|
||||
checkr3 d
|
||||
|
||||
move.d r2,r3
|
||||
checkr3 fffffff2
|
||||
|
||||
move.d [r4],r3
|
||||
checkr3 10
|
||||
|
||||
subq 8,r4
|
||||
setf zcvn
|
||||
movem [r4+],r0
|
||||
test_cc 1 1 1 1
|
||||
move.d r0,r3
|
||||
checkr3 fffffff2
|
||||
|
||||
move.d r1,r3
|
||||
checkr3 d
|
||||
|
||||
quit
|
|
@ -1,28 +0,0 @@
|
|||
# mach: crisv3 crisv8 crisv10 crisv32
|
||||
# output: ffffff05\nffff0005\n5\nffffff00\n
|
||||
|
||||
; Move between registers. Check that just the subreg is copied.
|
||||
|
||||
.include "testutils.inc"
|
||||
startnostack
|
||||
moveq -30,r3
|
||||
moveq 5,r4
|
||||
move.b r4,r3
|
||||
test_move_cc 0 0 0 0 ; FIXME
|
||||
checkr3 ffffff05
|
||||
|
||||
move.w r4,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 ffff0005
|
||||
|
||||
move.d r4,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 5
|
||||
|
||||
moveq -1,r3
|
||||
moveq 0,r4
|
||||
move.b r4,r3
|
||||
test_move_cc 0 1 0 0
|
||||
checkr3 ffffff00
|
||||
|
||||
quit
|
|
@ -1,45 +0,0 @@
|
|||
# mach: crisv3 crisv8 crisv10 crisv32
|
||||
# output: 7823fec2\n10231879\n102318fe\n
|
||||
|
||||
.include "testutils.inc"
|
||||
start
|
||||
|
||||
.data
|
||||
mem1:
|
||||
.dword 0x12345678
|
||||
mem2:
|
||||
.word 0x4567
|
||||
mem3:
|
||||
.byte 0x23
|
||||
.dword 0x76543210
|
||||
.byte 0xaa,0x11,0x99
|
||||
|
||||
.text
|
||||
move.d mem1,r2
|
||||
move.d 0x7823fec2,r4
|
||||
setf nzvc
|
||||
move.d r4,[r2+]
|
||||
test_cc 1 1 1 1
|
||||
subq 4,r2
|
||||
move.d [r2],r3
|
||||
checkr3 7823fec2
|
||||
|
||||
move.d mem2,r3
|
||||
move.d 0x45231879,r4
|
||||
clearf nzvc
|
||||
move.w r4,[r3]
|
||||
test_cc 0 0 0 0
|
||||
move.d [r3],r3
|
||||
checkr3 10231879
|
||||
|
||||
move.d mem2,r2
|
||||
moveq -2,r4
|
||||
clearf nc
|
||||
setf zv
|
||||
move.b r4,[r2+]
|
||||
test_cc 0 1 1 0
|
||||
subq 1,r2
|
||||
move.d [r2],r3
|
||||
checkr3 102318fe
|
||||
|
||||
quit
|
|
@ -1,131 +0,0 @@
|
|||
# mach: crisv3 crisv8 crisv10 crisv32
|
||||
# output: ffffff00\nffff0000\n0\nffffff00\nffff0000\n0\nffffff00\nffff0000\n0\nbb113344\n664433aa\ncc557788\nabcde012\nabcde000\n77880000\n0\n
|
||||
|
||||
# Test generic "move Ps,[]" and "move [],Pd" insns; the ones with
|
||||
# functionality common to all models.
|
||||
|
||||
.include "testutils.inc"
|
||||
start
|
||||
|
||||
.data
|
||||
filler:
|
||||
.byte 0xaa
|
||||
.word 0x4433
|
||||
.dword 0x55778866
|
||||
.byte 0xcc
|
||||
|
||||
.text
|
||||
; Test that writing to zero-registers is a nop
|
||||
.if 0
|
||||
; We used to just ignore the writes, but now an error is emitted. We
|
||||
; keep the test-code but disabled, in case we need to change this again.
|
||||
move 0xaa,p0
|
||||
move 0x4433,p4
|
||||
move 0x55774433,p8
|
||||
.endif
|
||||
|
||||
moveq -1,r3
|
||||
setf zcvn
|
||||
clear.b r3
|
||||
test_cc 1 1 1 1
|
||||
checkr3 ffffff00
|
||||
|
||||
moveq -1,r3
|
||||
clearf zcvn
|
||||
clear.w r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 ffff0000
|
||||
|
||||
moveq -1,r3
|
||||
clear.d r3
|
||||
checkr3 0
|
||||
|
||||
; "Write" using ordinary memory references too.
|
||||
.if 0 ; See ".if 0" above.
|
||||
move.d filler,r6
|
||||
move [r6],p0
|
||||
move [r6],p4
|
||||
move [r6],p8
|
||||
.endif
|
||||
|
||||
# ffffff00\nffff0000\n0\nffffff00\nffff0000\n0\nbb113344\n664433aa\ncc557788\nabcde012\nabcde000\n77880000\n0\n
|
||||
|
||||
moveq -1,r3
|
||||
clear.b r3
|
||||
checkr3 ffffff00
|
||||
|
||||
moveq -1,r3
|
||||
clear.w r3
|
||||
checkr3 ffff0000
|
||||
|
||||
moveq -1,r3
|
||||
clear.d r3
|
||||
checkr3 0
|
||||
|
||||
; And postincremented.
|
||||
.if 0 ; See ".if 0" above.
|
||||
move [r6+],p0
|
||||
move [r6+],p4
|
||||
move [r6+],p8
|
||||
.endif
|
||||
|
||||
# ffffff00\nffff0000\n0\nbb113344\n664433aa\ncc557788\nabcde012\nabcde000\n77880000\n0\n
|
||||
|
||||
moveq -1,r3
|
||||
clear.b r3
|
||||
checkr3 ffffff00
|
||||
|
||||
moveq -1,r3
|
||||
clear.w r3
|
||||
checkr3 ffff0000
|
||||
|
||||
moveq -1,r3
|
||||
clear.d r3
|
||||
checkr3 0
|
||||
|
||||
; Now see that we can write to the registers too.
|
||||
# bb113344\n664433aa\ncc557788\nabcde012\nabcde000\n77880000\n0\n
|
||||
; [PC+]
|
||||
move.d filler,r9
|
||||
move 0xbb113344,srp
|
||||
move srp,r3
|
||||
checkr3 bb113344
|
||||
|
||||
; [R+]
|
||||
move [r9+],srp
|
||||
move srp,r3
|
||||
checkr3 664433aa
|
||||
|
||||
; [R]
|
||||
move [r9],srp
|
||||
move srp,r3
|
||||
checkr3 cc557788
|
||||
|
||||
; And check writing to memory, clear and srp.
|
||||
|
||||
move.d filler,r9
|
||||
move 0xabcde012,srp
|
||||
setf zcvn
|
||||
move srp,[r9+]
|
||||
test_cc 1 1 1 1
|
||||
subq 4,r9
|
||||
move.d [r9],r3
|
||||
checkr3 abcde012
|
||||
|
||||
clearf zcvn
|
||||
clear.b [r9]
|
||||
test_cc 0 0 0 0
|
||||
move.d [r9],r3
|
||||
checkr3 abcde000
|
||||
|
||||
addq 2,r9
|
||||
clear.w [r9+]
|
||||
subq 2,r9
|
||||
move.d [r9],r3
|
||||
checkr3 77880000
|
||||
|
||||
clear.d [r9]
|
||||
move.d [r9],r3
|
||||
checkr3 0
|
||||
|
||||
quit
|
|
@ -1,35 +0,0 @@
|
|||
# mach: crisv32
|
||||
# output: 11223320\nbb113344\naa557711\n
|
||||
|
||||
# Test v32-specific special registers. FIXME: more registers.
|
||||
|
||||
.include "testutils.inc"
|
||||
start
|
||||
.data
|
||||
store:
|
||||
.dword 0x11223344
|
||||
.dword 0x77665544
|
||||
|
||||
.text
|
||||
moveq -1,r3
|
||||
move.d store,r4
|
||||
move vr,[r4]
|
||||
move [r4+],mof
|
||||
move mof,r3
|
||||
checkr3 11223320
|
||||
|
||||
moveq -1,r3
|
||||
clearf zcvn
|
||||
move 0xbb113344,mof
|
||||
test_cc 0 0 0 0
|
||||
move mof,r3
|
||||
checkr3 bb113344
|
||||
|
||||
setf zcvn
|
||||
move 0xaa557711,mof
|
||||
test_cc 1 1 1 1
|
||||
move mof,[r4]
|
||||
move.d [r4],r3
|
||||
checkr3 aa557711
|
||||
|
||||
quit
|
|
@ -1,28 +0,0 @@
|
|||
# mach: crisv3 crisv8 crisv10 crisv32
|
||||
# output: ffffff00\nffff0000\n0\nbb113344\n
|
||||
|
||||
# Test generic "move Ps,Rd" and "move Rs,Pd" insns; the ones with
|
||||
# functionality common to all models.
|
||||
|
||||
.include "testutils.inc"
|
||||
start
|
||||
moveq -1,r3
|
||||
clear.b r3
|
||||
checkr3 ffffff00
|
||||
|
||||
moveq -1,r3
|
||||
clear.w r3
|
||||
checkr3 ffff0000
|
||||
|
||||
moveq -1,r3
|
||||
clear.d r3
|
||||
checkr3 0
|
||||
|
||||
moveq -1,r3
|
||||
move.d 0xbb113344,r4
|
||||
setf zcvn
|
||||
move r4,srp
|
||||
move srp,r3
|
||||
test_cc 1 1 1 1
|
||||
checkr3 bb113344
|
||||
quit
|
|
@ -1,21 +0,0 @@
|
|||
# mach: crisv32
|
||||
# output: ffffff20\nbb113344\n
|
||||
|
||||
# Test v32-specific special registers. FIXME: more registers.
|
||||
|
||||
.include "testutils.inc"
|
||||
start
|
||||
moveq -1,r3
|
||||
setf zcvn
|
||||
move vr,r3
|
||||
test_cc 1 1 1 1
|
||||
checkr3 ffffff20
|
||||
|
||||
moveq -1,r3
|
||||
move.d 0xbb113344,r4
|
||||
clearf cvnz
|
||||
move r4,mof
|
||||
test_cc 0 0 0 0
|
||||
move mof,r3
|
||||
checkr3 bb113344
|
||||
quit
|
|
@ -1,29 +0,0 @@
|
|||
# mach: crisv3 crisv8 crisv10 crisv32
|
||||
# output: 42\nffffff85\n7685\nffff8765\n0\n
|
||||
|
||||
; Move constant byte, word, dword to register. Check that sign-extension
|
||||
; is performed.
|
||||
|
||||
.include "testutils.inc"
|
||||
start
|
||||
moveq -1,r3
|
||||
movs.b 0x42,r3
|
||||
checkr3 42
|
||||
|
||||
movs.b 0x85,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 ffffff85
|
||||
|
||||
movs.w 0x7685,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 7685
|
||||
|
||||
movs.w 0x8765,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 ffff8765
|
||||
|
||||
movs.w 0,r3
|
||||
test_move_cc 0 1 0 0
|
||||
checkr3 0
|
||||
|
||||
quit
|
|
@ -1,44 +0,0 @@
|
|||
# mach: crisv3 crisv8 crisv10 crisv32
|
||||
# output: 5\nfffffff5\n5\nfffffff5\n0\n
|
||||
|
||||
; Movs between registers. Check that sign-extension is performed and the
|
||||
; full register is set.
|
||||
|
||||
.include "testutils.inc"
|
||||
|
||||
.data
|
||||
x:
|
||||
.byte 5,-11
|
||||
.word 5,-11
|
||||
.word 0
|
||||
|
||||
start
|
||||
move.d x,r5
|
||||
|
||||
moveq -1,r3
|
||||
movs.b [r5+],r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 5
|
||||
|
||||
moveq 0,r3
|
||||
movs.b [r5],r3
|
||||
test_move_cc 1 0 0 0
|
||||
addq 1,r5
|
||||
checkr3 fffffff5
|
||||
|
||||
moveq -1,r3
|
||||
movs.w [r5+],r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 5
|
||||
|
||||
moveq 0,r3
|
||||
movs.w [r5],r3
|
||||
test_move_cc 1 0 0 0
|
||||
addq 2,r5
|
||||
checkr3 fffffff5
|
||||
|
||||
movs.w [r5],r3
|
||||
test_move_cc 0 1 0 0
|
||||
checkr3 0
|
||||
|
||||
quit
|
|
@ -1,46 +0,0 @@
|
|||
# mach: crisv3 crisv8 crisv10 crisv32
|
||||
# output: 5\nfffffff5\n5\nfffffff5\n0\n
|
||||
|
||||
; Movs between registers. Check that sign-extension is performed and the
|
||||
; full register is set.
|
||||
|
||||
.include "testutils.inc"
|
||||
start
|
||||
moveq -1,r5
|
||||
moveq 5,r4
|
||||
move.b r4,r5
|
||||
moveq -1,r3
|
||||
movs.b r5,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 5
|
||||
|
||||
moveq 0,r5
|
||||
moveq -11,r4
|
||||
move.b r4,r5
|
||||
moveq 0,r3
|
||||
movs.b r5,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 fffffff5
|
||||
|
||||
moveq -1,r5
|
||||
moveq 5,r4
|
||||
move.w r4,r5
|
||||
moveq -1,r3
|
||||
movs.w r5,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 5
|
||||
|
||||
moveq 0,r5
|
||||
moveq -11,r4
|
||||
move.w r4,r5
|
||||
moveq 0,r3
|
||||
movs.w r5,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 fffffff5
|
||||
|
||||
moveq 0,r5
|
||||
movs.b r5,r3
|
||||
test_move_cc 0 1 0 0
|
||||
checkr3 0
|
||||
|
||||
quit
|
|
@ -1,33 +0,0 @@
|
|||
# mach: crisv3 crisv8 crisv10 crisv32
|
||||
# output: 42\n85\n7685\n8765\n0\n
|
||||
|
||||
; Move constant byte, word, dword to register. Check that zero-extension
|
||||
; is performed.
|
||||
|
||||
.include "testutils.inc"
|
||||
start
|
||||
moveq -1,r3
|
||||
movu.b 0x42,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 42
|
||||
|
||||
moveq -1,r3
|
||||
movu.b 0x85,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 85
|
||||
|
||||
moveq -1,r3
|
||||
movu.w 0x7685,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 7685
|
||||
|
||||
moveq -1,r3
|
||||
movu.w 0x8765,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 8765
|
||||
|
||||
movu.b 0,r3
|
||||
test_move_cc 0 1 0 0
|
||||
checkr3 0
|
||||
|
||||
quit
|
|
@ -1,40 +0,0 @@
|
|||
# mach: crisv3 crisv8 crisv10 crisv32
|
||||
# output: 5\nf5\n5\nfff5\n0\n
|
||||
|
||||
; Movu between registers. Check that zero-extension is performed and the
|
||||
; full register is set.
|
||||
|
||||
.include "testutils.inc"
|
||||
|
||||
.data
|
||||
x:
|
||||
.byte 5,-11
|
||||
.word 5,-11
|
||||
.word 0
|
||||
|
||||
start
|
||||
move.d x,r5
|
||||
|
||||
movu.b [r5+],r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 5
|
||||
|
||||
movu.b [r5],r3
|
||||
test_move_cc 0 0 0 0
|
||||
addq 1,r5
|
||||
checkr3 f5
|
||||
|
||||
movu.w [r5+],r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 5
|
||||
|
||||
movu.w [r5],r3
|
||||
test_move_cc 0 0 0 0
|
||||
addq 2,r5
|
||||
checkr3 fff5
|
||||
|
||||
movu.w [r5],r3
|
||||
test_move_cc 0 1 0 0
|
||||
checkr3 0
|
||||
|
||||
quit
|
|
@ -1,45 +0,0 @@
|
|||
# mach: crisv3 crisv8 crisv10 crisv32
|
||||
# output: 5\nf5\n5\nfff5\n0\n
|
||||
|
||||
; Movu between registers. Check that zero-extension is performed and the
|
||||
; full register is set.
|
||||
|
||||
.include "testutils.inc"
|
||||
start
|
||||
moveq -1,r5
|
||||
moveq 5,r4
|
||||
move.b r4,r5
|
||||
moveq -1,r3
|
||||
movu.b r5,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 5
|
||||
|
||||
moveq 0,r5
|
||||
moveq -11,r4
|
||||
move.b r4,r5
|
||||
moveq -1,r3
|
||||
movu.b r5,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 f5
|
||||
|
||||
moveq -1,r5
|
||||
moveq 5,r4
|
||||
move.w r4,r5
|
||||
moveq -1,r3
|
||||
movu.w r5,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 5
|
||||
|
||||
moveq 0,r5
|
||||
moveq -11,r4
|
||||
move.w r4,r5
|
||||
moveq -1,r3
|
||||
movu.w r5,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 fff5
|
||||
|
||||
movu.w 0,r3
|
||||
test_move_cc 0 1 0 0
|
||||
checkr3 0
|
||||
|
||||
quit
|
|
@ -1,51 +0,0 @@
|
|||
# mach: crisv32
|
||||
# output: fffffffe\n
|
||||
# output: ffffffff\n
|
||||
# output: fffffffe\n
|
||||
# output: 1\n
|
||||
# output: fffffffe\n
|
||||
# output: ffffffff\n
|
||||
# output: fffffffe\n
|
||||
# output: 1\n
|
||||
|
||||
; Check that carry is not modified on v32.
|
||||
|
||||
.include "testutils.inc"
|
||||
start
|
||||
moveq -1,r3
|
||||
moveq 2,r4
|
||||
setf c
|
||||
muls.d r4,r3
|
||||
test_cc 1 0 0 1
|
||||
checkr3 fffffffe
|
||||
move mof,r3
|
||||
checkr3 ffffffff
|
||||
|
||||
moveq -1,r3
|
||||
moveq 2,r4
|
||||
setf c
|
||||
mulu.d r4,r3
|
||||
test_cc 0 0 1 1
|
||||
checkr3 fffffffe
|
||||
move mof,r3
|
||||
checkr3 1
|
||||
|
||||
moveq -1,r3
|
||||
moveq 2,r4
|
||||
clearf c
|
||||
muls.d r4,r3
|
||||
test_cc 1 0 0 0
|
||||
checkr3 fffffffe
|
||||
move mof,r3
|
||||
checkr3 ffffffff
|
||||
|
||||
moveq -1,r3
|
||||
moveq 2,r4
|
||||
clearf c
|
||||
mulu.d r4,r3
|
||||
test_cc 0 0 1 0
|
||||
checkr3 fffffffe
|
||||
move mof,r3
|
||||
checkr3 1
|
||||
|
||||
quit
|
|
@ -1,257 +0,0 @@
|
|||
# mach: crisv10 crisv32
|
||||
# output: fffffffe\nffffffff\nfffffffe\n1\nfffffffe\nffffffff\nfffffffe\n1\nfffe0001\n0\nfffe0001\n0\n1\n0\n1\nfffffffe\n193eade2\n277e3a49\n193eade2\n277e3a49\nfffffffe\nffffffff\n1fffe\n0\nfffffffe\nffffffff\n1fffe\n0\n1\n0\nfffe0001\n0\nfdbdade2\nffffffff\n420fade2\n0\nfffffffe\nffffffff\n1fe\n0\nfffffffe\nffffffff\n1fe\n0\n1\n0\nfe01\n0\n1\n0\nfe01\n0\nffffd9e2\nffffffff\n2be2\n0\n0\n0\n0\n0\n
|
||||
|
||||
.include "testutils.inc"
|
||||
start
|
||||
|
||||
.align 4
|
||||
moveq -1,r3
|
||||
moveq 2,r4
|
||||
muls.d r4,r3
|
||||
test_cc 1 0 0 0
|
||||
checkr3 fffffffe
|
||||
move mof,r3
|
||||
checkr3 ffffffff
|
||||
|
||||
.align 4
|
||||
moveq -1,r3
|
||||
moveq 2,r4
|
||||
mulu.d r4,r3
|
||||
test_cc 0 0 1 0
|
||||
checkr3 fffffffe
|
||||
move mof,r3
|
||||
checkr3 1
|
||||
|
||||
.align 4
|
||||
moveq 2,r3
|
||||
moveq -1,r4
|
||||
muls.d r4,r3
|
||||
test_cc 1 0 0 0
|
||||
checkr3 fffffffe
|
||||
move mof,r3
|
||||
checkr3 ffffffff
|
||||
|
||||
.align 4
|
||||
moveq 2,r3
|
||||
moveq -1,r4
|
||||
mulu.d r4,r3
|
||||
test_cc 0 0 1 0
|
||||
checkr3 fffffffe
|
||||
move mof,r3
|
||||
checkr3 1
|
||||
|
||||
move.d 0xffff,r4
|
||||
move.d r4,r3
|
||||
muls.d r4,r3
|
||||
test_cc 0 0 1 0
|
||||
checkr3 fffe0001
|
||||
move mof,r3
|
||||
checkr3 0
|
||||
|
||||
move.d 0xffff,r4
|
||||
move.d r4,r3
|
||||
mulu.d r4,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 fffe0001
|
||||
move mof,r3
|
||||
checkr3 0
|
||||
|
||||
moveq -1,r4
|
||||
move.d r4,r3
|
||||
muls.d r4,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 1
|
||||
move mof,r3
|
||||
checkr3 0
|
||||
|
||||
moveq -1,r4
|
||||
move.d r4,r3
|
||||
mulu.d r4,r3
|
||||
test_cc 1 0 1 0
|
||||
checkr3 1
|
||||
move mof,r3
|
||||
checkr3 fffffffe
|
||||
|
||||
move.d 0x5432f789,r4
|
||||
move.d 0x78134452,r3
|
||||
muls.d r4,r3
|
||||
test_cc 0 0 1 0
|
||||
checkr3 193eade2
|
||||
move mof,r3
|
||||
checkr3 277e3a49
|
||||
|
||||
move.d 0x5432f789,r4
|
||||
move.d 0x78134452,r3
|
||||
mulu.d r4,r3
|
||||
test_cc 0 0 1 0
|
||||
checkr3 193eade2
|
||||
move mof,r3
|
||||
checkr3 277e3a49
|
||||
|
||||
move.d 0xffff,r3
|
||||
moveq 2,r4
|
||||
muls.w r4,r3
|
||||
test_cc 1 0 0 0
|
||||
checkr3 fffffffe
|
||||
move mof,r3
|
||||
checkr3 ffffffff
|
||||
|
||||
moveq -1,r3
|
||||
moveq 2,r4
|
||||
mulu.w r4,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 1fffe
|
||||
move mof,r3
|
||||
checkr3 0
|
||||
nop
|
||||
|
||||
moveq 2,r3
|
||||
move.d 0xffff,r4
|
||||
muls.w r4,r3
|
||||
test_cc 1 0 0 0
|
||||
checkr3 fffffffe
|
||||
move mof,r3
|
||||
checkr3 ffffffff
|
||||
|
||||
moveq 2,r3
|
||||
moveq -1,r4
|
||||
mulu.w r4,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 1fffe
|
||||
move mof,r3
|
||||
checkr3 0
|
||||
|
||||
move.d 0xffff,r4
|
||||
move.d r4,r3
|
||||
muls.w r4,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 1
|
||||
move mof,r3
|
||||
checkr3 0
|
||||
|
||||
moveq -1,r4
|
||||
move.d r4,r3
|
||||
mulu.w r4,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 fffe0001
|
||||
move mof,r3
|
||||
checkr3 0
|
||||
|
||||
move.d 0x5432f789,r4
|
||||
move.d 0x78134452,r3
|
||||
muls.w r4,r3
|
||||
test_cc 1 0 0 0
|
||||
checkr3 fdbdade2
|
||||
move mof,r3
|
||||
checkr3 ffffffff
|
||||
nop
|
||||
|
||||
move.d 0x5432f789,r4
|
||||
move.d 0x78134452,r3
|
||||
mulu.w r4,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 420fade2
|
||||
move mof,r3
|
||||
checkr3 0
|
||||
nop
|
||||
|
||||
move.d 0xff,r3
|
||||
moveq 2,r4
|
||||
muls.b r4,r3
|
||||
test_cc 1 0 0 0
|
||||
checkr3 fffffffe
|
||||
move mof,r3
|
||||
checkr3 ffffffff
|
||||
|
||||
moveq -1,r3
|
||||
moveq 2,r4
|
||||
mulu.b r4,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 1fe
|
||||
move mof,r3
|
||||
checkr3 0
|
||||
|
||||
moveq 2,r3
|
||||
moveq -1,r4
|
||||
muls.b r4,r3
|
||||
test_cc 1 0 0 0
|
||||
checkr3 fffffffe
|
||||
move mof,r3
|
||||
checkr3 ffffffff
|
||||
|
||||
moveq 2,r3
|
||||
moveq -1,r4
|
||||
mulu.b r4,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 1fe
|
||||
move mof,r3
|
||||
checkr3 0
|
||||
|
||||
move.d 0xff,r4
|
||||
move.d r4,r3
|
||||
muls.b r4,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 1
|
||||
move mof,r3
|
||||
checkr3 0
|
||||
nop
|
||||
|
||||
moveq -1,r4
|
||||
move.d r4,r3
|
||||
mulu.b r4,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 fe01
|
||||
move mof,r3
|
||||
checkr3 0
|
||||
nop
|
||||
|
||||
move.d 0xfeda49ff,r4
|
||||
move.d r4,r3
|
||||
muls.b r4,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 1
|
||||
move mof,r3
|
||||
checkr3 0
|
||||
nop
|
||||
|
||||
move.d 0xfeda49ff,r4
|
||||
move.d r4,r3
|
||||
mulu.b r4,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 fe01
|
||||
move mof,r3
|
||||
checkr3 0
|
||||
|
||||
move.d 0x5432f789,r4
|
||||
move.d 0x78134452,r3
|
||||
muls.b r4,r3
|
||||
test_cc 1 0 0 0
|
||||
checkr3 ffffd9e2
|
||||
move mof,r3
|
||||
checkr3 ffffffff
|
||||
|
||||
move.d 0x5432f789,r4
|
||||
move.d 0x78134452,r3
|
||||
mulu.b r4,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 2be2
|
||||
move mof,r3
|
||||
checkr3 0
|
||||
|
||||
moveq 0,r3
|
||||
move.d 0xf87f4aeb,r4
|
||||
muls.d r4,r3
|
||||
test_cc 0 1 0 0
|
||||
checkr3 0
|
||||
move mof,r3
|
||||
checkr3 0
|
||||
|
||||
move.d 0xf87f4aeb,r3
|
||||
moveq 0,r4
|
||||
mulu.d r4,r3
|
||||
test_cc 0 1 0 0
|
||||
checkr3 0
|
||||
move mof,r3
|
||||
checkr3 0
|
||||
|
||||
quit
|
|
@ -1,104 +0,0 @@
|
|||
# mach: crisv0 crisv3 crisv8 crisv10 crisv32
|
||||
# output: ffffffff\nffffffff\n0\n80000000\n1\nba987655\nffff\nffff\n0\n89ab8000\nffff0001\n45677655\nff\nff\n0\n89abae80\nffffff01\n45678955\n
|
||||
|
||||
.include "testutils.inc"
|
||||
start
|
||||
moveq 0,r3
|
||||
moveq 1,r4
|
||||
neg.d r4,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 ffffffff
|
||||
|
||||
moveq 1,r3
|
||||
moveq 0,r4
|
||||
neg.d r3,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 ffffffff
|
||||
|
||||
;; FIXME: this was wrong.
|
||||
moveq 0,r3
|
||||
neg.d r3,r3
|
||||
test_move_cc 0 1 0 0
|
||||
checkr3 0
|
||||
|
||||
move.d 0x80000000,r3
|
||||
neg.d r3,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 80000000
|
||||
|
||||
moveq -1,r3
|
||||
neg.d r3,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 1
|
||||
|
||||
move.d 0x456789ab,r3
|
||||
neg.d r3,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 ba987655
|
||||
|
||||
moveq 0,r3
|
||||
moveq 1,r4
|
||||
neg.w r4,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 ffff
|
||||
|
||||
moveq 1,r3
|
||||
moveq 0,r4
|
||||
neg.w r3,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 ffff
|
||||
|
||||
moveq 0,r3
|
||||
neg.w r3,r3
|
||||
test_move_cc 0 1 0 0
|
||||
checkr3 0
|
||||
|
||||
move.d 0x89ab8000,r3
|
||||
neg.w r3,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 89ab8000
|
||||
|
||||
moveq -1,r3
|
||||
neg.w r3,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 ffff0001
|
||||
|
||||
move.d 0x456789ab,r3
|
||||
neg.w r3,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 45677655
|
||||
|
||||
moveq 0,r3
|
||||
moveq 1,r4
|
||||
neg.b r4,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 ff
|
||||
|
||||
moveq 1,r3
|
||||
moveq 0,r4
|
||||
neg.b r3,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 ff
|
||||
|
||||
moveq 0,r3
|
||||
neg.b r3,r3
|
||||
test_move_cc 0 1 0 0
|
||||
checkr3 0
|
||||
|
||||
;; FIXME: was wrong.
|
||||
move.d 0x89abae80,r3
|
||||
neg.b r3,r3
|
||||
test_move_cc 1 0 0 1
|
||||
checkr3 89abae80
|
||||
|
||||
moveq -1,r3
|
||||
neg.b r3,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 ffffff01
|
||||
|
||||
move.d 0x456789ab,r3
|
||||
neg.b r3,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 45678955
|
||||
|
||||
quit
|
|
@ -1,31 +0,0 @@
|
|||
# mach: crisv0 crisv3 crisv8 crisv10 crisv32
|
||||
# output: fffffffe\nfffffffd\nffff0f00\n0\n87ecbbad\n
|
||||
|
||||
.include "testutils.inc"
|
||||
start
|
||||
moveq 1,r3
|
||||
not r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 fffffffe
|
||||
|
||||
moveq 2,r3
|
||||
not r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 fffffffd
|
||||
|
||||
move.d 0xf0ff,r3
|
||||
not r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 ffff0f00
|
||||
|
||||
moveq -1,r3
|
||||
not r3
|
||||
test_move_cc 0 1 0 0
|
||||
checkr3 0
|
||||
|
||||
move.d 0x78134452,r3
|
||||
not r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 87ecbbad
|
||||
|
||||
quit
|
|
@ -1,71 +0,0 @@
|
|||
# mach: crisv0 crisv3 crisv8 crisv10 crisv32
|
||||
# output: 3\n3\nffff\nffffffff\n7c33f7db\nffff0003\n3\nfedaffff\n7813f7db\n3\n3\nfeb\n781344db\n
|
||||
|
||||
.include "testutils.inc"
|
||||
start
|
||||
moveq 1,r3
|
||||
or.d 2,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 3
|
||||
|
||||
moveq 2,r3
|
||||
or.d 1,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 3
|
||||
|
||||
move.d 0xf0ff,r3
|
||||
or.d 0xff0f,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 ffff
|
||||
|
||||
moveq -1,r3
|
||||
or.d -1,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 ffffffff
|
||||
|
||||
move.d 0x78134452,r3
|
||||
or.d 0x5432f789,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 7c33f7db
|
||||
|
||||
move.d 0xffff0001,r3
|
||||
or.w 2,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 ffff0003
|
||||
|
||||
moveq 2,r3
|
||||
or.w 1,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 3
|
||||
|
||||
move.d 0xfedaffaf,r3
|
||||
or.w 0xff5f,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 fedaffff
|
||||
|
||||
move.d 0x78134452,r3
|
||||
or.w 0xf789,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 7813f7db
|
||||
|
||||
moveq 1,r3
|
||||
or.b 2,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 3
|
||||
|
||||
moveq 2,r3
|
||||
or.b 1,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 3
|
||||
|
||||
move.d 0xfa3,r3
|
||||
or.b 0x4a,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 feb
|
||||
|
||||
move.d 0x78134453,r3
|
||||
or.b 0x89,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 781344db
|
||||
|
||||
quit
|
|
@ -1,75 +0,0 @@
|
|||
# mach: crisv0 crisv3 crisv8 crisv10 crisv32
|
||||
# output: 3\n3\nffff\nffffffff\n7c33f7db\nffff0003\n3\nfedaffff\n7813f7db\n3\n3\nfeb\n781344db\n
|
||||
|
||||
.include "testutils.inc"
|
||||
.data
|
||||
x:
|
||||
.dword 2,1,0xff0f,-1,0x5432f789
|
||||
.word 2,1,0xff5f,0xf789
|
||||
.byte 2,1,0x4a,0x89
|
||||
|
||||
start
|
||||
moveq 1,r3
|
||||
move.d x,r5
|
||||
or.d [r5+],r3
|
||||
checkr3 3
|
||||
|
||||
moveq 2,r3
|
||||
or.d [r5],r3
|
||||
addq 4,r5
|
||||
checkr3 3
|
||||
|
||||
move.d 0xf0ff,r3
|
||||
or.d [r5+],r3
|
||||
checkr3 ffff
|
||||
|
||||
moveq -1,r3
|
||||
or.d [r5+],r3
|
||||
checkr3 ffffffff
|
||||
|
||||
move.d 0x78134452,r3
|
||||
or.d [r5+],r3
|
||||
checkr3 7c33f7db
|
||||
|
||||
move.d 0xffff0001,r3
|
||||
or.w [r5+],r3
|
||||
checkr3 ffff0003
|
||||
|
||||
moveq 2,r3
|
||||
or.w [r5],r3
|
||||
addq 2,r5
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 3
|
||||
|
||||
move.d 0xfedaffaf,r3
|
||||
or.w [r5+],r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 fedaffff
|
||||
|
||||
move.d 0x78134452,r3
|
||||
or.w [r5+],r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 7813f7db
|
||||
|
||||
moveq 1,r3
|
||||
or.b [r5+],r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 3
|
||||
|
||||
moveq 2,r3
|
||||
or.b [r5],r3
|
||||
addq 1,r5
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 3
|
||||
|
||||
move.d 0xfa3,r3
|
||||
or.b [r5+],r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 feb
|
||||
|
||||
move.d 0x78134453,r3
|
||||
or.b [r5],r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 781344db
|
||||
|
||||
quit
|
|
@ -1,41 +0,0 @@
|
|||
# mach: crisv0 crisv3 crisv8 crisv10 crisv32
|
||||
# output: 3\n3\nffffffff\nffffffff\n1f\nffffffe0\n7813445e\n
|
||||
|
||||
.include "testutils.inc"
|
||||
start
|
||||
moveq 1,r3
|
||||
orq 2,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 3
|
||||
|
||||
moveq 2,r3
|
||||
orq 1,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 3
|
||||
|
||||
move.d 0xf0ff,r3
|
||||
orq -1,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 ffffffff
|
||||
|
||||
moveq 0,r3
|
||||
orq -1,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 ffffffff
|
||||
|
||||
moveq 0,r3
|
||||
orq 31,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 1f
|
||||
|
||||
moveq 0,r3
|
||||
orq -32,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 ffffffe0
|
||||
|
||||
move.d 0x78134452,r3
|
||||
orq 12,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 7813445e
|
||||
|
||||
quit
|
|
@ -1,84 +0,0 @@
|
|||
# mach: crisv0 crisv3 crisv8 crisv10 crisv32
|
||||
# output: 3\n3\nffff\nffffffff\n7c33f7db\nffff0003\n3\nfedaffff\n7813f7db\n3\n3\nfeb\n781344db\n
|
||||
|
||||
.include "testutils.inc"
|
||||
start
|
||||
moveq 1,r3
|
||||
moveq 2,r4
|
||||
or.d r4,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 3
|
||||
|
||||
moveq 2,r3
|
||||
moveq 1,r4
|
||||
or.d r4,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 3
|
||||
|
||||
move.d 0xff0f,r4
|
||||
move.d 0xf0ff,r3
|
||||
or.d r4,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 ffff
|
||||
|
||||
moveq -1,r4
|
||||
move.d r4,r3
|
||||
or.d r4,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 ffffffff
|
||||
|
||||
move.d 0x5432f789,r4
|
||||
move.d 0x78134452,r3
|
||||
or.d r4,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 7c33f7db
|
||||
|
||||
move.d 0xffff0001,r3
|
||||
moveq 2,r4
|
||||
or.w r4,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 ffff0003
|
||||
|
||||
moveq 2,r3
|
||||
move.d 0xffff0001,r4
|
||||
or.w r4,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 3
|
||||
|
||||
move.d 0xfedaffaf,r3
|
||||
move.d 0xffffff5f,r4
|
||||
or.w r4,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 fedaffff
|
||||
|
||||
move.d 0x5432f789,r4
|
||||
move.d 0x78134452,r3
|
||||
or.w r4,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 7813f7db
|
||||
|
||||
moveq 1,r3
|
||||
move.d 0xffffff02,r4
|
||||
or.b r4,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 3
|
||||
|
||||
moveq 2,r3
|
||||
moveq 1,r4
|
||||
or.b r4,r3
|
||||
test_move_cc 0 0 0 0
|
||||
checkr3 3
|
||||
|
||||
move.d 0x4a,r4
|
||||
move.d 0xfa3,r3
|
||||
or.b r4,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 feb
|
||||
|
||||
move.d 0x5432f789,r4
|
||||
move.d 0x78134453,r3
|
||||
or.b r4,r3
|
||||
test_move_cc 1 0 0 0
|
||||
checkr3 781344db
|
||||
|
||||
quit
|
|
@ -1,25 +0,0 @@
|
|||
# mach: crisv3 crisv8 crisv10
|
||||
# output: 3\n
|
||||
|
||||
# Test that ret works.
|
||||
|
||||
.include "testutils.inc"
|
||||
start
|
||||
x:
|
||||
moveq 0,r3
|
||||
jsr z
|
||||
w:
|
||||
quit
|
||||
y:
|
||||
addq 1,r3
|
||||
checkr3 3
|
||||
quit
|
||||
|
||||
z:
|
||||
addq 1,r3
|
||||
move srp,r2
|
||||
add.d y-w,r2
|
||||
move r2,srp
|
||||
ret
|
||||
addq 1,r3
|
||||
quit
|
|
@ -1,95 +0,0 @@
|
|||
# mach: crisv0 crisv3 crisv8 crisv10 crisv32
|
||||
# output: 1\n0\n1\n0\n1\n0\n1\n0\n0\n1\n1\n0\n1\n0\n1\n0\n1\n0\n0\n1\n0\n1\n1\n0\n1\n0\n0\n1\n1\n0\n1\n1\n0\n
|
||||
|
||||
.include "testutils.inc"
|
||||
|
||||
.macro lcheckr3 v
|
||||
move $ccs, $r9
|
||||
checkr3 \v
|
||||
move $r9, $ccs
|
||||
.endm
|
||||
|
||||
start
|
||||
clearf nzvc
|
||||
scc r3
|
||||
lcheckr3 1
|
||||
scs r3
|
||||
lcheckr3 0
|
||||
sne r3
|
||||
lcheckr3 1
|
||||
seq r3
|
||||
lcheckr3 0
|
||||
svc r3
|
||||
lcheckr3 1
|
||||
svs r3
|
||||
lcheckr3 0
|
||||
spl r3
|
||||
lcheckr3 1
|
||||
smi r3
|
||||
lcheckr3 0
|
||||
sls r3
|
||||
lcheckr3 0
|
||||
shi r3
|
||||
lcheckr3 1
|
||||
sge r3
|
||||
lcheckr3 1
|
||||
slt r3
|
||||
lcheckr3 0
|
||||
sgt r3
|
||||
lcheckr3 1
|
||||
sle r3
|
||||
lcheckr3 0
|
||||
sa r3
|
||||
lcheckr3 1
|
||||
setf nzvc
|
||||
scc r3
|
||||
lcheckr3 0
|
||||
scs r3
|
||||
lcheckr3 1
|
||||
sne r3
|
||||
lcheckr3 0
|
||||
svc r3
|
||||
lcheckr3 0
|
||||
svs r3
|
||||
lcheckr3 1
|
||||
spl r3
|
||||
lcheckr3 0
|
||||
smi r3
|
||||
lcheckr3 1
|
||||
sls r3
|
||||
lcheckr3 1
|
||||
shi r3
|
||||
lcheckr3 0
|
||||
sge r3
|
||||
lcheckr3 1
|
||||
slt r3
|
||||
lcheckr3 0
|
||||
sgt r3
|
||||
lcheckr3 0
|
||||
sle r3
|
||||
lcheckr3 1
|
||||
sa r3
|
||||
lcheckr3 1
|
||||
clearf n
|
||||
sge r3
|
||||
lcheckr3 0
|
||||
slt r3
|
||||
lcheckr3 1
|
||||
|
||||
.if 1 ;..asm.arch.cris.v32
|
||||
setf p
|
||||
ssb r3
|
||||
.else
|
||||
moveq 1,r3
|
||||
.endif
|
||||
lcheckr3 1
|
||||
|
||||
.if 1 ;..asm.arch.cris.v32
|
||||
clearf p
|
||||
ssb r3
|
||||
.else
|
||||
moveq 0,r3
|
||||
.endif
|
||||
lcheckr3 0
|
||||
|
||||
quit
|
|
@ -1,87 +0,0 @@
|
|||
# mach: crisv0 crisv3 crisv8 crisv10 crisv32
|
||||
# output: 1\n1\n1fffe\nfffffffe\ncc463bdb\nffff0001\n1\nfffe\nfedafffe\n78133bdb\nffffff01\n1\nfe\nfeda49fe\n781344db\n85649200\n
|
||||
|
||||
.include "testutils.inc"
|
||||
start
|
||||
|
||||
moveq -1,r3
|
||||
sub.d -2,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 1
|
||||
|
||||
moveq 2,r3
|
||||
sub.d 1,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 1
|
||||
|
||||
move.d 0xffff,r3
|
||||
sub.d -0xffff,r3
|
||||
test_cc 0 0 0 1
|
||||
checkr3 1fffe
|
||||
|
||||
moveq -1,r3
|
||||
sub.d 1,r3
|
||||
test_cc 1 0 0 0
|
||||
checkr3 fffffffe
|
||||
|
||||
move.d 0x78134452,r3
|
||||
sub.d -0x5432f789,r3
|
||||
test_cc 1 0 1 1
|
||||
checkr3 cc463bdb
|
||||
|
||||
moveq -1,r3
|
||||
sub.w -2,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 ffff0001
|
||||
|
||||
moveq 2,r3
|
||||
sub.w 1,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 1
|
||||
|
||||
move.d 0xffff,r3
|
||||
sub.w 1,r3
|
||||
test_cc 1 0 0 0
|
||||
checkr3 fffe
|
||||
|
||||
move.d 0xfedaffff,r3
|
||||
sub.w 1,r3
|
||||
test_cc 1 0 0 0
|
||||
checkr3 fedafffe
|
||||
|
||||
move.d 0x78134452,r3
|
||||
sub.w 0x877,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 78133bdb
|
||||
|
||||
moveq -1,r3
|
||||
sub.b -2,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 ffffff01
|
||||
|
||||
moveq 2,r3
|
||||
sub.b 1,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 1
|
||||
|
||||
move.d 0xff,r3
|
||||
sub.b 1,r3
|
||||
test_cc 1 0 0 0
|
||||
checkr3 fe
|
||||
|
||||
move.d 0xfeda49ff,r3
|
||||
sub.b 1,r3
|
||||
test_cc 1 0 0 0
|
||||
checkr3 feda49fe
|
||||
|
||||
move.d 0x78134452,r3
|
||||
sub.b 0x77,r3
|
||||
test_cc 1 0 0 1
|
||||
checkr3 781344db
|
||||
|
||||
move.d 0x85649282,r3
|
||||
sub.b 0x82,r3
|
||||
test_cc 0 1 0 0
|
||||
checkr3 85649200
|
||||
|
||||
quit
|
|
@ -1,96 +0,0 @@
|
|||
# mach: crisv0 crisv3 crisv8 crisv10 crisv32
|
||||
# output: 1\n1\n1fffe\nfffffffe\ncc463bdb\nffff0001\n1\nfffe\nfedafffe\n78133bdb\nffffff01\n1\nfe\nfeda49fe\n781344db\n85649200\n
|
||||
|
||||
.include "testutils.inc"
|
||||
.data
|
||||
x:
|
||||
.dword -2,1,-0xffff,1,-0x5432f789
|
||||
.word -2,1,1,0x877
|
||||
.byte -2,1,0x77
|
||||
.byte 0x22
|
||||
|
||||
start
|
||||
moveq -1,r3
|
||||
move.d x,r5
|
||||
sub.d [r5+],r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 1
|
||||
|
||||
moveq 2,r3
|
||||
sub.d [r5],r3
|
||||
test_cc 0 0 0 0
|
||||
addq 4,r5
|
||||
checkr3 1
|
||||
|
||||
move.d 0xffff,r3
|
||||
sub.d [r5+],r3
|
||||
test_cc 0 0 0 1
|
||||
checkr3 1fffe
|
||||
|
||||
moveq -1,r3
|
||||
sub.d [r5+],r3
|
||||
test_cc 1 0 0 0
|
||||
checkr3 fffffffe
|
||||
|
||||
move.d 0x78134452,r3
|
||||
sub.d [r5+],r3
|
||||
test_cc 1 0 1 1
|
||||
checkr3 cc463bdb
|
||||
|
||||
moveq -1,r3
|
||||
sub.w [r5+],r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 ffff0001
|
||||
|
||||
moveq 2,r3
|
||||
sub.w [r5+],r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 1
|
||||
|
||||
move.d 0xffff,r3
|
||||
sub.w [r5],r3
|
||||
test_cc 1 0 0 0
|
||||
checkr3 fffe
|
||||
|
||||
move.d 0xfedaffff,r3
|
||||
sub.w [r5+],r3
|
||||
test_cc 1 0 0 0
|
||||
checkr3 fedafffe
|
||||
|
||||
move.d 0x78134452,r3
|
||||
sub.w [r5+],r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 78133bdb
|
||||
|
||||
moveq -1,r3
|
||||
sub.b [r5],r3
|
||||
test_cc 0 0 0 0
|
||||
addq 1,r5
|
||||
checkr3 ffffff01
|
||||
|
||||
moveq 2,r3
|
||||
sub.b [r5],r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 1
|
||||
|
||||
move.d 0xff,r3
|
||||
sub.b [r5],r3
|
||||
test_cc 1 0 0 0
|
||||
checkr3 fe
|
||||
|
||||
move.d 0xfeda49ff,r3
|
||||
sub.b [r5+],r3
|
||||
test_cc 1 0 0 0
|
||||
checkr3 feda49fe
|
||||
|
||||
move.d 0x78134452,r3
|
||||
sub.b [r5+],r3
|
||||
test_cc 1 0 0 1
|
||||
checkr3 781344db
|
||||
|
||||
move.d 0x85649222,r3
|
||||
sub.b [r5],r3
|
||||
test_cc 0 1 0 0
|
||||
checkr3 85649200
|
||||
|
||||
quit
|
|
@ -1,52 +0,0 @@
|
|||
# mach: crisv3 crisv8 crisv10 crisv32
|
||||
# output: 0\nffffffff\nfffffffe\nffff\nff\n56788f9\n56788d9\n567889a\n0\n7ffffffc\n
|
||||
|
||||
.include "testutils.inc"
|
||||
start
|
||||
moveq 1,r3
|
||||
subq 1,r3
|
||||
test_cc 0 1 0 0
|
||||
checkr3 0
|
||||
|
||||
subq 1,r3
|
||||
test_cc 1 0 0 1
|
||||
checkr3 ffffffff
|
||||
|
||||
subq 1,r3
|
||||
test_cc 1 0 0 0
|
||||
checkr3 fffffffe
|
||||
|
||||
move.d 0x10000,r3
|
||||
subq 1,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 ffff
|
||||
|
||||
move.d 0x100,r3
|
||||
subq 1,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 ff
|
||||
|
||||
move.d 0x5678900,r3
|
||||
subq 7,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 56788f9
|
||||
|
||||
subq 32,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 56788d9
|
||||
|
||||
subq 63,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 567889a
|
||||
|
||||
move.d 34,r3
|
||||
subq 34,r3
|
||||
test_cc 0 1 0 0
|
||||
checkr3 0
|
||||
|
||||
move.d 0x80000024,r3
|
||||
subq 40,r3
|
||||
test_cc 0 0 1 0
|
||||
checkr3 7ffffffc
|
||||
|
||||
quit
|
|
@ -1,102 +0,0 @@
|
|||
# mach: crisv0 crisv3 crisv8 crisv10 crisv32
|
||||
# output: 1\n1\n1fffe\nfffffffe\ncc463bdb\nffff0001\n1\nfffe\nfedafffe\n78133bdb\nffffff01\n1\nfe\nfeda49fe\n781344db\n85649200\n
|
||||
|
||||
.include "testutils.inc"
|
||||
start
|
||||
moveq -1,r3
|
||||
moveq -2,r4
|
||||
sub.d r4,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 1
|
||||
|
||||
moveq 2,r3
|
||||
moveq 1,r4
|
||||
sub.d r4,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 1
|
||||
|
||||
move.d 0xffff,r3
|
||||
move.d -0xffff,r4
|
||||
sub.d r4,r3
|
||||
test_cc 0 0 0 1
|
||||
checkr3 1fffe
|
||||
|
||||
moveq 1,r4
|
||||
moveq -1,r3
|
||||
sub.d r4,r3
|
||||
test_cc 1 0 0 0
|
||||
checkr3 fffffffe
|
||||
|
||||
move.d -0x5432f789,r4
|
||||
move.d 0x78134452,r3
|
||||
sub.d r4,r3
|
||||
test_cc 1 0 1 1
|
||||
checkr3 cc463bdb
|
||||
|
||||
moveq -1,r3
|
||||
moveq -2,r4
|
||||
sub.w r4,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 ffff0001
|
||||
|
||||
moveq 2,r3
|
||||
moveq 1,r4
|
||||
sub.w r4,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 1
|
||||
|
||||
move.d 0xffff,r3
|
||||
move.d -0xffff,r4
|
||||
sub.w r4,r3
|
||||
test_cc 1 0 0 0
|
||||
checkr3 fffe
|
||||
|
||||
move.d 0xfedaffff,r3
|
||||
move.d -0xfedaffff,r4
|
||||
sub.w r4,r3
|
||||
test_cc 1 0 0 0
|
||||
checkr3 fedafffe
|
||||
|
||||
move.d -0x5432f789,r4
|
||||
move.d 0x78134452,r3
|
||||
sub.w r4,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 78133bdb
|
||||
|
||||
moveq -1,r3
|
||||
moveq -2,r4
|
||||
sub.b r4,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 ffffff01
|
||||
|
||||
moveq 2,r3
|
||||
moveq 1,r4
|
||||
sub.b r4,r3
|
||||
test_cc 0 0 0 0
|
||||
checkr3 1
|
||||
|
||||
move.d -0xff,r4
|
||||
move.d 0xff,r3
|
||||
sub.b r4,r3
|
||||
test_cc 1 0 0 0
|
||||
checkr3 fe
|
||||
|
||||
move.d -0xfeda49ff,r4
|
||||
move.d 0xfeda49ff,r3
|
||||
sub.b r4,r3
|
||||
test_cc 1 0 0 0
|
||||
checkr3 feda49fe
|
||||
|
||||
move.d -0x5432f789,r4
|
||||
move.d 0x78134452,r3
|
||||
sub.b r4,r3
|
||||
test_cc 1 0 0 1
|
||||
checkr3 781344db
|
||||
|
||||
move.d 0x85649222,r3
|
||||
move.d 0x77445622,r4
|
||||
sub.b r4,r3
|
||||
test_cc 0 1 0 0
|
||||
checkr3 85649200
|
||||
|
||||
quit
|
|
@ -1,72 +0,0 @@
|
|||
|
||||
.include "testutils.inc"
|
||||
|
||||
start
|
||||
|
||||
moveq -1, $r0
|
||||
moveq 0, $r1
|
||||
addq 1, $r0
|
||||
ax
|
||||
addq 0, $r1
|
||||
|
||||
move.d $r0, $r3
|
||||
checkr3 0
|
||||
move.d $r1, $r3
|
||||
checkr3 1
|
||||
|
||||
move.d 0, $r0
|
||||
moveq -1, $r1
|
||||
subq 1, $r0
|
||||
ax
|
||||
subq 0, $r1
|
||||
|
||||
move.d $r0, $r3
|
||||
checkr3 ffffffff
|
||||
move.d $r1, $r3
|
||||
checkr3 fffffffe
|
||||
|
||||
|
||||
moveq -1, $r0
|
||||
moveq -1, $r1
|
||||
cmpq -1, $r0
|
||||
ax
|
||||
cmpq -1, $r1
|
||||
beq 1f
|
||||
nop
|
||||
fail
|
||||
1:
|
||||
cmpq 0, $r0
|
||||
ax
|
||||
cmpq -1, $r1
|
||||
bne 1f
|
||||
nop
|
||||
fail
|
||||
1:
|
||||
|
||||
;; test for broken X sequence, run it several times.
|
||||
moveq 8, $r0
|
||||
1:
|
||||
moveq 0, $r3
|
||||
move.d $r0, $r1
|
||||
andq 1, $r1
|
||||
lslq 4, $r1
|
||||
moveq 1, $r2
|
||||
or.d $r1, $r2
|
||||
ba 2f
|
||||
move $r2, $ccs
|
||||
2:
|
||||
addq 0, $r3
|
||||
move.d $r0, $r4
|
||||
move.d $r1, $r5
|
||||
move.d $r2, $r6
|
||||
move.d $r3, $r7
|
||||
lsrq 4, $r1
|
||||
move.d $r1, $r8
|
||||
xor $r1, $r3
|
||||
checkr3 0
|
||||
subq 1, $r0
|
||||
bne 1b
|
||||
nop
|
||||
|
||||
pass
|
||||
quit
|
|
@ -1,13 +0,0 @@
|
|||
.data
|
||||
_stack_start:
|
||||
.space 8192, 0
|
||||
_stack_end:
|
||||
.text
|
||||
.global _start
|
||||
_start:
|
||||
move.d _stack_end, $sp
|
||||
jsr main
|
||||
nop
|
||||
moveq 0, $r10
|
||||
jump exit
|
||||
nop
|
|
@ -1,63 +0,0 @@
|
|||
/*
|
||||
* Helper functions for CRIS system tests
|
||||
*
|
||||
* There is no libc and only a limited set of headers.
|
||||
*/
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
void exit(int status)
|
||||
{
|
||||
register unsigned int callno asm ("r9") = 1; /* NR_exit */
|
||||
|
||||
asm volatile ("break 13\n"
|
||||
: /* no outputs */
|
||||
: "r" (callno)
|
||||
: "memory");
|
||||
while (1) {
|
||||
/* do nothing */
|
||||
};
|
||||
}
|
||||
|
||||
size_t write(int fd, const void *buf, size_t count)
|
||||
{
|
||||
register unsigned int callno asm ("r9") = 4; /* NR_write */
|
||||
register unsigned int r10 asm ("r10") = fd;
|
||||
register const void *r11 asm ("r11") = buf;
|
||||
register size_t r12 asm ("r12") = count;
|
||||
register unsigned int r asm ("r10");
|
||||
|
||||
asm volatile ("break 13\n"
|
||||
: "=r" (r)
|
||||
: "r" (callno), "0" (r10), "r" (r11), "r" (r12)
|
||||
: "memory");
|
||||
|
||||
return r;
|
||||
}
|
||||
|
||||
static inline int mystrlen(char *s)
|
||||
{
|
||||
int i = 0;
|
||||
while (s[i]) {
|
||||
i++;
|
||||
}
|
||||
return i;
|
||||
}
|
||||
|
||||
|
||||
void pass(void)
|
||||
{
|
||||
char s[] = "passed.\n";
|
||||
write(1, s, sizeof(s) - 1);
|
||||
exit(0);
|
||||
}
|
||||
|
||||
void _fail(char *reason)
|
||||
{
|
||||
char s[] = "\nfailed: ";
|
||||
int len = mystrlen(reason);
|
||||
write(1, s, sizeof(s) - 1);
|
||||
write(1, reason, len);
|
||||
write(1, "\n", 1);
|
||||
exit(1);
|
||||
}
|
|
@ -1,117 +0,0 @@
|
|||
.syntax no_register_prefix
|
||||
|
||||
.macro start
|
||||
.text
|
||||
.global main
|
||||
main:
|
||||
.endm
|
||||
|
||||
.macro quit
|
||||
jump pass
|
||||
nop
|
||||
.endm
|
||||
|
||||
.macro pass
|
||||
jump pass
|
||||
nop
|
||||
.endm
|
||||
|
||||
.macro startnostack
|
||||
start
|
||||
.endm
|
||||
|
||||
.macro fail
|
||||
.data
|
||||
99:
|
||||
.asciz " checkr3 failed\n"
|
||||
.text
|
||||
move.d 99b, $r10
|
||||
jsr _fail
|
||||
nop
|
||||
.endm
|
||||
|
||||
.macro checkr3 val
|
||||
cmp.d 0x\val, $r3
|
||||
beq 100f
|
||||
nop
|
||||
.data
|
||||
99:
|
||||
.asciz "checkr3 failed\n"
|
||||
.text
|
||||
move.d 99b, $r10
|
||||
jsr _fail
|
||||
nop
|
||||
100:
|
||||
.endm
|
||||
|
||||
; Test the condition codes
|
||||
.macro test_cc N Z V C
|
||||
.if \N
|
||||
bpl 9f
|
||||
nop
|
||||
.else
|
||||
bmi 9f
|
||||
nop
|
||||
.endif
|
||||
.if \Z
|
||||
bne 9f
|
||||
nop
|
||||
.else
|
||||
beq 9f
|
||||
nop
|
||||
.endif
|
||||
.if \V
|
||||
bvc 9f
|
||||
nop
|
||||
.else
|
||||
bvs 9f
|
||||
nop
|
||||
.endif
|
||||
.if \C
|
||||
bcc 9f
|
||||
nop
|
||||
.else
|
||||
bcs 9f
|
||||
nop
|
||||
.endif
|
||||
ba 8f
|
||||
nop
|
||||
9:
|
||||
.data
|
||||
99:
|
||||
.asciz "test_move_cc failed\n"
|
||||
.text
|
||||
move.d 99b, $r10
|
||||
jsr _fail
|
||||
nop
|
||||
8:
|
||||
.endm
|
||||
|
||||
|
||||
.macro test_move_cc N Z V C
|
||||
.if \N
|
||||
bpl 9f
|
||||
nop
|
||||
.else
|
||||
bmi 9f
|
||||
nop
|
||||
.endif
|
||||
.if \Z
|
||||
bne 9f
|
||||
nop
|
||||
.else
|
||||
beq 9f
|
||||
nop
|
||||
.endif
|
||||
ba 8f
|
||||
nop
|
||||
9:
|
||||
.data
|
||||
99:
|
||||
.asciz "test_move_cc failed\n"
|
||||
.text
|
||||
move.d 99b, $r10
|
||||
jsr _fail
|
||||
nop
|
||||
8:
|
||||
.endm
|
Loading…
Reference in New Issue