* sim/cris: New directory with C and assembly tests for the CRIS

simulator.
This commit is contained in:
Hans-Peter Nilsson 2005-11-21 04:48:19 +00:00
parent 6745c7267e
commit 5e1f64305e
316 changed files with 13606 additions and 0 deletions

View File

@ -1,3 +1,8 @@
2005-11-21 Hans-Peter Nilsson <hp@axis.com>
* sim/cris: New directory with C and assembly tests for the CRIS
simulator.
2005-01-11 Andrew Cagney <cagney@localhost.localdomain>
* configure: Regenerated to track ../common/aclocal.m4 changes.

View File

@ -0,0 +1,50 @@
# mach: crisv0 crisv3 crisv8 crisv10 crisv32
# output: 1\n0\n80000000\n7fffffff\n2a\n1\nffff\n1f\n0\n
.include "testutils.inc"
start
moveq -1,r3
abs r3,r3
test_move_cc 0 0 0 0
dumpr3 ; 1
moveq 0,r3
dumpr3 ; 0
move.d 0x80000000,r4
abs r4,r3
test_move_cc 1 0 0 0
dumpr3 ; 80000000
move.d 0x7fffffff,r4
abs r4,r3
test_move_cc 0 0 0 0
dumpr3 ; 7fffffff
move.d 42,r3
abs r3,r3
test_move_cc 0 0 0 0
dumpr3 ; 2a
moveq 1,r6
abs r6,r3
test_move_cc 0 0 0 0
dumpr3 ; 1
move.d 0xffff,r3
abs r3,r3
test_move_cc 0 0 0 0
dumpr3 ; ffff
moveq -31,r5
abs r5,r3
test_move_cc 0 0 0 0
dumpr3 ; 1f
moveq 0,r5
abs r5,r3
test_move_cc 0 1 0 0
dumpr3 ; 0
quit

View File

@ -0,0 +1,81 @@
# 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
add.d 2,r3
test_cc 0 0 0 1
dumpr3 ; 1
moveq 2,r3
add.d -1,r3
test_cc 0 0 0 1
dumpr3 ; 1
move.d 0xffff,r3
add.d 0xffff,r3
test_cc 0 0 0 0
dumpr3 ; 1fffe
moveq -1,r3
add.d -1,r3
test_cc 1 0 0 1
dumpr3 ; fffffffe
move.d 0x78134452,r3
add.d 0x5432f789,r3
test_cc 1 0 1 0
dumpr3 ; cc463bdb
moveq -1,r3
add.w 2,r3
test_cc 0 0 0 1
dumpr3 ; ffff0001
moveq 2,r3
add.w -1,r3
test_cc 0 0 0 1
dumpr3 ; 1
move.d 0xffff,r3
add.w 0xffff,r3
test_cc 1 0 0 1
dumpr3 ; fffe
move.d 0xfedaffff,r3
add.w 0xffff,r3
test_cc 1 0 0 1
dumpr3 ; fedafffe
move.d 0x78134452,r3
add.w 0xf789,r3
test_cc 0 0 0 1
dumpr3 ; 78133bdb
moveq -1,r3
add.b 2,r3
test_cc 0 0 0 1
dumpr3 ; ffffff01
moveq 2,r3
add.b -1,r3
test_cc 0 0 0 1
dumpr3 ; 1
move.d 0xff,r3
add.b 0xff,r3
test_cc 1 0 0 1
dumpr3 ; fe
move.d 0xfeda49ff,r3
add.b 0xff,r3
test_cc 1 0 0 1
dumpr3 ; feda49fe
move.d 0x78134452,r3
add.b 0x89,r3
test_cc 1 0 0 0
dumpr3 ; 781344db
quit

View File

@ -0,0 +1,35 @@
# mach: crisv3 crisv8 crisv10
# output: 2f\n31\n
# Test that the special case add.d const,pc works.
.include "testutils.inc"
start
x:
add.d y-y0,pc
y0:
quit
.space 1000
quit
quit
quit
quit
quit
z:
move.d 49,r3
dumpr3
quit
.space 1000
quit
quit
quit
quit
quit
y:
move.d 47,r3
dumpr3
add.d z-z0,pc
z0:
quit

View File

@ -0,0 +1,50 @@
# mach: crisv32
# output: 0\n0\n1\n1\n2\n1ffff\nfffffffe\ncc463bdc\n
.include "testutils.inc"
start
clearf cz
moveq 0,r3
addc 0,r3
test_cc 0 0 0 0
dumpr3 ; 0
setf z
moveq 0,r3
addc 0,r3
test_cc 0 1 0 0
dumpr3 ; 0
setf cz
moveq 0,r3
addc 0,r3
test_cc 0 0 0 0
dumpr3 ; 1
clearf c
moveq -1,r3
addc 2,r3
test_cc 0 0 0 1
dumpr3 ; 1+c
moveq 2,r3
addc -1,r3
test_cc 0 0 0 1
dumpr3 ; 2+c
move.d 0xffff,r3
addc 0xffff,r3
test_cc 0 0 0 0
dumpr3 ; 1ffff
moveq -1,r3
addc -1,r3
test_cc 1 0 0 1
dumpr3 ; fffffffe+c
move.d 0x78134452,r3
addc 0x5432f789,r3
test_cc 1 0 1 0
dumpr3 ; cc463bdc
quit

View File

@ -0,0 +1,69 @@
# mach: crisv32
# output: 0\n0\n1\n0\n1\n1\n2\n1ffff\nfffffffe\ncc463bdc\n
.include "testutils.inc"
.data
x:
.dword 0,0,2,-1,0xffff,-1,0x5432f789
start
move.d x,r5
clearf cz
moveq 0,r3
addc [r5],r3
test_cc 0 0 0 0
dumpr3 ; 0
setf z
moveq 0,r3
addc [r5],r3
test_cc 0 1 0 0
dumpr3 ; 0
setf c
moveq 0,r3
addc [r5],r3
test_cc 0 0 0 0
dumpr3 ; 1
clearf c
moveq 0,r3
addc [r5+],r3
test_cc 0 0 0 0
dumpr3 ; 0
setf c
moveq 0,r3
addc [r5+],r3
test_cc 0 0 0 0
dumpr3 ; 1
clearf c
moveq -1,r3
addc [r5+],r3
test_cc 0 0 0 1
dumpr3 ; 1+c
moveq 2,r3
addc [r5],r3
moveq 4,r6
addi r6.b,r5
test_cc 0 0 0 1
dumpr3 ; 2+c
move.d 0xffff,r3
addc [r5+],r3
test_cc 0 0 0 0
dumpr3 ; 1ffff
moveq -1,r3
addc [r5+],r3
test_cc 1 0 0 1
dumpr3 ; fffffffe+c
move.d 0x78134452,r3
addc [r5+],r3
test_cc 1 0 1 0
dumpr3 ; cc463bdc
quit

View File

@ -0,0 +1,57 @@
# mach: crisv32
# output: 0\n0\n1\n1\n2\n1ffff\nfffffffe\ncc463bdc\n
.include "testutils.inc"
start
clearf cz
moveq 0,r3
moveq 0,r4
addc r4,r3
test_cc 0 0 0 0
dumpr3 ; 0
setf z
moveq 0,r3
moveq 0,r4
addc r4,r3
test_cc 0 1 0 0
dumpr3 ; 0
setf cz
moveq 0,r3
moveq 0,r4
addc r4,r3
test_cc 0 0 0 0
dumpr3 ; 1
moveq -1,r3
moveq 2,r4
addc r4,r3
test_cc 0 0 0 1
dumpr3 ; 1+c
moveq 2,r3
moveq -1,r4
addc r4,r3
test_cc 0 0 0 1
dumpr3 ; 2+c
move.d 0xffff,r4
move.d r4,r3
addc r4,r3
test_cc 0 0 0 0
dumpr3 ; 1ffff
moveq -1,r4
move.d r4,r3
addc r4,r3
test_cc 1 0 0 1
dumpr3 ; fffffffe+c
move.d 0x5432f789,r4
move.d 0x78134452,r3
addc r4,r3
test_cc 1 0 1 0
dumpr3 ; cc463bdc
quit

View File

@ -0,0 +1,57 @@
# 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
dumpr3 ; 0
moveq 0,r3
moveq 1,r4
setf zcvn
addi r4.b,r3
test_cc 1 1 1 1
dumpr3 ; 1
moveq 0,r3
moveq 1,r4
setf cv
clearf zn
addi r4.w,r3
test_cc 0 0 1 1
dumpr3 ; 2
moveq 0,r3
moveq 1,r4
clearf cv
setf zn
addi r4.d,r3
test_cc 1 1 0 0
dumpr3 ; 4
move.d 0x12345678,r3
move.d 0xabcdef97,r4
clearf cn
setf zv
addi r4.b,r3
test_cc 0 1 1 0
dumpr3 ; be02460f
move.d 0x12345678,r3
move.d 0xabcdef97,r4
setf cn
clearf zv
addi r4.w,r3
test_cc 1 0 0 1
dumpr3 ; 69d035a6
move.d 0x12345678,r3
move.d 0xabcdef97,r4
addi r4.d,r3
dumpr3 ; c16c14d4
quit

View File

@ -0,0 +1,62 @@
# 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
dumpr3 ; 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
dumpr3 ; 4455aa77
moveq 5,r10
clearf znvc
addi r10.b,acr,acr
test_cc 0 0 0 0
move.d [acr],r3
dumpr3 ; 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
dumpr3 ; ff22
moveq -2,r11
addi r11.w,acr,acr
move.d [acr],r3
dumpr3 ; 4455aa77
moveq 5,r9
addi r9.d,acr,acr
subq 18,acr
move.d [acr],r3
dumpr3 ; ff224455
move.d -76789888/4,r12
addi r12.d,r5,acr
add.d 76789886,acr
move.d [acr],r3
dumpr3 ; 55aa77ff
quit

View File

@ -0,0 +1,96 @@
# 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
dumpr3 ; 1
moveq 2,r3
add.d [r5],r3
test_cc 0 0 0 1
addq 4,r5
dumpr3 ; 1
move.d 0xffff,r3
add.d [r5+],r3
test_cc 0 0 0 0
dumpr3 ; 1fffe
moveq -1,r3
add.d [r5+],r3
test_cc 1 0 0 1
dumpr3 ; fffffffe
move.d 0x78134452,r3
add.d [r5+],r3
test_cc 1 0 1 0
dumpr3 ; cc463bdb
moveq -1,r3
add.w [r5+],r3
test_cc 0 0 0 1
dumpr3 ; ffff0001
moveq 2,r3
add.w [r5+],r3
test_cc 0 0 0 1
dumpr3 ; 1
move.d 0xffff,r3
add.w [r5],r3
test_cc 1 0 0 1
dumpr3 ; fffe
move.d 0xfedaffff,r3
add.w [r5+],r3
test_cc 1 0 0 1
dumpr3 ; fedafffe
move.d 0x78134452,r3
add.w [r5+],r3
test_cc 0 0 0 1
dumpr3 ; 78133bdb
moveq -1,r3
add.b [r5],r3
test_cc 0 0 0 1
addq 1,r5
dumpr3 ; ffffff01
moveq 2,r3
add.b [r5],r3
test_cc 0 0 0 1
dumpr3 ; 1
move.d 0xff,r3
add.b [r5],r3
test_cc 1 0 0 1
dumpr3 ; fe
move.d 0xfeda49ff,r3
add.b [r5+],r3
test_cc 1 0 0 1
dumpr3 ; feda49fe
move.d 0x78134452,r3
add.b [r5+],r3
test_cc 1 0 0 0
dumpr3 ; 781344db
move.d 0x78134452,r3
add.b [r5],r3
test_cc 1 0 1 0
dumpr3 ; 781344d0
quit

View File

@ -0,0 +1,44 @@
# mach: crisv32
# output: 4455aa77\n4455aa77\nee19ccff\nff22\n4455aa77\nff224455\n55aa77ff\n
.include "testutils.inc"
.data
x:
.dword 0x55aa77ff
.dword 0xccff2244
.dword 0x88ccee19
start
moveq -1,r0
move.d x-32768,r5
addo.d 32769,r5,acr
move.d [acr],r3
dumpr3 ; 4455aa77
addu.w 32770,r5
addo.w -1,r5,acr
move.d [acr],r3
dumpr3 ; 4455aa77
addo.d 5,acr,acr
move.d [acr],r3
dumpr3 ; ee19ccff
addo.b 3,r5,acr
movu.w [acr],r3
dumpr3 ; ff22
addo.b -4,acr,acr
move.d [acr],r3
dumpr3 ; 4455aa77
addo.w 2,acr,acr
move.d [acr],r3
dumpr3 ; ff224455
addo.d -76789887,r5,acr
add.d 76789885,acr
move.d [acr],r3
dumpr3 ; 55aa77ff
quit

View File

