OpenCores
URL https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [gdb-6.8/] [sim/] [testsuite/] [sim/] [sh64/] [compact/] [cmpstr.cgs] - Diff between revs 24 and 157

Only display areas with differences | Details | Blame | View Log

Rev 24 Rev 157
# 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
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.