URL
https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk
Only display areas with differences |
Details |
Blame |
View Log
Rev 24 |
Rev 33 |
# sh testcase for cmp/str $rm, $rn -*- Asm -*-
|
# sh testcase for cmp/str $rm, $rn -*- Asm -*-
|
# mach: all
|
# mach: all
|
# as: -isa=shcompact
|
# as: -isa=shcompact
|
# ld: -m shelf32
|
# ld: -m shelf32
|
|
|
.include "compact/testutils.inc"
|
.include "compact/testutils.inc"
|
|
|
.macro rot8
|
.macro rot8
|
rotr r0
|
rotr r0
|
rotr r0
|
rotr r0
|
rotr r0
|
rotr r0
|
rotr r0
|
rotr r0
|
rotr r0
|
rotr r0
|
rotr r0
|
rotr r0
|
rotr r0
|
rotr r0
|
rotr r0
|
rotr r0
|
.endm
|
.endm
|
|
|
start
|
start
|
|
|
# Use multiple "wrong" labels because this program is quite long. It's
|
# Use multiple "wrong" labels because this program is quite long. It's
|
# likely that some instructions will be too far away from the branch
|
# likely that some instructions will be too far away from the branch
|
# target to use PC-relative branches.
|
# target to use PC-relative branches.
|
|
|
match0:
|
match0:
|
# No bytes matching.
|
# No bytes matching.
|
mov #1, r0
|
mov #1, r0
|
neg r0, r0
|
neg r0, r0
|
xor #170, r0
|
xor #170, r0
|
rot8
|
rot8
|
xor #170, r0
|
xor #170, r0
|
rot8
|
rot8
|
xor #170, r0
|
xor #170, r0
|
rot8
|
rot8
|
xor #170, r0
|
xor #170, r0
|
rot8
|
rot8
|
mov r0, r1
|
mov r0, r1
|
mov #1, r0
|
mov #1, r0
|
neg r0, r0
|
neg r0, r0
|
xor #85, r0
|
xor #85, r0
|
rot8
|
rot8
|
xor #85, r0
|
xor #85, r0
|
rot8
|
rot8
|
xor #85, r0
|
xor #85, r0
|
rot8
|
rot8
|
xor #85, r0
|
xor #85, r0
|
rot8
|
rot8
|
cmp/str r0, r1
|
cmp/str r0, r1
|
bt wrong0
|
bt wrong0
|
|
|
bra match1
|
bra match1
|
nop
|
nop
|
wrong0:
|
wrong0:
|
fail
|
fail
|
|
|
match1:
|
match1:
|
# One byte matching.
|
# One byte matching.
|
mov #1, r0
|
mov #1, r0
|
neg r0, r0
|
neg r0, r0
|
xor #170, r0
|
xor #170, r0
|
rot8
|
rot8
|
xor #170, r0
|
xor #170, r0
|
rot8
|
rot8
|
xor #170, r0
|
xor #170, r0
|
rot8
|
rot8
|
mov r0, r1
|
mov r0, r1
|
mov #1, r0
|
mov #1, r0
|
neg r0, r0
|
neg r0, r0
|
xor #85, r0
|
xor #85, r0
|
rot8
|
rot8
|
xor #85, r0
|
xor #85, r0
|
rot8
|
rot8
|
xor #85, r0
|
xor #85, r0
|
rot8
|
rot8
|
cmp/str r0, r1
|
cmp/str r0, r1
|
bf wrong1
|
bf wrong1
|
|
|
bra match2
|
bra match2
|
nop
|
nop
|
wrong1:
|
wrong1:
|
fail
|
fail
|
|
|
match2:
|
match2:
|
# Two bytes matching.
|
# Two bytes matching.
|
mov #1, r0
|
mov #1, r0
|
neg r0, r0
|
neg r0, r0
|
xor #170, r0
|
xor #170, r0
|
rot8
|
rot8
|
xor #170, r0
|
xor #170, r0
|
rot8
|
rot8
|
mov r0, r1
|
mov r0, r1
|
mov #1, r0
|
mov #1, r0
|
neg r0, r0
|
neg r0, r0
|
xor #85, r0
|
xor #85, r0
|
rot8
|
rot8
|
xor #85, r0
|
xor #85, r0
|
rot8
|
rot8
|
cmp/str r0, r1
|
cmp/str r0, r1
|
bf wrong2
|
bf wrong2
|
|
|
bra match3
|
bra match3
|
nop
|
nop
|
wrong2:
|
wrong2:
|
fail
|
fail
|
|
|
byte0:
|
byte0:
|
match3:
|
match3:
|
# One byte matching.
|
# One byte matching.
|
# This is also the test for byte 0.
|
# This is also the test for byte 0.
|
mov #85, r0
|
mov #85, r0
|
mov #85, r1
|
mov #85, r1
|
cmp/str r0, r1
|
cmp/str r0, r1
|
bf wrong3
|
bf wrong3
|
|
|
byte1:
|
byte1:
|
# Match in byte position 1.
|
# Match in byte position 1.
|
mov #85, r0
|
mov #85, r0
|
shll8 r0
|
shll8 r0
|
mov #85, r1
|
mov #85, r1
|
shll8 r1
|
shll8 r1
|
cmp/str r0, r1
|
cmp/str r0, r1
|
bf wrong3
|
bf wrong3
|
|
|
byte2:
|
byte2:
|
# Match in byte position 2.
|
# Match in byte position 2.
|
mov #85, r0
|
mov #85, r0
|
shll16 r0
|
shll16 r0
|
mov #85, r1
|
mov #85, r1
|
shll16 r1
|
shll16 r1
|
cmp/str r0, r1
|
cmp/str r0, r1
|
bf wrong3
|
bf wrong3
|
|
|
byte3:
|
byte3:
|
# Match in byte position 3.
|
# Match in byte position 3.
|
mov #85, r0
|
mov #85, r0
|
shll16 r0
|
shll16 r0
|
shll8 r0
|
shll8 r0
|
mov #85, r1
|
mov #85, r1
|
shll16 r1
|
shll16 r1
|
shll8 r1
|
shll8 r1
|
cmp/str r0, r1
|
cmp/str r0, r1
|
bf wrong3
|
bf wrong3
|
|
|
okay:
|
okay:
|
pass
|
pass
|
wrong3:
|
wrong3:
|
fail
|
fail
|
|
|
|
|
© copyright 1999-2024
OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.