@ -0,0 +1,55 @@
# mach: crisv32
# output: 4455aa77\n4455aa77\nee19ccff\nff22\n4455aa77\nff224455\n55aa77ff\n
.include "testutils.inc"
.data
x:
.dword 0x55aa77ff
.dword 0xccff2244
.dword 0x88ccee19
y:
.dword 32769
.word -1
.dword 5
.byte 3,-4
.word 2
.dword -76789887
start
moveq -1,r0
move.d x-32768,r5
move.d y,r13
addo.d [r13+],r5,acr
move.d [acr],r3
dumpr3 ; 4455aa77
addu.w 32770,r5
addo.w [r13+],r5,acr
move.d [acr],r3
dumpr3 ; 4455aa77
addo.d [r13],acr,acr
addq 4,r13
move.d [acr],r3
dumpr3 ; ee19ccff
addo.b [r13+],r5,acr
movu.w [acr],r3
dumpr3 ; ff22
addo.b [r13],acr,acr
addq 1,r13
move.d [acr],r3
dumpr3 ; 4455aa77
addo.w [r13],acr,acr
addq 2,r13
move.d [acr],r3
dumpr3 ; ff224455
addo.d [r13+],r5,acr
add.d 76789885,acr
move.d [acr],r3
dumpr3 ; 55aa77ff
quit

View File

@ -0,0 +1,31 @@
# mach: crisv32
# output: ccff2244\n88ccee19\n55aa77ff\n19cc\n
.include "testutils.inc"
.data
x:
.dword 0x55aa77ff
.dword 0xccff2244
.dword 0x88ccee19
start
moveq -1,r0
move.d x+4,r5
setf zvnc
addoq 0,r5,acr
test_cc 1 1 1 1
move.d [acr],r3
dumpr3 ; ccff2244
setf zvnc
addoq 4,r5,acr
test_cc 1 1 1 1
move.d [acr],r3
dumpr3 ; 88ccee19
clearf zvnc
addoq -8,acr,acr
test_cc 0 0 0 0
move.d [acr],r3
dumpr3 ; 55aa77ff
addoq 3,r5,acr
movu.w [acr],r3
dumpr3 ; 19cc
quit

View File

@ -0,0 +1,47 @@
# 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
dumpr3
addq 1,r3
test_cc 0 1 0 1
dumpr3
addq 1,r3
test_cc 0 0 0 0
dumpr3
move.d 0xff,r3
addq 1,r3
test_cc 0 0 0 0
dumpr3
move.d 0xffff,r3
addq 1,r3
test_cc 0 0 0 0
dumpr3
move.d 0x42,r3
addq 5,r3
test_cc 0 0 0 0
dumpr3
addq 32,r3
test_cc 0 0 0 0
dumpr3
addq 63,r3
test_cc 0 0 0 0
dumpr3
move.d 0x7ffffffe,r3
addq 3,r3
test_cc 1 0 1 0
dumpr3
quit

View File

@ -0,0 +1,8 @@
# mach: crisv3 crisv8 crisv10
# xerror:
# output: General register read of PC is not implemented.\nprogram stopped with signal 5.\n
.include "testutils.inc"
start
addq 1,pc

View File

@ -0,0 +1,96 @@
# 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
dumpr3 ; 1
moveq 2,r3
moveq -1,r4
add.d r4,r3
test_cc 0 0 0 1
dumpr3 ; 1
move.d 0xffff,r4
move.d r4,r3
add.d r4,r3
test_cc 0 0 0 0
dumpr3 ; 1fffe
moveq -1,r4
move.d r4,r3
add.d r4,r3
test_cc 1 0 0 1
dumpr3 ; fffffffe
move.d 0x5432f789,r4
move.d 0x78134452,r3
add.d r4,r3
test_cc 1 0 1 0
dumpr3 ; cc463bdb
moveq -1,r3
moveq 2,r4
add.w r4,r3
test_cc 0 0 0 1
dumpr3 ; ffff0001
moveq 2,r3
moveq -1,r4
add.w r4,r3
test_cc 0 0 0 1
dumpr3 ; 1
move.d 0xffff,r4
move.d r4,r3
add.w r4,r3
test_cc 1 0 0 1
dumpr3 ; fffe
move.d 0xfedaffff,r4
move.d r4,r3
add.w r4,r3
test_cc 1 0 0 1
dumpr3 ; fedafffe
move.d 0x5432f789,r4
move.d 0x78134452,r3
add.w r4,r3
test_cc 0 0 0 1
dumpr3 ; 78133bdb
moveq -1,r3
moveq 2,r4
add.b r4,r3
test_cc 0 0 0 1
dumpr3 ; ffffff01
moveq 2,r3
moveq -1,r4
add.b r4,r3
test_cc 0 0 0 1
dumpr3 ; 1
move.d 0xff,r4
move.d r4,r3
add.b r4,r3
test_cc 1 0 0 1
dumpr3 ; fe
move.d 0xfeda49ff,r4
move.d r4,r3
add.b r4,r3
test_cc 1 0 0 1
dumpr3 ; feda49fe
move.d 0x5432f789,r4
move.d 0x78134452,r3
add.b r4,r3
test_cc 1 0 0 0
dumpr3 ; 781344db
quit

View File

@ -0,0 +1,61 @@
# mach: crisv3 crisv8 crisv10
# output: 7\n
# Test that the special case adds.w [pc+rN.w],pc works.
.include "testutils.inc"
start
x:
moveq 0,r3
ba xy
moveq 5,r2
ok:
moveq 7,r3
dumpr3
quit
xy:
adds.w [pc+r2.w],pc
y:
.word x0-y
.word x0-y
.word x0-y
.word x0-y
.word x0-y
.word ok-y
.word x0-y
.word x0-y
.word x0-y
.word x0-y
.word x0-y
.word x0-y
.word x0-y
.word x0-y
.word x0-y
.word x0-y
.word x0-y
.word x0-y
.word x0-y
.word x0-y
.word x0-y
.word x0-y
.word x0-y
.word x0-y
.word x0-y
.word x0-y
.word x0-y
.word x0-y
.word x0-y
.word x0-y
.word x0-y
.word x0-y
.word x0-y
.word x0-y
.word x0-y
.word x0-y
.word x0-y
.word x0-y
.word x0-y
x0:
quit

View File

@ -0,0 +1,91 @@
# 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
dumpr3 ; 1
moveq 2,r3
adds.w 0xffff,r3
test_cc 0 0 0 1
dumpr3 ; 1
moveq 2,r3
addu.b 0xff,r3
dumpr3 ; 101
moveq 2,r3
move.d 0xffffffff,r4
addu.w -1,r3
test_cc 0 0 0 0
dumpr3 ; 10001
move.d 0xffff,r3
addu.b -1,r3
test_cc 0 0 0 0
dumpr3 ; 100fe
move.d 0xffff,r3
addu.w -1,r3
test_cc 0 0 0 0
dumpr3 ; 1fffe
move.d 0xffff,r3
adds.b 0xff,r3
test_cc 0 0 0 1
dumpr3 ; fffe
move.d 0xffff,r3
adds.w 0xffff,r3
test_cc 0 0 0 1
dumpr3 ; fffe
moveq -1,r3
adds.b 0xff,r3
test_cc 1 0 0 1
dumpr3 ; fffffffe
moveq -1,r3
adds.w 0xff,r3
test_cc 0 0 0 1
dumpr3 ; fe
moveq -1,r3
adds.w 0xffff,r3
test_cc 1 0 0 1
dumpr3 ; fffffffe
move.d 0x78134452,r3
addu.b 0x89,r3
test_cc 0 0 0 0
dumpr3 ; 781344db
move.d 0x78134452,r3
adds.b 0x89,r3
test_cc 0 0 0 1
dumpr3 ; 781343db
move.d 0x78134452,r3
addu.w 0xf789,r3
test_cc 0 0 0 0
dumpr3 ; 78143bdb
move.d 0x78134452,r3
adds.w 0xf789,r3
test_cc 0 0 0 1
dumpr3 ; 78133bdb
move.d 0x7fffffee,r3
addu.b 0xff,r3
test_cc 1 0 1 0
dumpr3 ; 800000ed
move.d 0x1,r3
adds.w 0xffff,r3
test_cc 0 1 0 1
dumpr3 ; 0
quit

View File

@ -0,0 +1,106 @@
# 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
dumpr3 ; 1
moveq 2,r3
adds.w [r5+],r3
test_cc 0 0 0 1
dumpr3 ; 1
moveq 2,r3
subq 3,r5
addu.b [r5+],r3
test_cc 0 0 0 0
dumpr3 ; 101
moveq 2,r3
addu.w [r5+],r3
subq 3,r5
test_cc 0 0 0 0
dumpr3 ; 10001
move.d 0xffff,r3
addu.b [r5],r3
test_cc 0 0 0 0
dumpr3 ; 100fe
move.d 0xffff,r3
addu.w [r5],r3
test_cc 0 0 0 0
dumpr3 ; 1fffe
move.d 0xffff,r3
adds.b [r5],r3
test_cc 0 0 0 1
dumpr3 ; fffe
move.d 0xffff,r3
adds.w [r5],r3
test_cc 0 0 0 1
dumpr3 ; fffe
moveq -1,r3
adds.b [r5],r3
test_cc 1 0 0 1
addq 3,r5
dumpr3 ; fffffffe
moveq -1,r3
adds.w [r5+],r3
test_cc 0 0 0 1
dumpr3 ; fe
moveq -1,r3
adds.w [r5+],r3
test_cc 1 0 0 1
dumpr3 ; fffffffe
move.d 0x78134452,r3
addu.b [r5],r3
test_cc 0 0 0 0
dumpr3 ; 781344db
move.d 0x78134452,r3
adds.b [r5+],r3
test_cc 0 0 0 1
dumpr3 ; 781343db
move.d 0x78134452,r3
addu.w [r5],r3
test_cc 0 0 0 0
dumpr3 ; 78143bdb
move.d 0x78134452,r3
adds.w [r5+],r3
test_cc 0 0 0 1
dumpr3 ; 78133bdb
move.d 0x7fffffee,r3
addu.b [r5+],r3
test_cc 1 0 1 0
dumpr3 ; 800000ed
move.d 0x1,r3
adds.w [r5+],r3
test_cc 0 1 0 1
dumpr3 ; 0
quit

View File

@ -0,0 +1,93 @@
# 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
move.d 0xff,r4
adds.b r4,r3
dumpr3 ; 1
moveq 2,r3
move.d 0xffff,r4
adds.w r4,r3
dumpr3 ; 1
moveq 2,r3
move.d 0xffff,r4
addu.b r4,r3
dumpr3 ; 101
moveq 2,r3
move.d 0xffffffff,r4
addu.w r4,r3
dumpr3 ; 10001
move.d 0xffff,r3
move.d 0xffffffff,r4
addu.b r4,r3
dumpr3 ; 100fe
move.d 0xffff,r3
move.d 0xffffffff,r4
addu.w r4,r3
dumpr3 ; 1fffe
move.d 0xffff,r3
move.d 0xff,r4
adds.b r4,r3
dumpr3 ; fffe
move.d 0xffff,r4
move.d r4,r3
adds.w r4,r3
dumpr3 ; fffe
moveq -1,r3
move.d 0xff,r4
adds.b r4,r3
dumpr3 ; fffffffe
moveq -1,r3
move.d 0xff,r4
adds.w r4,r3
dumpr3 ; fe
moveq -1,r3
move.d 0xffff,r4
adds.w r4,r3
dumpr3 ; fffffffe
move.d 0x5432f789,r4
move.d 0x78134452,r3
addu.b r4,r3
dumpr3 ; 781344db
move.d 0x5432f789,r4
move.d 0x78134452,r3
adds.b r4,r3
dumpr3 ; 781343db
move.d 0x5432f789,r4
move.d 0x78134452,r3
addu.w r4,r3
dumpr3 ; 78143bdb
move.d 0x5432f789,r4
move.d 0x78134452,r3
adds.w r4,r3
dumpr3 ; 78133bdb
move.d 0x7fffffee,r3
move.d 0xff,r4
addu.b r4,r3
test_cc 1 0 1 0
dumpr3 ; 800000ed
move.d 0x1,r3
move.d 0xffff,r4
adds.w r4,r3
test_cc 0 1 0 1
dumpr3 ; 0
quit

View File

@ -0,0 +1,80 @@
# 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
dumpr3 ; 2
moveq 2,r3
and.d -1,r3
test_move_cc 0 0 0 0
dumpr3 ; 2
move.d 0xffff,r3
and.d 0xffff,r3
test_move_cc 0 0 0 0
dumpr3 ; ffff
moveq -1,r3
and.d -1,r3
test_move_cc 1 0 0 0
dumpr3 ; ffffffff
move.d 0x78134452,r3
and.d 0x5432f789,r3
test_move_cc 0 0 0 0
dumpr3 ; 50124400
moveq -1,r3
and.w 2,r3
test_move_cc 0 0 0 0
dumpr3 ; ffff0002
moveq 2,r3
and.w -1,r3
test_move_cc 0 0 0 0
dumpr3 ; 2
move.d 0xfffff,r3
and.w 0xffff,r3
test_move_cc 1 0 0 0
dumpr3 ; fffff
move.d 0xfedaffaf,r3
and.w 0xff5f,r3
test_move_cc 1 0 0 0
dumpr3 ; fedaff0f
move.d 0x78134452,r3
and.w 0xf789,r3
test_move_cc 0 0 0 0
dumpr3 ; 78134400
moveq -1,r3
and.b 2,r3
test_move_cc 0 0 0 0
dumpr3 ; ffffff02
moveq 2,r3
and.b -1,r3
test_move_cc 0 0 0 0
dumpr3 ; 2
move.d 0xfa7,r3
and.b 0x5a,r3
test_move_cc 0 0 0 0
dumpr3 ; f02
move.d 0x78134453,r3
and.b 0x89,r3
test_move_cc 0 0 0 0
dumpr3 ; 78134401
and.b 0,r3
test_move_cc 0 1 0 0
dumpr3 ; 78134400
quit

View File

@ -0,0 +1,90 @@
# 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
dumpr3 ; 2
moveq 2,r3
and.d [r5],r3
test_move_cc 0 0 0 0
addq 4,r5
dumpr3 ; 2
move.d 0xffff,r3
and.d [r5+],r3
test_move_cc 0 0 0 0
dumpr3 ; ffff
moveq -1,r3
and.d [r5+],r3
test_move_cc 1 0 0 0
dumpr3 ; ffffffff
move.d 0x78134452,r3
and.d [r5+],r3
test_move_cc 0 0 0 0
dumpr3 ; 50124400
moveq -1,r3
and.w [r5+],r3
test_move_cc 0 0 0 0
dumpr3 ; ffff0002
moveq 2,r3
and.w [r5+],r3
test_move_cc 0 0 0 0
dumpr3 ; 2
move.d 0xfffff,r3
and.w [r5],r3
test_move_cc 1 0 0 0
addq 2,r5
dumpr3 ; fffff
move.d 0xfedaffaf,r3
and.w [r5+],r3
test_move_cc 1 0 0 0
dumpr3 ; fedaff0f
move.d 0x78134452,r3
and.w [r5+],r3
test_move_cc 0 0 0 0
dumpr3 ; 78134400
moveq -1,r3
and.b [r5],r3
test_move_cc 0 0 0 0
addq 1,r5
dumpr3 ; ffffff02
moveq 2,r3
and.b [r5+],r3
test_move_cc 0 0 0 0
dumpr3 ; 2
move.d 0xfa7,r3
and.b [r5+],r3
test_move_cc 0 0 0 0
dumpr3 ; f02
move.d 0x78134453,r3
and.b [r5+],r3
test_move_cc 0 0 0 0
dumpr3 ; 78134401
and.b [r5],r3
test_move_cc 0 1 0 0
dumpr3 ; 78134400
quit

View File

@ -0,0 +1,46 @@
# 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
dumpr3 ; 2
moveq 2,r3
andq -1,r3
test_move_cc 0 0 0 0
dumpr3 ; 2
move.d 0xffff,r3
andq -1,r3
test_move_cc 0 0 0 0
dumpr3 ; ffff
moveq -1,r3
andq -1,r3
test_move_cc 1 0 0 0
dumpr3 ; ffffffff
moveq -1,r3
andq 31,r3
test_move_cc 0 0 0 0
dumpr3 ; 1f
moveq -1,r3
andq -32,r3
test_move_cc 1 0 0 0
dumpr3 ; ffffffe0
move.d 0x78134457,r3
andq -14,r3
test_move_cc 0 0 0 0
dumpr3 ; 78134452
moveq 0,r3
andq -14,r3
test_move_cc 0 1 0 0
dumpr3 ; 0
quit

View File

@ -0,0 +1,95 @@
# 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
dumpr3 ; 2
moveq 2,r3
moveq -1,r4
and.d r4,r3
test_move_cc 0 0 0 0
dumpr3 ; 2
move.d 0xffff,r4
move.d r4,r3
and.d r4,r3
test_move_cc 0 0 0 0
dumpr3 ; ffff
moveq -1,r4
move.d r4,r3
and.d r4,r3
test_move_cc 1 0 0 0
dumpr3 ; ffffffff
move.d 0x5432f789,r4
move.d 0x78134452,r3
and.d r4,r3
test_move_cc 0 0 0 0
dumpr3 ; 50124400
moveq -1,r3
moveq 2,r4
and.w r4,r3
test_move_cc 0 0 0 0
dumpr3 ; ffff0002
moveq 2,r3
moveq -1,r4
and.w r4,r3
test_move_cc 0 0 0 0
dumpr3 ; 2
move.d 0xfffff,r3
move.d 0xffff,r4
and.w r4,r3
test_move_cc 1 0 0 0
dumpr3 ; fffff
move.d 0xfedaffaf,r3
move.d 0xff5f,r4
and.w r4,r3
test_move_cc 1 0 0 0
dumpr3 ; fedaff0f
move.d 0x5432f789,r4
move.d 0x78134452,r3
and.w r4,r3
test_move_cc 0 0 0 0
dumpr3 ; 78134400
moveq -1,r3
moveq 2,r4
and.b r4,r3
test_move_cc 0 0 0 0
dumpr3 ; ffffff02
moveq 2,r3
moveq -1,r4
and.b r4,r3
test_move_cc 0 0 0 0
dumpr3 ; 2
move.d 0x5a,r4
move.d 0xfa7,r3
and.b r4,r3
test_move_cc 0 0 0 0
dumpr3 ; f02
move.d 0x5432f789,r4
move.d 0x78134453,r3
and.b r4,r3
test_move_cc 0 0 0 0
dumpr3 ; 78134401
moveq 0,r7
and.b r7,r3
test_move_cc 0 1 0 0
dumpr3 ; 78134400
quit

View File

@ -0,0 +1,46 @@
# Copyright (C) 2005 Free Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
# Miscellaneous CRIS simulator testcases in assembly code.
if [istarget cris*-*-*] {
global ASFLAGS_FOR_TARGET
# All machines we test and the corresponding assembler option. Needs
# update if we build the simulator for crisv0 crisv3 and crisv8 too.
set combos {{"crisv10" "--march=v10 --no-mul-bug-abort"}
{"crisv32" "--march=v32"}}
# We need to pass different assembler flags for each machine.
# Specifying it here rather than adding a specifier to each and every
# test-file is preferrable.
foreach combo $combos {
set mach [lindex $combo 0]
set ASFLAGS_FOR_TARGET "[lindex $combo 1]"
# The .ms suffix is for "miscellaneous .s".
foreach src [lsort [glob -nocomplain $srcdir/$subdir/*.ms]] {
# If we're only testing specific files and this isn't one of them,
# skip it.
if ![runtest_file_p $runtests $src] {
continue
}
run_sim_test $src $mach
}
}
}

View File

@ -0,0 +1,228 @@
# 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
dumpr3 ; ffffffff
moveq 2,r3
asrq 1,r3
test_move_cc 0 0 0 0
dumpr3 ; 1
moveq -1,r3
asrq 31,r3
test_move_cc 1 0 0 0
dumpr3 ; ffffffff
moveq -1,r3
asrq 15,r3
test_move_cc 1 0 0 0
dumpr3 ; ffffffff
move.d 0x5a67f19f,r3
asrq 12,r3
test_move_cc 0 0 0 0
dumpr3 ; 5a67f
move.d 0xda67f19f,r3
move.d 31,r4
asr.d r4,r3
test_move_cc 1 0 0 0
dumpr3 ; ffffffff
move.d 0xda67f19f,r3
move.d 32,r4
asr.d r4,r3
test_move_cc 1 0 0 0
dumpr3 ; ffffffff
move.d 0xda67f19f,r3
move.d 33,r4
asr.d r4,r3
test_move_cc 1 0 0 0
dumpr3 ; ffffffff
move.d 0xda67f19f,r3
move.d 66,r4
asr.d r4,r3
test_move_cc 1 0 0 0
dumpr3 ; f699fc67
moveq -1,r3
moveq 0,r4
asr.d r4,r3
test_move_cc 1 0 0 0
dumpr3 ; ffffffff
moveq 2,r3
moveq 1,r4
asr.d r4,r3
test_move_cc 0 0 0 0
dumpr3 ; 1
moveq -1,r3
moveq 31,r4
asr.d r4,r3
test_move_cc 1 0 0 0
dumpr3 ; ffffffff
moveq -1,r3
moveq 15,r4
asr.d r4,r3
test_move_cc 1 0 0 0
dumpr3 ; ffffffff
move.d 0x5a67f19f,r3
moveq 12,r4
asr.d r4,r3
test_move_cc 0 0 0 0
dumpr3 ; 5a67f
move.d 0xda67f19f,r3
move.d 31,r4
asr.w r4,r3
test_move_cc 1 0 0 0
dumpr3 ; da67ffff
move.d 0xda67f19f,r3
move.d 32,r4
asr.w r4,r3
test_move_cc 1 0 0 0
dumpr3 ; da67ffff
move.d 0xda67f19f,r3
move.d 33,r4
asr.w r4,r3
test_move_cc 1 0 0 0
dumpr3 ; da67ffff
move.d 0xda67f19f,r3
move.d 66,r4
asr.w r4,r3
test_move_cc 1 0 0 0
dumpr3 ; da67fc67
moveq -1,r3
moveq 0,r4
asr.w r4,r3
test_move_cc 1 0 0 0
dumpr3 ; ffffffff
moveq -1,r3
moveq 1,r4
asr.w r4,r3
test_move_cc 1 0 0 0
dumpr3 ; ffffffff
moveq 2,r3
moveq 1,r4
asr.w r4,r3
test_move_cc 0 0 0 0
dumpr3 ; 1
moveq -1,r3
moveq 31,r4
asr.w r4,r3
test_move_cc 1 0 0 0
dumpr3 ; ffffffff
moveq -1,r3
moveq 15,r4
asr.w r4,r3
test_move_cc 1 0 0 0
dumpr3 ; ffffffff
move.d 0x5a67719f,r3
moveq 12,r4
asr.w r4,r3
test_move_cc 0 0 0 0
dumpr3 ; 5a670007
move.d 0xda67f19f,r3
move.d 31,r4
asr.b r4,r3
test_move_cc 1 0 0 0
dumpr3 ; da67f1ff
move.d 0xda67f19f,r3
move.d 32,r4
asr.b r4,r3
test_move_cc 1 0 0 0
dumpr3 ; da67f1ff
move.d 0xda67f19f,r3
move.d 33,r4
asr.b r4,r3
test_move_cc 1 0 0 0
dumpr3 ; da67f1ff
move.d 0xda67f19f,r3
move.d 66,r4
asr.b r4,r3
test_move_cc 1 0 0 0
dumpr3 ; da67f1e7
moveq -1,r3
moveq 0,r4
asr.b r4,r3
test_move_cc 1 0 0 0
dumpr3 ; ffffffff
moveq -1,r3
moveq 1,r4
asr.b r4,r3
test_move_cc 1 0 0 0
dumpr3 ; ffffffff
moveq 2,r3
moveq 1,r4
asr.b r4,r3
test_move_cc 0 0 0 0
dumpr3 ; 1
moveq -1,r3
moveq 31,r4
asr.b r4,r3
test_move_cc 1 0 0 0
dumpr3 ; ffffffff
moveq -1,r3
moveq 15,r4
asr.b r4,r3
test_move_cc 1 0 0 0
dumpr3 ; ffffffff
moveq -1,r3
moveq 7,r4
asr.b r4,r3
test_move_cc 1 0 0 0
dumpr3 ; ffffffff
move.d 0x5a67f19f,r3
moveq 12,r4
asr.b r4,r3
test_move_cc 0 0 0 0
dumpr3 ; 5a67f1ff
move.d 0x5a67f19f,r3
moveq 4,r4
asr.b r4,r3
test_move_cc 0 0 0 0
dumpr3 ; 5a67f1f9
move.d 0x5a67f19f,r3
asrq 31,r3
test_move_cc 0 1 0 0
dumpr3 ; 0
move.d 0x5a67419f,r3
moveq 16,r4
asr.w r4,r3
test_move_cc 0 1 0 0
dumpr3 ; 5a670000
quit

View File

@ -0,0 +1,93 @@
# mach: crisv0 crisv3 crisv8 crisv10 crisv32
# output: a\n
.include "testutils.inc"
.if ..asm.arch.cris.v32
.set smalloffset,0
.set largeoffset,0
.else
.set smalloffset,2
.set largeoffset,4
.endif
start
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:
dumpr3
quit
; 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

View File

@ -0,0 +1,24 @@
# mach: crisv32
# ld: --section-start=.text=0
# output: 0\n0\n4\n42\n
# sim: --cris-naked
; Check that we don't get signs of an initialized environment
; when --cris-naked.
.include "testutils.inc"
.text
.global _start
_start:
nop
nop
start2:
move.d $r10,$r3
dumpr3
move.d $sp,$r3
dumpr3
lapc start2,$r3
dumpr3
move.d 0x42,$r3
dumpr3
quit

View File

@ -0,0 +1,9 @@
# mach: crisv32
# output: 0\n0\n4\n42\n
# sim: --cris-naked --target binary --architecture crisv32
# ld: --oformat binary
; Check that we can run a naked binary with the same expected
; results as an ELF "executable".
.include "bare1.ms"

View File

@ -0,0 +1,102 @@
# 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
dumpr3
bas 1f,mof
moveq 0,r0
6:
nop
quit
2:
move srp,r3
sub.d 3f,r3
dumpr3
move srp,r4
subq 4,r4
move.d [r4],r3
dumpr3
basc 4f,mof
nop
.dword 0x12124243
7:
nop
quit
8:
move mof,r3
sub.d 7f,r3
dumpr3
move mof,r4
subq 4,r4
move.d [r4],r3
dumpr3
jasc 9f,mof
nop
.dword 0xefb37832
0:
quit
quit
9:
move mof,r3
sub.d 0b,r3
dumpr3
move mof,r4
subq 4,r4
move.d [r4],r3
dumpr3
quit
4:
move mof,r3
sub.d 7b,r3
dumpr3
move mof,r4
subq 4,r4
move.d [r4],r3
dumpr3
basc 5f,bz
moveq 0,r3
.dword 0x7634aeba
quit
.space 32770,0
1:
move mof,r3
sub.d 6b,r3
dumpr3
bsrc 2b
nop
.dword 0xfb349abc
3:
quit
5:
move mof,r3
sub.d 7b,r3
dumpr3
move.d 8b,r6
jasc r6,mof
nop
.dword 0xeab5baad
7:
quit

View File

@ -0,0 +1,181 @@
# mach: crisv0 crisv3 crisv8 crisv10 crisv32
# output: 1c\n
.include "testutils.inc"
start
moveq 0,r3
clearf nzvc
setf nzv
bcc 0f
addq 1,r3
fail
0:
clearf nzvc
setf nzv
bcs dofail
addq 1,r3
clearf nzvc
setf ncv
bne 1f
addq 1,r3
dofail:
fail
1:
clearf nzvc
setf ncv
beq dofail
addq 1,r3
clearf nzvc
setf ncz
bvc 2f
addq 1,r3
fail
2:
clearf nzvc
setf ncz
bvs dofail
addq 1,r3
clearf nzvc
setf vcz
bpl 3f
addq 1,r3
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
fail
4:
clearf nzvc
setf zc
bge 5f
addq 1,r3
fail
5:
clearf nzvc
setf zc
blt dofail
addq 1,r3
clearf nzvc
setf c
bgt 6f
addq 1,r3
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
fail
0:
setf nzvc
clearf ncv
bne dofail
addq 1,r3
setf nzvc
clearf ncv
beq 1f
addq 1,r3
fail
1:
setf nzvc
clearf ncz
bvc dofail
addq 1,r3
setf nzvc
clearf ncz
bvs 2f
addq 1,r3
fail
2:
setf nzvc
clearf vcz
bpl dofail
addq 1,r3
setf nzvc
clearf vcz
bmi 3f
addq 1,r3
fail
3:
setf nzvc
clearf nv
bls 4f
addq 1,r3
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
fail
5:
setf nzvc
clearf c
bgt dofail
addq 1,r3
setf nzvc
clearf c
ble 6f
addq 1,r3
fail
6:
dumpr3
quit

View File

@ -0,0 +1,57 @@
# mach: crisv0 crisv3 crisv8 crisv10
# output: 4455aa77\n4455aa77\nee19ccff\n88ccee19\nff22\n4455aa77\nff224455\n55aa77ff\n
.include "testutils.inc"
.data
x:
.dword 0x55aa77ff
.dword 0xccff2244
.dword 0x88ccee19
.dword 0xb232765a
start
moveq -1,r0
moveq -1,r2
move.d x-32768,r5
move.d [r5+32769],r3
test_move_cc 0 0 0 0
dumpr3 ; 4455aa77
addu.w 32770,r5
bdap.w -1,r5
move.d [r0],r3
test_move_cc 0 0 0 0
dumpr3 ; 4455aa77
bdap.d 4,r5
move.d [r2+],r3
test_move_cc 1 0 0 0
dumpr3 ; ee19ccff
bdap.b 2,r2
move.d [r3],r3
test_move_cc 1 0 0 0
dumpr3 ; 88ccee19
bdap.b 3,r5
movu.w [r4+],r3
test_move_cc 0 0 0 0
dumpr3 ; ff22
bdap.b -4,r4
move.d [r6+],r3
test_move_cc 0 0 0 0
dumpr3 ; 4455aa77
bdap.w 2,r6
move.d [r3],r9
test_move_cc 1 0 0 0
dumpr3 ; ff224455
add.d 76789885,r5
bdap.d -76789887,r5
move.d [r3],r9
test_move_cc 0 0 0 0
dumpr3 ; 55aa77ff
quit

View File

@ -0,0 +1,56 @@
# mach: crisv0 crisv3 crisv8 crisv10
# output: 4455aa77\n4455aa77\nee19ccff\nff22\n4455aa77\nff224455\n55aa77ff\n
.include "testutils.inc"
.data
x:
.dword 0x55aa77ff
.dword 0xccff2244
.dword 0x88ccee19
y:
.dword 32769
.word -1
.dword 5
.byte 3,-4
.word 2
.dword -76789887
start
moveq -1,r0
move.d x-32768,r5
move.d y,r13
bdap.d [r13+],r5
move.d [r3],r9
test_move_cc 0 0 0 0
dumpr3 ; 4455aa77
addu.w 32770,r5
bdap.w [r13+],r5
move.d [r9+],r3
dumpr3 ; 4455aa77
bdap.d [r13],r9
move.d [r3],r7
addq 4,r13
dumpr3 ; ee19ccff
bdap.b [r13+],r5
movu.w [r7+],r3
dumpr3 ; ff22
bdap.b [r13],r7
move.d [r7+],r3
addq 1,r13
dumpr3 ; 4455aa77
bdap.w [r13],r7
move.d [r3],r3
addq 2,r13
dumpr3 ; ff224455
add.d 76789885,r5
bdap.d [r13+],r5
move.d [r3],r9
dumpr3 ; 55aa77ff
quit

View File

@ -0,0 +1,29 @@
# mach: crisv0 crisv3 crisv8 crisv10
# output: ccff2244\n88ccee19\n55aa77ff\n19cc\n0\n
.include "testutils.inc"
.data
x:
.dword 0x55aa77ff
.dword 0xccff2244
.dword 0x88ccee19
.dword 0
start
moveq -1,r0
move.d x+4,r5
move.d [r5+0],r3
test_move_cc 1 0 0 0
dumpr3 ; ccff2244
move.d [r5=r5+4],r3
test_move_cc 1 0 0 0
dumpr3 ; 88ccee19
move.d [r5=r5-8],r3
test_move_cc 0 0 0 0
dumpr3 ; 55aa77ff
movu.w [r5+7],r3
test_move_cc 0 0 0 0
dumpr3 ; 19cc
move.d [r5+12],r3
test_move_cc 0 1 0 0
dumpr3 ; 0
quit

View File

@ -0,0 +1,30 @@
# mach: crisv3 crisv8 crisv10
# output: aaeebb11\nde378218\n
# Test that the special case "X [pc+I],Y" works, where I byte-sized.
.include "testutils.inc"
start
x:
; FIXME: Gas bugs are making this a bit harder than necessary.
; move.d [pc+y-(.+2)],r3
move.d [pc+8],r3
yy:
jump zz
y:
.dword 0xaaeebb11
y2:
.dword 0xde378218
zz:
dumpr3
jump z
quit
; Check a negative offset.
.space 50
z:
move.d [pc+y2-(.+2)],r3
dumpr3
quit

View File

@ -0,0 +1,56 @@
# mach: crisv0 crisv3 crisv8 crisv10
# output: 4455aa77\n4455aa77\nee19ccff\nff22\n4455aa77\nff224455\n55aa77ff\n
.include "testutils.inc"
.data
x:
.dword 0x55aa77ff
.dword 0xccff2244
.dword 0x88ccee19
start
moveq -1,r0
move.d x-32768,r5
move.d 32769,r6
move.d [r5+r6.b],r3
test_cc 0 0 0 0
dumpr3 ; 4455aa77
addu.w 32771,r5
moveq -1,r8
move.d [r11=r5+r8.w],r3
test_cc 0 0 0 0
dumpr3 ; 4455aa77
moveq 5,r10
move.d [r11+r10.b],r3
test_cc 1 0 0 0
dumpr3 ; ee19ccff
subq 1,r5
move.d r5,r8
subq 1,r8
moveq 1,r9
movu.w [r12=r8+r9.d],r3
test_cc 0 0 0 0
dumpr3 ; ff22
moveq -2,r11
move.d [r13=r12+r11.w],r3
test_cc 0 0 0 0
dumpr3 ; 4455aa77
subq 18,r13
moveq 5,r9
move.d [r13+r9.d],r3
test_cc 1 0 0 0
dumpr3 ; ff224455
move.d r5,r7
add.d 76789886,r7
move.d -76789888/4,r12
move.d [r7+r12.d],r3
test_cc 0 0 0 0
dumpr3 ; 55aa77ff
quit

View File

@ -0,0 +1,101 @@
# 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
dumpr3 ; 2
moveq 2,r3
bound.d 0xffffffff,r3
test_move_cc 0 0 0 0
dumpr3 ; 2
move.d 0xffff,r3
bound.d 0xffff,r3
test_move_cc 0 0 0 0
dumpr3 ; ffff
moveq -1,r3
bound.d 0xffffffff,r3
test_move_cc 1 0 0 0
dumpr3 ; ffffffff
move.d 0x78134452,r3
bound.d 0x5432f789,r3
test_move_cc 0 0 0 0
dumpr3 ; 5432f789
moveq -1,r3
bound.w 2,r3
test_move_cc 0 0 0 0
dumpr3 ; 2
moveq -1,r3
bound.w 0xffff,r3
test_move_cc 0 0 0 0
dumpr3 ; ffff
moveq 2,r3
bound.w 0xffff,r3
test_move_cc 0 0 0 0
dumpr3 ; 2
move.d 0xffff,r3
bound.w 0xffff,r3
test_move_cc 0 0 0 0
dumpr3 ; ffff
move.d 0xfedaffff,r3
bound.w 0xffff,r3
test_move_cc 0 0 0 0
dumpr3 ; ffff
move.d 0x78134452,r3
bound.w 0xf789,r3
test_move_cc 0 0 0 0
dumpr3 ; f789
moveq -1,r3
bound.b 2,r3
test_move_cc 0 0 0 0
dumpr3 ; 2
moveq 2,r3
bound.b 0xff,r3
test_move_cc 0 0 0 0
dumpr3 ; 2
moveq -1,r3
bound.b 0xff,r3
test_move_cc 0 0 0 0
dumpr3 ; ff
move.d 0xff,r3
bound.b 0xff,r3
test_move_cc 0 0 0 0
dumpr3 ; ff
move.d 0xfeda49ff,r3
bound.b 0xff,r3
test_move_cc 0 0 0 0
dumpr3 ; ff
move.d 0x78134452,r3
bound.b 0x89,r3
test_move_cc 0 0 0 0
dumpr3 ; 89
bound.w 0,r3
test_move_cc 0 1 0 0
dumpr3 ; 0
move.d 0xffff,r3
bound.b -1,r3
test_move_cc 0 0 0 0
dumpr3 ; ff
quit

View File

@ -0,0 +1,105 @@
# mach: crisv0 crisv3 crisv8 crisv10
# output: 2\n2\nffff\nffffffff\n5432f789\n2\nffff\n2\nffff\nffff\nf789\n2\n2\nff\nff\nff\n89\n0\n
.include "testutils.inc"
.data
x:
.dword 2,-1,0xffff,-1,0x5432f789
.word 2,0xffff,0xf789
.byte 2,0xff,0x89,0
start
move.d x,r5
moveq -1,r3
moveq 2,r4
bound.d [r5+],r3
test_move_cc 0 0 0 0
dumpr3 ; 2
moveq 2,r3
bound.d [r5],r3
test_move_cc 0 0 0 0
addq 4,r5
dumpr3 ; 2
move.d 0xffff,r3
bound.d [r5+],r3
test_move_cc 0 0 0 0
dumpr3 ; ffff
moveq -1,r3
bound.d [r5+],r3
test_move_cc 1 0 0 0
dumpr3 ; ffffffff
move.d 0x78134452,r3
bound.d [r5+],r3
test_move_cc 0 0 0 0
dumpr3 ; 5432f789
moveq -1,r3
bound.w [r5+],r3
test_move_cc 0 0 0 0
dumpr3 ; 2
moveq -1,r3
bound.w [r5],r3
test_move_cc 0 0 0 0
dumpr3 ; ffff
moveq 2,r3
bound.w [r5],r3
test_move_cc 0 0 0 0
dumpr3 ; 2
move.d 0xffff,r3
bound.w [r5],r3
test_move_cc 0 0 0 0
dumpr3 ; ffff
move.d 0xfedaffff,r3
bound.w [r5+],r3
test_move_cc 0 0 0 0
dumpr3 ; ffff
move.d 0x78134452,r3
bound.w [r5+],r3
test_move_cc 0 0 0 0
dumpr3 ; f789
moveq -1,r3
bound.b [r5+],r3
test_move_cc 0 0 0 0
dumpr3 ; 2
moveq 2,r3
bound.b [r5],r3
test_move_cc 0 0 0 0
dumpr3 ; 2
moveq -1,r3
bound.b [r5],r3
test_move_cc 0 0 0 0
dumpr3 ; ff
move.d 0xff,r3
bound.b [r5],r3
test_move_cc 0 0 0 0
dumpr3 ; ff
move.d 0xfeda49ff,r3
bound.b [r5+],r3
test_move_cc 0 0 0 0
dumpr3 ; ff
move.d 0x78134452,r3
bound.b [r5+],r3
test_move_cc 0 0 0 0
dumpr3 ; 89
bound.b [r5],r3
test_move_cc 0 1 0 0
dumpr3 ; 0
quit

View File

@ -0,0 +1,15 @@
# mach: crisv32
# xerror:
# output: program stopped with signal 4.\n
.include "testutils.inc"
; Check that bound with a memory operand is invalid.
start
move.d 0f,r5
move.d r5,r3
.byte 0xd5,0x39 ; bound.d [r5],r3 -- we can't assemble it.
pass
0:
.dword 0b

View File

@ -0,0 +1,125 @@
# 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
dumpr3 ; 2
moveq 2,r3
moveq -1,r4
bound.d r4,r3
test_move_cc 0 0 0 0
dumpr3 ; 2
move.d 0xffff,r4
move.d r4,r3
bound.d r4,r3
test_move_cc 0 0 0 0
dumpr3 ; ffff
moveq -1,r4
move.d r4,r3
bound.d r4,r3
test_move_cc 0 0 0 0
dumpr3 ; ffffffff
move.d 0x5432f789,r4
move.d 0x78134452,r3
bound.d r4,r3
test_move_cc 0 0 0 0
dumpr3 ; 5432f789
moveq -1,r3
moveq 2,r4
bound.w r4,r3
test_move_cc 0 0 0 0
dumpr3 ; 2
moveq 2,r3
moveq -1,r4
bound.w r4,r3
test_move_cc 0 0 0 0
dumpr3 ; 2
moveq -1,r3
bound.w r3,r3
test_move_cc 0 0 0 0
dumpr3 ; ffff
move.d 0xffff,r4
move.d r4,r3
bound.w r4,r3
test_move_cc 0 0 0 0
dumpr3 ; ffff
move.d 0xfedaffff,r4
move.d r4,r3
bound.w r4,r3
test_move_cc 0 0 0 0
dumpr3 ; ffff
move.d 0x5432f789,r4
move.d 0x78134452,r3
bound.w r4,r3
test_move_cc 0 0 0 0
dumpr3 ; f789
moveq -1,r3
moveq 2,r4
bound.b r4,r3
test_move_cc 0 0 0 0
dumpr3 ; 2
moveq 2,r3
moveq -1,r4
bound.b r4,r3
test_move_cc 0 0 0 0
dumpr3 ; 2
move.d 0xff,r4
move.d r4,r3
bound.b r4,r3
test_move_cc 0 0 0 0
dumpr3 ; ff
move.d 0xfeda49ff,r4
move.d r4,r3
bound.b r4,r3
test_move_cc 0 0 0 0
dumpr3 ; ff
move.d 0x5432f789,r4
move.d 0x78134452,r3
bound.b r4,r3
test_move_cc 0 0 0 0
dumpr3 ; 89
move.d 0xfeda4956,r3
move.d 0xfeda4953,r4
bound.d r4,r3
test_move_cc 1 0 0 0
dumpr3 ; feda4953
move.d 0xfeda4962,r3
move.d 0xfeda4963,r4
bound.d r4,r3
test_move_cc 1 0 0 0
dumpr3 ; feda4962
move.d 0xfeda4956,r3
move.d 0,r4
bound.d r4,r3
test_move_cc 0 1 0 0
dumpr3 ; 0
move.d 0xfeda4956,r4
move.d 0,r3
bound.d r4,r3
test_move_cc 0 1 0 0
dumpr3 ; 0
quit

View File

@ -0,0 +1,15 @@
# mach: crisv3 crisv8 crisv10 crisv32
# sim: --trace-core=on
# ld: --section-start=.text=0
# output: read-2 exec:0x00000002 -> 0x05b0\nread-2 exec:0x00000004 -> 0xe93f\n
; First test: Must exit gracefully.
.include "testutils.inc"
; This first insn isn't executed (it's a filler); it would fail
; ungracefully if executed.
startnostack
setf
quit

View File

@ -0,0 +1,87 @@
# mach: crisv0 crisv3 crisv8 crisv10 crisv32
# output: 1111\n
.include "testutils.inc"
start
clearf nzvc
moveq -1,r3
.if ..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
dumpr3
quit

View File

@ -0,0 +1,79 @@
# mach: crisv10
# output: ff\nff\n0\n0\n80\n40\n20\n10\n8\n4\n2\n1\n80\n40\n20\n10\n8\n4\n2\n1\n42\n
; Check that flag settings affect ccr and dccr and vice versa.
.include "testutils.inc"
start
clear.d r3
setf mbixnzvc
move ccr,r3
dumpr3
clear.d r3
setf mbixnzvc
move dccr,r3
dumpr3
clear.d r3
clearf mbixnzvc
move ccr,r3
dumpr3
clear.d r3
clearf mbixnzvc
move dccr,r3
dumpr3
.macro testfr BIT REG
clear.d r3
clearf mbixnzvc
setf \BIT
move \REG,r3
dumpr3
.endm
testfr m ccr
testfr b ccr
testfr i ccr
testfr x ccr
testfr n ccr
testfr z ccr
testfr v ccr
testfr c ccr
testfr m dccr
testfr b dccr
testfr i dccr
testfr x dccr
testfr n dccr
testfr z dccr
testfr v dccr
testfr c dccr
; Check only the nzvc bits; do the other bits in special tests as they're
; implemented.
.macro test_get_cc N Z V C
clearf znvc
move ((\N << 3)|(\Z << 2)|(\V << 1)|\C),ccr
test_cc \N \Z \V \C
setf znvc
move ((\N << 3)|(\Z << 2)|(\V << 1)|\C),dccr
test_cc \N \Z \V \C
move.d ((\N << 3)|(\Z << 2)|(\V << 1)|\C),r4
setf znvc
move r4,ccr
test_cc \N \Z \V \C
clearf znvc
move r4,dccr
test_cc \N \Z \V \C
.endm
test_get_cc 1 0 0 0
test_get_cc 0 1 0 0
test_get_cc 0 0 1 0
test_get_cc 0 0 0 1
move.d 0x42,r3
dumpr3
quit

View File

@ -0,0 +1,73 @@
# mach: crisv32
# output: bf\n0\n80\n20\n10\n8\n4\n2\n1\n40\nfade040\n3ade0040\nfade040\n42\n
; Check flag settings.
.include "testutils.inc"
start
clear.d r3
setf pixnzvc ; Setting U(ser mode) would restrict tests of other flags.
move ccs,r3
dumpr3
clear.d r3
clearf puixnzvc
move ccs,r3
dumpr3
.macro testf BIT
clear.d r3
clearf puixnzvc
setf \BIT
move ccs,r3
dumpr3
.endm
testf p
testf i
testf x
testf n
testf z
testf v
testf c
testf u ; Can't test i-flag or clear u after this point.
.macro test_get_cc N Z V C
clearf znvc
move ((\N << 3)|(\Z << 2)|(\V << 1)|\C),ccs
test_cc \N \Z \V \C
setf znvc
move ((\N << 3)|(\Z << 2)|(\V << 1)|\C),ccs
test_cc \N \Z \V \C
move.d ((\N << 3)|(\Z << 2)|(\V << 1)|\C),r4
setf znvc
move r4,ccs
test_cc \N \Z \V \C
clearf znvc
move r4,ccs
test_cc \N \Z \V \C
.endm
test_get_cc 1 0 0 0
test_get_cc 0 1 0 0
test_get_cc 0 0 1 0
test_get_cc 0 0 0 1
; Test that the U bit sticks.
move 0x0fade000,ccs
move ccs,r3
dumpr3
; Check that the M and Q bits can't be set in user mode.
move 0xfade0000,ccs
move ccs,r3
dumpr3
move 0x0fade000,ccs
move ccs,r3
dumpr3
move.d 0x42,r3
dumpr3
quit

View File

@ -0,0 +1,12 @@
# mach: crisv10
# output: ef\n
; Check that "clearf x" doesn't trivially fail.
.include "testutils.inc"
start
setf mbixnzvc
clearf x ; Actually, x would be cleared by almost-all other insns.
move dccr,r3
dumpr3
quit

View File

@ -0,0 +1,12 @@
# mach: crisv32
# output: ef\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
dumpr3
quit

View File

@ -0,0 +1,36 @@
# 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 == ..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
dumpr3
quit
y:
.dword 1b

View File

@ -0,0 +1,86 @@
# 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
dumpr3 ; ffffffff
moveq 2,r3
cmp.d 1,r3
test_cc 0 0 0 0
dumpr3 ; 2
move.d 0xffff,r3
cmp.d -0xffff,r3
test_cc 0 0 0 1
dumpr3 ; ffff
moveq -1,r3
cmp.d 1,r3
test_cc 1 0 0 0
dumpr3 ; ffffffff
move.d 0x78134452,r3
cmp.d -0x5432f789,r3
test_cc 1 0 1 1
dumpr3 ; 78134452
moveq -1,r3
cmp.w -2,r3
test_cc 0 0 0 0
dumpr3 ; ffffffff
moveq 2,r3
cmp.w 1,r3
test_cc 0 0 0 0
dumpr3 ; 2
move.d 0xffff,r3
cmp.w 1,r3
test_cc 1 0 0 0
dumpr3 ; ffff
move.d 0xfedaffff,r3
cmp.w 1,r3
test_cc 1 0 0 0
dumpr3 ; fedaffff
move.d 0x78134452,r3
cmp.w 0x877,r3
test_cc 0 0 0 0
dumpr3 ; 78134452
moveq -1,r3
cmp.b -2,r3
test_cc 0 0 0 0
dumpr3 ; ffffffff
moveq 2,r3
cmp.b 1,r3
test_cc 0 0 0 0
dumpr3 ; 2
move.d 0xff,r3
cmp.b 1,r3
test_cc 1 0 0 0
dumpr3 ; ff
move.d 0xfeda49ff,r3
cmp.b 1,r3
test_cc 1 0 0 0
dumpr3 ; feda49ff
move.d 0x78134452,r3
cmp.b 0x77,r3
test_cc 1 0 0 1
dumpr3 ; 78134452
move.d 0x85649282,r3
cmp.b 0x82,r3
test_cc 0 1 0 0
dumpr3 ; 85649282
quit

View File

@ -0,0 +1,96 @@
# 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
dumpr3 ; ffffffff
moveq 2,r3
cmp.d [r5],r3
test_cc 0 0 0 0
addq 4,r5
dumpr3 ; 2
move.d 0xffff,r3
cmp.d [r5+],r3
test_cc 0 0 0 1
dumpr3 ; ffff
moveq -1,r3
cmp.d [r5+],r3
test_cc 1 0 0 0
dumpr3 ; ffffffff
move.d 0x78134452,r3
cmp.d [r5+],r3
test_cc 1 0 1 1
dumpr3 ; 78134452
moveq -1,r3
cmp.w [r5+],r3
test_cc 0 0 0 0
dumpr3 ; ffffffff
moveq 2,r3
cmp.w [r5+],r3
test_cc 0 0 0 0
dumpr3 ; 2
move.d 0xffff,r3
cmp.w [r5],r3
test_cc 1 0 0 0
dumpr3 ; ffff
move.d 0xfedaffff,r3
cmp.w [r5+],r3
test_cc 1 0 0 0
dumpr3 ; fedaffff
move.d 0x78134452,r3
cmp.w [r5+],r3
test_cc 0 0 0 0
dumpr3 ; 78134452
moveq -1,r3
cmp.b [r5],r3
test_cc 0 0 0 0
addq 1,r5
dumpr3 ; ffffffff
moveq 2,r3
cmp.b [r5],r3
test_cc 0 0 0 0
dumpr3 ; 2
move.d 0xff,r3
cmp.b [r5],r3
test_cc 1 0 0 0
dumpr3 ; ff
move.d 0xfeda49ff,r3
cmp.b [r5+],r3
test_cc 1 0 0 0
dumpr3 ; feda49ff
move.d 0x78134452,r3
cmp.b [r5+],r3
test_cc 1 0 0 1
dumpr3 ; 78134452
move.d 0x85649222,r3
cmp.b [r5],r3
test_cc 0 1 0 0
dumpr3 ; 85649222
quit

View File

@ -0,0 +1,75 @@
# 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
dumpr3 ; 1
cmpq -1,r3
test_cc 0 0 0 1
dumpr3 ; 1
cmpq 31,r3
test_cc 1 0 0 1
dumpr3 ; 1
moveq 31,r3
cmpq 31,r3
test_cc 0 1 0 0
dumpr3 ; 1f
cmpq -31,r3
test_cc 0 0 0 1
dumpr3 ; 1f
movs.b -31,r3
cmpq -31,r3
test_cc 0 1 0 0
dumpr3 ; ffffffe1
cmpq -32,r3
test_cc 0 0 0 0
dumpr3 ; ffffffe1
movs.b -32,r3
cmpq -32,r3
test_cc 0 1 0 0
dumpr3 ; ffffffe0
moveq 0,r3
cmpq 1,r3
test_cc 1 0 0 1
dumpr3 ; 0
cmpq -32,r3
test_cc 0 0 0 1
dumpr3 ; 0
moveq -1,r3
cmpq 1,r3
test_cc 1 0 0 0
dumpr3 ; ffffffff
cmpq -1,r3
test_cc 0 1 0 0
dumpr3 ; ffffffff
move.d 0x10000,r3
cmpq 1,r3
test_cc 0 0 0 0
dumpr3 ; 10000
move.d 0x100,r3
cmpq 1,r3
test_cc 0 0 0 0
dumpr3 ; 100
move.d 0x5678900,r3
cmpq 7,r3
test_cc 0 0 0 0
dumpr3 ; 5678900
quit

View File

@ -0,0 +1,102 @@
# 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
dumpr3 ; ffffffff
moveq 2,r3
moveq 1,r4
cmp.d r4,r3
test_cc 0 0 0 0
dumpr3 ; 2
move.d 0xffff,r3
move.d -0xffff,r4
cmp.d r4,r3
test_cc 0 0 0 1
dumpr3 ; ffff
moveq 1,r4
moveq -1,r3
cmp.d r4,r3
test_cc 1 0 0 0
dumpr3 ; ffffffff
move.d -0x5432f789,r4
move.d 0x78134452,r3
cmp.d r4,r3
test_cc 1 0 1 1
dumpr3 ; 78134452
moveq -1,r3
moveq -2,r4
cmp.w r4,r3
test_cc 0 0 0 0
dumpr3 ; ffffffff
moveq 2,r3
moveq 1,r4
cmp.w r4,r3
test_cc 0 0 0 0
dumpr3 ; 2
move.d 0xffff,r3
move.d -0xffff,r4
cmp.w r4,r3
test_cc 1 0 0 0
dumpr3 ; ffff
move.d 0xfedaffff,r3
move.d -0xfedaffff,r4
cmp.w r4,r3
test_cc 1 0 0 0
dumpr3 ; fedaffff
move.d -0x5432f789,r4
move.d 0x78134452,r3
cmp.w r4,r3
test_cc 0 0 0 0
dumpr3 ; 78134452
moveq -1,r3
moveq -2,r4
cmp.b r4,r3
test_cc 0 0 0 0
dumpr3 ; ffffffff
moveq 2,r3
moveq 1,r4
cmp.b r4,r3
test_cc 0 0 0 0
dumpr3 ; 2
move.d -0xff,r4
move.d 0xff,r3
cmp.b r4,r3
test_cc 1 0 0 0
dumpr3 ; ff
move.d -0xfeda49ff,r4
move.d 0xfeda49ff,r3
cmp.b r4,r3
test_cc 1 0 0 0
dumpr3 ; feda49ff
move.d -0x5432f789,r4
move.d 0x78134452,r3
cmp.b r4,r3
test_cc 1 0 0 1
dumpr3 ; 78134452
move.d 0x85649222,r3
move.d 0x77445622,r4
cmp.b r4,r3
test_cc 0 1 0 0
dumpr3 ; 85649222
quit

View File

@ -0,0 +1,92 @@
# 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
dumpr3 ; 2
moveq 2,r3
cmps.w 0xffff,r3
test_cc 0 0 0 1
dumpr3 ; 2
moveq 2,r3
cmpu.b 0xff,r3
test_cc 1 0 0 1
dumpr3 ; 2
moveq 2,r3
move.d 0xffffffff,r4
cmpu.w -1,r3
test_cc 1 0 0 1
dumpr3 ; 2
move.d 0xffff,r3
cmpu.b -1,r3
test_cc 0 0 0 0
dumpr3 ; ffff
move.d 0xffff,r3
cmpu.w -1,r3
test_cc 0 1 0 0
dumpr3 ; ffff
move.d 0xffff,r3
cmps.b 0xff,r3
test_cc 0 0 0 1
dumpr3 ; ffff
move.d 0xffff,r3
cmps.w 0xffff,r3
test_cc 0 0 0 1
dumpr3 ; ffff
moveq -1,r3
cmps.b 0xff,r3
test_cc 0 1 0 0
dumpr3 ; ffffffff
moveq -1,r3
cmps.w 0xff,r3
test_cc 1 0 0 0
dumpr3 ; ffffffff
moveq -1,r3
cmps.w 0xffff,r3
test_cc 0 1 0 0
dumpr3 ; ffffffff
move.d 0x78134452,r3
cmpu.b 0x89,r3
test_cc 0 0 0 0
dumpr3 ; 78134452
move.d 0x78134452,r3
cmps.b 0x89,r3
test_cc 0 0 0 1
dumpr3 ; 78134452
move.d 0x78134452,r3
cmpu.w 0xf789,r3
test_cc 0 0 0 0
dumpr3 ; 78134452
move.d 0x78134452,r3
cmps.w 0xf789,r3
test_cc 0 0 0 1
dumpr3 ; 78134452
move.d 0x4452,r3
cmps.w 0x8002,r3
test_cc 0 0 0 1
dumpr3 ; 4452
move.d 0x80000032,r3
cmpu.w 0x764,r3
test_cc 0 0 1 0
dumpr3 ; 80000032
quit

View File

@ -0,0 +1,106 @@
# 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
dumpr3 ; 2
moveq 2,r3
cmps.w [r5+],r3
test_cc 0 0 0 1
dumpr3 ; 2
moveq 2,r3
subq 3,r5
cmpu.b [r5+],r3
test_cc 1 0 0 1
dumpr3 ; 2
moveq 2,r3
cmpu.w [r5+],r3
test_cc 1 0 0 1
subq 3,r5
dumpr3 ; 2
move.d 0xffff,r3
cmpu.b [r5],r3
test_cc 0 0 0 0
dumpr3 ; ffff
move.d 0xffff,r3
cmpu.w [r5],r3
test_cc 0 1 0 0
dumpr3 ; ffff
move.d 0xffff,r3
cmps.b [r5],r3
test_cc 0 0 0 1
dumpr3 ; ffff
move.d 0xffff,r3
cmps.w [r5],r3
test_cc 0 0 0 1
dumpr3 ; ffff
moveq -1,r3
cmps.b [r5],r3
test_cc 0 1 0 0
addq 3,r5
dumpr3 ; ffffffff
moveq -1,r3
cmps.w [r5+],r3
test_cc 1 0 0 0
dumpr3 ; ffffffff
moveq -1,r3
cmps.w [r5+],r3
test_cc 0 1 0 0
dumpr3 ; ffffffff
move.d 0x78134452,r3
cmpu.b [r5],r3
test_cc 0 0 0 0
dumpr3 ; 78134452
move.d 0x78134452,r3
cmps.b [r5+],r3
test_cc 0 0 0 1
dumpr3 ; 78134452
move.d 0x78134452,r3
cmpu.w [r5],r3
test_cc 0 0 0 0
dumpr3 ; 78134452
move.d 0x78134452,r3
cmps.w [r5+],r3
test_cc 0 0 0 1
dumpr3 ; 78134452
move.d 0x4452,r3
cmps.w [r5+],r3
test_cc 0 0 0 1
dumpr3 ; 4452
move.d 0x80000032,r3
cmpu.w [r5+],r3
test_cc 0 0 1 0
dumpr3 ; 80000032
quit

View File

@ -0,0 +1,62 @@
# mach: crisv3 crisv8 crisv10 crisv32
# output: 31\n
; Check that flag settings in the delay slot for a conditional branch do
; not affect the branch.
.include "testutils.inc"
start
moveq 1,r3
moveq 0,r4
; 8-bit branches.
move.d r4,r4
bne 0f
move.d r3,r3
bne 1f
move.d r4,r4
nop
0:
quit
1:
move.d r3,r3
beq 0b
move.d r4,r4
beq 4f
move.d r3,r3
nop
quit
4:
jump 2f
nop
.space 1000
; 16-bit branches
2:
move.d r4,r4
bne 0b
move.d r3,r3
bne 3f
move.d r4,r4
nop
quit
.space 1000
3:
move.d r3,r3
beq 0b
move.d r4,r4
beq 4f
move.d r3,r3
nop
quit
.space 1000
4:
move.d 0x31,r3
dumpr3
quit

View File

@ -0,0 +1,41 @@
# mach: crisv0 crisv3 crisv8 crisv10
# output: 4455aa77\nee19ccff\nb232765a\nff22\n5a88ccee\n
.include "testutils.inc"
.data
x:
.dword 0x55aa77ff
.dword 0xccff2244
.dword 0x88ccee19
.dword 0xb232765a
y:
.dword x+12
.dword x+5
.dword x+9
start
moveq -1,r0
moveq -1,r2
move.d [x+1],r3
test_cc 0 0 0 0
dumpr3 ; 4455aa77
move.d [x+6],r3
test_cc 1 0 0 0
dumpr3 ; ee19ccff
move.d y,r8
move.d [[r8+]],r3
test_cc 1 0 0 0
dumpr3 ; b232765a
movu.w [[r8]],r3
test_cc 0 0 0 0
dumpr3 ; ff22
addq 4,r8
move.d [[r8]],r3
test_cc 0 0 0 0
dumpr3 ; 5a88ccee
quit

View File

@ -0,0 +1,42 @@
# 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
dumpr3 ; fffffffc
moveq 2,r3
moveq -1,r4
dstep r4,r3
test_move_cc 0 0 0 0
dumpr3 ; 4
move.d 0xffff,r4
move.d r4,r3
dstep r4,r3
test_move_cc 0 0 0 0
dumpr3 ; ffff
moveq -1,r4
move.d r4,r3
dstep r4,r3
test_move_cc 1 0 0 0
dumpr3 ; fffffffe
move.d 0x5432f789,r4
move.d 0x78134452,r3
dstep r4,r3
test_move_cc 0 0 0 0
dumpr3 ; 9bf3911b
move.d 0xffff,r3
move.d 0x1fffe,r4
dstep r4,r3
test_move_cc 0 1 0 0
dumpr3 ; 0
quit

View File

@ -0,0 +1,9 @@
# mach: crisv32
# xerror:
# output: FIDXD isn't implemented\nprogram stopped with signal 5.\n
.include "testutils.inc"
start
fidxd [r3]
quit

View File

@ -0,0 +1,9 @@
# mach: crisv32
# xerror:
# output: FIDXI isn't implemented\nprogram stopped with signal 5.\n
.include "testutils.inc"
start
fidxi [r5]
quit

View File

@ -0,0 +1,9 @@
# mach: crisv32
# xerror:
# output: FTAGD isn't implemented\nprogram stopped with signal 5.\n
.include "testutils.inc"
start
ftagd [r11]
quit

View File

@ -0,0 +1,9 @@
# mach: crisv32
# xerror:
# output: FTAGI isn't implemented\nprogram stopped with signal 5.\n
.include "testutils.inc"
start
ftagi [r8]
quit

View File

@ -0,0 +1,9 @@
# mach: crisv32
# xerror:
# output: HALT isn't implemented\nprogram stopped with signal 5.\n
.include "testutils.inc"
start
halt
quit

View File

@ -0,0 +1,8 @@
# mach: crisv32
# sim: --cris-900000xx --memory-region 0x90000000,0x10
# xerror:
# output: Seeing --cris-900000xx with memory defined there\n
; Check that I/O region overlap is detected.
.include "nopv32t.ms"

View File

@ -0,0 +1,18 @@
# mach: crisv32
# sim: --cris-900000xx
# xerror:
# output: b1e\n
; Check correct "fail" exit.
.include "testutils.inc"
start
move.d 0xb1e,$r3
dumpr3
move.d 0x90000008,$acr
move.d $acr,[$acr]
move.d 0xbadc0de,$r3
dumpr3
0:
ba 0b
nop

View File

@ -0,0 +1,17 @@
# mach: crisv32
# sim: --cris-900000xx
# output: ce11d0c\n
; Check correct "pass" exit.
.include "testutils.inc"
start
move.d 0x0ce11d0c,$r3
dumpr3
move.d 0x90000004,$acr
move.d $acr,[$acr]
move.d 0xbadc0de,$r3
dumpr3
0:
ba 0b
nop

View File

@ -0,0 +1,18 @@
# mach: crisv32
# xerror:
# output: b1e\n
; Check correct "fail" exit.
.include "testutils.inc"
start
move.d 0xb1e,$r3
dumpr3
moveq 1,$r9
moveq 2,$r10
break 13
move.d 0xbadc0de,$r3
dumpr3
0:
ba 0b
nop

View File

@ -0,0 +1,17 @@
# mach: crisv32
# output: ce11d0c\n
; Check correct "pass" exit.
.include "testutils.inc"
start
move.d 0x0ce11d0c,$r3
dumpr3
moveq 1,$r9
moveq 0,$r10
break 13
move.d 0xbadc0de,$r3
dumpr3
0:
ba 0b
nop

View File

@ -0,0 +1,22 @@
# mach: crisv32
# ld: --section-start=.text=0
# sim: --cris-900000xx
# xerror:
# output: b1e\n
# output: core: 4 byte write to unmapped address 0x90000008 at 0x16\n
# output: program stopped with signal 11.\n
; Check that invalid access to the simulator area is recognized.
; "FAIL" area.
.include "testutils.inc"
start
move.d 0xb1e,$r3
dumpr3
move.d 0x90000008,$acr
clear.d [$acr]
move.d 0xbadc0de,$r3
dumpr3
0:
ba 0b
nop

View File

@ -0,0 +1,22 @@
# mach: crisv32
# ld: --section-start=.text=0
# sim: --cris-900000xx
# xerror:
# output: ce11d0c\n
# output: core: 4 byte write to unmapped address 0x90000004 at 0x16\n
# output: program stopped with signal 11.\n
; Check that invalid access to the simulator area is recognized.
; "PASS" area.
.include "testutils.inc"
start
move.d 0x0ce11d0c,$r3
dumpr3
move.d 0x90000004,$acr
clear.d [$acr]
move.d 0xbadc0de,$r3
dumpr3
0:
ba 0b
nop

View File

@ -0,0 +1,21 @@
# mach: crisv32
# ld: --section-start=.text=0
# xerror:
# output: b1e\n
# output: core: 4 byte write to unmapped address 0x90000008 at 0x16\n
# output: program stopped with signal 11.\n
; Check invalid access valid with --cris-900000xx.
; "FAIL" area.
.include "testutils.inc"
start
move.d 0xb1e,$r3
dumpr3
move.d 0x90000008,$acr
move.d $acr,[$acr]
move.d 0xbadc0de,$r3
dumpr3
0:
ba 0b
nop

View File

@ -0,0 +1,21 @@
# mach: crisv32
# ld: --section-start=.text=0
# xerror:
# output: ce11d0c\n
# output: core: 4 byte write to unmapped address 0x90000004 at 0x16\n
# output: program stopped with signal 11.\n
; Check invalid access valid with --cris-900000xx.
; "PASS" area.
.include "testutils.inc"
start
move.d 0x0ce11d0c,$r3
dumpr3
move.d 0x90000004,$acr
move.d $acr,[$acr]
move.d 0xbadc0de,$r3
dumpr3
0:
ba 0b
nop

View File

@ -0,0 +1,85 @@
# 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 ..asm.arch.cris.v32
nop
.endif
0:
test_move_cc 1 1 1 1
move srp,r3
sub.d 0b,r3
dumpr3
move.d 1f,r0
setf nzvc
jsr r0
.if ..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
dumpr3
jsr 4f
.if ..asm.arch.cris.v32
nop
.endif
7:
nop
quit
8:
move srp,r3
sub.d 7b,r3
dumpr3
quit
4:
move srp,r3
sub.d 7b,r3
dumpr3
move.d 5f,r3
jump r3
.if ..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
dumpr3
clearf cznv
jsr 2b
.if ..asm.arch.cris.v32
nop
.endif
3:
quit
5:
move srp,r3
sub.d 7b,r3
dumpr3
jump 8b
.if ..asm.arch.cris.v32
nop
.endif
quit

View File

@ -0,0 +1,40 @@
# mach: crisv3 crisv8 crisv10
# output: 23\n
# Test that jsr [] records the correct return-address.
.include "testutils.inc"
start
x:
moveq 0,r3
jsr [z]
addq 1,r3
nop
nop
nop
nop
nop
move.d w,r2
jsr [r2]
addq 1,r3
nop
nop
nop
nop
nop
dumpr3 ; 23
quit
y:
ret
addq 1,r3
quit
v:
ret
addq 32,r3
quit
z:
.dword y
w:
.dword v

View File

@ -0,0 +1,21 @@
# mach: crisv3 crisv8 crisv10
# output: bed0bed1\n
# Test that jump indirect clears the "prefixed"
# bit.
.include "testutils.inc"
.data
w:
.dword x1
y:
.dword 0xbed0bed1
start
x:
move.d y,r3
jump [w]
x1:
move.d [r3],r3
dumpr3 ; bed0bed1
quit

View File

@ -0,0 +1,28 @@
# mach: crisv32
# output: 2222\n
# Test that jump Pd works.
.include "testutils.inc"
start
x:
setf zvnc
move 0f,srp
test_cc 1 1 1 1
jump srp
nop
quit
0:
test_cc 1 1 1 1
move 1f,mof
jump mof
nop
quit
.space 32768,0
quit
1:
move.d 0x2222,r3
dumpr3
quit

View File

@ -0,0 +1,78 @@
# 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
dumpr3 ; 0
lapcq 0f,r3
0:
sub.d .,r3
dumpr3 ; 0
lapc.d .,r3
sub.d .,r3
dumpr3 ; fffffffa
lapcq .,r3
sub.d .,r3
dumpr3 ; fffffffe
0:
.rept 16
nop
.endr
lapc.d 0b,r3
sub.d .,r3
dumpr3 ; 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:
dumpr3 ; 1e
0:
lapcq 0f,r3
sub.d 0b,r3
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
0:
dumpr3 ; 1e
clearf cn
setf zv
1:
lapcq .,r3
test_cc 0 1 1 0
sub.d 1b,r3
dumpr3 ; 0
quit

View File

@ -0,0 +1,217 @@
# 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
dumpr3 ; ffffffff
moveq 2,r3
lslq 1,r3
test_move_cc 0 0 0 0
dumpr3 ; 4
moveq -1,r3
lslq 31,r3
test_move_cc 1 0 0 0
dumpr3 ; 80000000
moveq -1,r3
lslq 15,r3
test_move_cc 1 0 0 0
dumpr3 ; ffff8000
move.d 0x5a67f19f,r3
lslq 12,r3
test_move_cc 0 0 0 0
dumpr3 ; 7f19f000
move.d 0xda67f19f,r3
move.d 31,r4
lsl.d r4,r3
test_move_cc 1 0 0 0
dumpr3 ; 80000000
move.d 0xda67f19f,r3
move.d 32,r4
lsl.d r4,r3
test_move_cc 0 1 0 0
dumpr3 ; 0
move.d 0xda67f19f,r3
move.d 33,r4
lsl.d r4,r3
test_move_cc 0 1 0 0
dumpr3 ; 0
move.d 0xda67f19f,r3
move.d 66,r4
lsl.d r4,r3
test_move_cc 0 0 0 0
dumpr3 ; 699fc67c
moveq -1,r3
moveq 0,r4
lsl.d r4,r3
test_move_cc 1 0 0 0
dumpr3 ; ffffffff
moveq 2,r3
moveq 1,r4
lsl.d r4,r3
test_move_cc 0 0 0 0
dumpr3 ; 4
moveq -1,r3
moveq 31,r4
lsl.d r4,r3
test_move_cc 1 0 0 0
dumpr3 ; 80000000
moveq -1,r3
moveq 15,r4
lsl.d r4,r3
test_move_cc 1 0 0 0
dumpr3 ; ffff8000
move.d 0x5a67f19f,r3
moveq 12,r4
lsl.d r4,r3
test_move_cc 0 0 0 0
dumpr3 ; 7f19f000
move.d 0xda67f19f,r3
move.d 31,r4
lsl.w r4,r3
test_move_cc 0 1 0 0
dumpr3 ; da670000
move.d 0xda67f19f,r3
move.d 32,r4
lsl.w r4,r3
test_move_cc 0 1 0 0
dumpr3 ; da670000
move.d 0xda67f19f,r3
move.d 33,r4
lsl.w r4,r3
test_move_cc 0 1 0 0
dumpr3 ; da670000
move.d 0xda67f19f,r3
move.d 66,r4
lsl.w r4,r3
test_move_cc 1 0 0 0
dumpr3 ; da67c67c
moveq -1,r3
moveq 0,r4
lsl.w r4,r3
test_move_cc 1 0 0 0
dumpr3 ; ffffffff
move.d 0xfffaffff,r3
moveq 1,r4
lsl.w r4,r3
test_move_cc 1 0 0 0
dumpr3 ; fffafffe
moveq 2,r3
moveq 1,r4
lsl.w r4,r3
test_move_cc 0 0 0 0
dumpr3 ; 4
moveq -1,r3
moveq 31,r4
lsl.w r4,r3
test_move_cc 0 1 0 0
dumpr3 ; ffff0000
moveq -1,r3
moveq 15,r4
lsl.w r4,r3
test_move_cc 1 0 0 0
dumpr3 ; ffff8000
move.d 0x5a67f19f,r3
moveq 12,r4
lsl.w r4,r3
test_move_cc 1 0 0 0
dumpr3 ; 5a67f000
move.d 0xda67f19f,r3
move.d 31,r4
lsl.b r4,r3
test_move_cc 0 1 0 0
dumpr3 ; da67f100
move.d 0xda67f19f,r3
move.d 32,r4
lsl.b r4,r3
test_move_cc 0 1 0 0
dumpr3 ; da67f100
move.d 0xda67f19f,r3
move.d 33,r4
lsl.b r4,r3
test_move_cc 0 1 0 0
dumpr3 ; da67f100
move.d 0xda67f19f,r3
move.d 66,r4
lsl.b r4,r3
test_move_cc 0 0 0 0
dumpr3 ; da67f17c
move.d 0xfff3faff,r3
moveq 0,r4
lsl.b r4,r3
test_move_cc 1 0 0 0
dumpr3 ; fff3faff
move.d 0xfff3faff,r3
moveq 1,r4
lsl.b r4,r3
test_move_cc 1 0 0 0
dumpr3 ; fff3fafe
moveq 2,r3
moveq 1,r4
lsl.b r4,r3
test_move_cc 0 0 0 0
dumpr3 ; 4
moveq -1,r3
moveq 31,r4
lsl.b r4,r3
test_move_cc 0 1 0 0
dumpr3 ; ffffff00
moveq -1,r3
moveq 15,r4
lsl.b r4,r3
test_move_cc 0 1 0 0
dumpr3 ; ffffff00
moveq -1,r3
moveq 7,r4
lsl.b r4,r3
test_move_cc 1 0 0 0
dumpr3 ; ffffff80
move.d 0x5a67f19f,r3
moveq 12,r4
lsl.b r4,r3
test_move_cc 0 1 0 0
dumpr3 ; 5a67f100
move.d 0x5a67f19f,r3
moveq 4,r4
lsl.b r4,r3
test_move_cc 1 0 0 0
dumpr3 ; 5a67f1f0
quit

View File

@ -0,0 +1,217 @@
# 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
dumpr3 ; ffffffff
moveq 2,r3
lsrq 1,r3
test_move_cc 0 0 0 0
dumpr3 ; 1
moveq -1,r3
lsrq 31,r3
test_move_cc 0 0 0 0
dumpr3 ; 1
moveq -1,r3
lsrq 15,r3
test_move_cc 0 0 0 0
dumpr3 ; 1ffff
move.d 0x5a67f19f,r3
lsrq 12,r3
test_move_cc 0 0 0 0
dumpr3 ; 5a67f
move.d 0xda67f19f,r3
move.d 31,r4
lsr.d r4,r3
test_move_cc 0 0 0 0
dumpr3 ; 1
move.d 0xda67f19f,r3
move.d 32,r4
lsr.d r4,r3
test_move_cc 0 1 0 0
dumpr3 ; 0
move.d 0xda67f19f,r3
move.d 33,r4
lsr.d r4,r3
test_move_cc 0 1 0 0
dumpr3 ; 0
move.d 0xda67f19f,r3
move.d 66,r4
lsr.d r4,r3
test_move_cc 0 0 0 0
dumpr3 ; 3699fc67
moveq -1,r3
moveq 0,r4
lsr.d r4,r3
test_move_cc 1 0 0 0
dumpr3 ; ffffffff
moveq 2,r3
moveq 1,r4
lsr.d r4,r3
test_move_cc 0 0 0 0
dumpr3 ; 1
moveq -1,r3
moveq 31,r4
lsr.d r4,r3
test_move_cc 0 0 0 0
dumpr3 ; 1
moveq -1,r3
moveq 15,r4
lsr.d r4,r3
test_move_cc 0 0 0 0
dumpr3 ; 1ffff
move.d 0x5a67f19f,r3
moveq 12,r4
lsr.d r4,r3
test_move_cc 0 0 0 0
dumpr3 ; 5a67f
move.d 0xda67f19f,r3
move.d 31,r4
lsr.w r4,r3
test_move_cc 0 1 0 0
dumpr3 ; da670000
move.d 0xda67f19f,r3
move.d 32,r4
lsr.w r4,r3
test_move_cc 0 1 0 0
dumpr3 ; da670000
move.d 0xda67f19f,r3
move.d 33,r4
lsr.w r4,r3
test_move_cc 0 1 0 0
dumpr3 ; da670000
move.d 0xda67f19f,r3
move.d 66,r4
lsr.w r4,r3
test_move_cc 0 0 0 0
dumpr3 ; da673c67
moveq -1,r3
moveq 0,r4
lsr.w r4,r3
test_move_cc 1 0 0 0
dumpr3 ; ffffffff
moveq -1,r3
moveq 1,r4
lsr.w r4,r3
test_move_cc 0 0 0 0
dumpr3 ; ffff7fff
moveq 2,r3
moveq 1,r4
lsr.w r4,r3
test_move_cc 0 0 0 0
dumpr3 ; 1
moveq -1,r3
moveq 31,r4
lsr.w r4,r3
test_move_cc 0 0 0 0
dumpr3 ; ffff0000
moveq -1,r3
moveq 15,r4
lsr.w r4,r3
test_move_cc 0 0 0 0
dumpr3 ; ffff0001
move.d 0x5a67f19f,r3
moveq 12,r4
lsr.w r4,r3
test_move_cc 0 0 0 0
dumpr3 ; 5a67000f
move.d 0xda67f19f,r3
move.d 31,r4
lsr.b r4,r3
test_move_cc 0 1 0 0
dumpr3 ; da67f100
move.d 0xda67f19f,r3
move.d 32,r4
lsr.b r4,r3
test_move_cc 0 1 0 0
dumpr3 ; da67f100
move.d 0xda67f19f,r3
move.d 33,r4
lsr.b r4,r3
test_move_cc 0 1 0 0
dumpr3 ; da67f100
move.d 0xda67f19f,r3
move.d 66,r4
lsr.b r4,r3
test_move_cc 0 0 0 0
dumpr3 ; da67f127
moveq -1,r3
moveq 0,r4
lsr.b r4,r3
test_move_cc 1 0 0 0
dumpr3 ; ffffffff
moveq -1,r3
moveq 1,r4
lsr.b r4,r3
test_move_cc 0 0 0 0
dumpr3 ; ffffff7f
moveq 2,r3
moveq 1,r4
lsr.b r4,r3
test_move_cc 0 0 0 0
dumpr3 ; 1
moveq -1,r3
moveq 31,r4
lsr.b r4,r3
test_move_cc 0 1 0 0
dumpr3 ; ffffff00
moveq -1,r3
moveq 15,r4
lsr.b r4,r3
test_move_cc 0 1 0 0
dumpr3 ; ffffff00
moveq -1,r3
moveq 7,r4
lsr.b r4,r3
test_move_cc 0 0 0 0
dumpr3 ; ffffff01
move.d 0x5a67f19f,r3
moveq 12,r4
lsr.b r4,r3
test_move_cc 0 1 0 0
dumpr3 ; 5a67f100
move.d 0x5a67f19f,r3
moveq 4,r4
lsr.b r4,r3
test_move_cc 0 0 0 0
dumpr3 ; 5a67f109
quit

View File

@ -0,0 +1,52 @@
# mach: crisv0 crisv3 crisv8 crisv10 crisv32
# output: 0\n20\n0\n1\n1\n1a\n1f\n10\n1e\n
.include "testutils.inc"
start
moveq -1,r3
lz r3,r3
test_move_cc 0 1 0 0
dumpr3 ; 0
moveq 0,r3
lz r3,r3
test_move_cc 0 0 0 0
dumpr3 ; 20
move.d 0x80000000,r4
lz r4,r3
test_move_cc 0 1 0 0
dumpr3 ; 0
move.d 0x40000000,r4
lz r4,r3
test_move_cc 0 0 0 0
dumpr3 ; 1
move.d 0x7fffffff,r4
lz r4,r3
test_move_cc 0 0 0 0
dumpr3 ; 1
move.d 42,r3
lz r3,r3
test_move_cc 0 0 0 0
dumpr3 ; 1a
moveq 1,r6
lz r6,r3
test_move_cc 0 0 0 0
dumpr3 ; 1f
move.d 0xffff,r3
lz r3,r3
test_move_cc 0 0 0 0
dumpr3 ; 10
moveq 2,r5
lz r5,r3
test_move_cc 0 0 0 0
dumpr3 ; 1e
quit

View File

@ -0,0 +1,49 @@
# 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
dumpr3 ; fffffffe
moveq 2,r3
move -1,srp
mcp srp,r3
test_cc 0 0 0 0
dumpr3 ; 1
move 0xffff,srp
move srp,r3
mcp srp,r3
test_cc 0 0 0 0
dumpr3 ; 1ffff
move -1,mof
move mof,r3
mcp mof,r3
test_cc 1 0 0 0
dumpr3 ; fffffffe
move 0x5432f789,mof
move.d 0x78134452,r3
mcp mof,r3
test_cc 1 0 1 0
dumpr3 ; cc463bdc
move 0x80000000,srp
mcp srp,r3
test_cc 0 0 1 0
dumpr3 ; 4c463bdc
move 0xb3b9c423,srp
mcp srp,r3
test_cc 0 1 0 0
dumpr3 ; 0
quit

View File

@ -0,0 +1,33 @@
# 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:
dumpr3
move.d 0xeeaabb42,r1
moveq 3,r9
cmpq 1,r9
bhi 0f
move r1,srp
fail
0:
move srp,r3
dumpr3
quit

View File

@ -0,0 +1,19 @@
# mach: crisv3 crisv8 crisv10
# xerror:
# output: General register * PC is not implemented.\nprogram stopped with signal 5.\n
# We deliberately match both "read from" and "write to" above.
.include "testutils.inc"
startnostack
moveq -1,r3
move.b 0x42,pc
dumpr3
move.w 0x4321,pc
dumpr3
move.d 0x76543210,pc
dumpr3
quit

View File

@ -0,0 +1,37 @@
# 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
dumpr3
moveq 0,r3
move.b 0x94,r3
test_move_cc 0 0 0 0
dumpr3
moveq -1,r3
move.w 0x4321,r3
test_move_cc 1 0 0 0
dumpr3
moveq 0,r3
move.w 0x9234,r3
test_move_cc 1 0 0 0
dumpr3
move.d 0x76543210,r3
test_move_cc 0 0 0 0
dumpr3
move.w 0,r3
test_move_cc 0 1 0 0
dumpr3
quit

View File

@ -0,0 +1,17 @@
#mach: crisv10
#output: ffffff42\n94\nffff4321\n9234\n76543210\n76540000\n
#output: Basic clock cycles, total @: 22\n
#output: Memory source stall cycles: 0\n
#output: Memory read-after-write stall cycles: 0\n
#output: Movem source stall cycles: 0\n
#output: Movem destination stall cycles: 0\n
#output: Movem address stall cycles: 0\n
#output: Multiplication source stall cycles: 0\n
#output: Jump source stall cycles: 0\n
#output: Branch misprediction stall cycles: 0\n
#output: Jump target stall cycles: 0\n
#sim: --cris-cycles=basic
.include "movecr.ms"
# This test-case is accidentally the same; gets the same cycle
# count as movecrt32.ms, but please keep them separate.

View File

@ -0,0 +1,14 @@
#mach: crisv32
#output: ffffff42\n94\nffff4321\n9234\n76543210\n76540000\n
#output: Basic clock cycles, total @: 22\n
#output: Memory source stall cycles: 0\n
#output: Memory read-after-write stall cycles: 0\n
#output: Movem source stall cycles: 0\n
#output: Movem destination stall cycles: 0\n
#output: Movem address stall cycles: 0\n
#output: Multiplication source stall cycles: 0\n
#output: Jump source stall cycles: 0\n
#output: Branch misprediction stall cycles: 0\n
#output: Jump target stall cycles: 0\n
#sim: --cris-cycles=basic
.include "movecr.ms"

View File

@ -0,0 +1,18 @@
#mach: crisv10
#output: Basic clock cycles, total @: 3\n
#output: Memory source stall cycles: 1\n
#output: Memory read-after-write stall cycles: 0\n
#output: Movem source stall cycles: 0\n
#output: Movem destination stall cycles: 0\n
#output: Movem address stall cycles: 0\n
#output: Multiplication source stall cycles: 0\n
#output: Jump source stall cycles: 0\n
#output: Branch misprediction stall cycles: 0\n
#output: Jump target stall cycles: 0\n
#sim: --cris-cycles=basic
.include "testutils.inc"
startnostack
nop
move.d 0xff004567,r5
break 15

View File

@ -0,0 +1,47 @@
# mach: crisv32
# output: fffffffe\n
# output: fffffffe\n
; Check basic integral-write semantics regarding flags.
.include "testutils.inc"
start
; A write that works. Check that flags are set correspondingly.
move.d d,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:
dumpr3 ; 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:
dumpr3 ; fffffffe
quit
.data
d:
.dword 42424242

View File

@ -0,0 +1,8 @@
# mach: crisv3 crisv8 crisv10
# xerror:
# output: General register write to PC is not implemented.\nprogram stopped with signal 5.\n
.include "testutils.inc"
start
move.d _start,r12
move.d [r12],pc

View File

@ -0,0 +1,79 @@
# 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
dumpr3
move.d mem2,r3
move.d [r3],r3
test_move_cc 0 0 0 0
dumpr3
move.d mem1,r2
move.d [r2+],r3
test_move_cc 0 0 0 0
dumpr3
move.w [r2+],r3
test_move_cc 0 0 0 0
dumpr3
move.b [r2+],r3
test_move_cc 0 0 0 0
dumpr3
move.d [r2+],r3
test_move_cc 0 0 0 0
dumpr3
movs.b [r2],r3
test_move_cc 1 0 0 0
dumpr3
movu.b [r2+],r3
test_move_cc 0 0 0 0
dumpr3
movu.w [r2],r3
test_move_cc 0 0 0 0
dumpr3
movs.w [r2+],r3
test_move_cc 1 0 0 0
dumpr3
move.d mem1,r13
movs.b [r13+],r3
test_move_cc 0 0 0 0
dumpr3
movu.b [r13],r3
test_move_cc 0 0 0 0
dumpr3
movs.w [r13+],r3
test_move_cc 0 0 0 0
dumpr3
movu.w [r13+],r3
test_move_cc 0 0 0 0
dumpr3
quit

View File

@ -0,0 +1,101 @@
# mach: crisv0 crisv3 crisv8 crisv10
# output: 15\nffff1234\n2\n7\nb\n16\nf\n2\nf\nffffffef\n7\nfffffff4\nf\nfffffff2\nd\n10\nfffffff2\n8\nfffffff4\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
dumpr3 ; 15
move.d [r4+],r3
dumpr3 ; ffff1234
move.d [r4+],r3
dumpr3 ; 2
move.d [r4+],r3
dumpr3 ; 7
move.d [r4+],r3
dumpr3 ; 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
dumpr3 ; 16
move.d r1,r3
dumpr3 ; f
move.d [r4+],r3
dumpr3 ; 2
moveq 10,r2
moveq -17,r0
clearf zc
setf vn
movem r1,[r4=r4-8]
test_cc 1 0 1 0
move.d [r4+],r3
dumpr3 ; f
move.d [r4+],r3
dumpr3 ; ffffffef
move.d [r4+],r3
dumpr3 ; 7
move.d y,r4
setf zc
clearf vn
movem [r4+],r3
test_cc 0 1 0 1
dumpr3 ; fffffff4
move.d r0,r3
dumpr3 ; f
move.d r1,r3
dumpr3 ; fffffff2
moveq -12,r1
move.d r2,r3
dumpr3 ; d
move.d [r4],r3
dumpr3 ; 10
setf zcvn
movem [r5=r4-8],r0
test_cc 1 1 1 1
move.d r0,r3
dumpr3 ; fffffff2
sub.d r5,r4
move.d r4,r3
dumpr3 ; 8
move.d r1,r3
dumpr3 ; fffffff4
quit

View File

@ -0,0 +1,97 @@
# 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
dumpr3 ; 15
move.d [r4+],r3
dumpr3 ; 7
move.d [r4+],r3
dumpr3 ; 2
move.d [r4+],r3
dumpr3 ; ffff1234
move.d [r4+],r3
dumpr3 ; 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
dumpr3 ; 16
move.d r1,r3
dumpr3 ; f
move.d [r4+],r3
dumpr3 ; 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
dumpr3 ; ffffffef
move.d [r4+],r3
dumpr3 ; f
move.d [r4+],r3
dumpr3 ; ffff1234
move.d y,r4
setf zc
clearf vn
movem [r4+],r3
test_cc 0 1 0 1
dumpr3 ; f
move.d r0,r3
dumpr3 ; fffffff4
move.d r1,r3
dumpr3 ; d
move.d r2,r3
dumpr3 ; fffffff2
move.d [r4],r3
dumpr3 ; 10
subq 8,r4
setf zcvn
movem [r4+],r0
test_cc 1 1 1 1
move.d r0,r3
dumpr3 ; fffffff2
move.d r1,r3
dumpr3 ; d
quit

View File

@ -0,0 +1,9 @@
# mach: crisv3 crisv8 crisv10
# xerror:
# output: General register read of PC is not implemented.\nprogram stopped with signal 5.\n
.include "testutils.inc"
startnostack
setf
test.b pc
quit

View File

@ -0,0 +1,16 @@
# mach: crisv3 crisv8 crisv10
# xerror:
# output: General register * PC is not implemented.\nprogram stopped with signal 5.\n
# Both source and dest contain PC for "test.d r" (move.d r,r). Ideally,
# the output message should say "read" of PC, but we allow PC as source in
# a move.d r,R insn, so there's no logical way to get that, short of a
# special pattern, which would be just too ugly. The output message says
# "write", but let's match "read" too so we won't fail if things suddenly
# improve.
.include "testutils.inc"
startnostack
setf
test.d pc
quit

View File

@ -0,0 +1,9 @@
# mach: crisv3 crisv8 crisv10
# xerror:
# output: General register read of PC is not implemented.\nprogram stopped with signal 5.\n
.include "testutils.inc"
startnostack
setf
test.w pc
quit

View File

@ -0,0 +1,15 @@
# mach: crisv3 crisv8 crisv10 crisv32
# sim: --trace-core=on
# ld: --section-start=.text=0
# output: read-2 exec:0x00000002 -> 0x3262\nread-2 exec:0x00000004 -> 0xe93e\nffffffe2\nread-2 exec:0x00000006 -> 0x324d\nread-2 exec:0x00000008 -> 0xe93e\nd\nread-2 exec:0x0000000a -> 0xe93f\n
; Output a positive and a negative number, set from moveq.
.include "testutils.inc"
startnostack
moveq -30,r3
dumpr3
moveq 13,r3
dumpr3
quit

View File

@ -0,0 +1,9 @@
# mach: crisv3 crisv8 crisv10
# xerror:
# output: General register write to PC is not implemented.\nprogram stopped with signal 5.\n
.include "testutils.inc"
startnostack
setf
moveq -30,pc
quit

View File

@ -0,0 +1,29 @@
# 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 1 0 0 0
dumpr3
move.w r4,r3
test_move_cc 0 0 0 0
dumpr3
move.d r4,r3
test_move_cc 0 0 0 0
dumpr3
moveq -1,r3
moveq 0,r4
move.b r4,r3
test_move_cc 0 1 0 0
dumpr3
quit

View File

@ -0,0 +1,9 @@
# mach: crisv3 crisv8 crisv10
# xerror:
# output: General register write to PC is not implemented.\nprogram stopped with signal 5.\n
.include "testutils.inc"
startnostack
setf
move.d r5,pc
quit

View File

@ -0,0 +1,9 @@
# mach: crisv3 crisv8 crisv10
# xerror:
# output: General register write to PC is not implemented.\nprogram stopped with signal 5.\n
.include "testutils.inc"
startnostack
setf
move.d r5,pc
quit

View File

@ -0,0 +1,45 @@
# 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
dumpr3 ; 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
dumpr3 ; 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
dumpr3 ; 102318ff
quit

View File

@ -0,0 +1,9 @@
# mach: crisv3 crisv8 crisv10
# xerror:
# output: General register read of PC is not implemented.\nprogram stopped with signal 5.\n
.include "testutils.inc"
startnostack
setf
move.b pc,r5
quit

Some files were not shown because too many files have changed in this diff Show More