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

Subversion Repositories scarts

[/] [scarts/] [trunk/] [toolchain/] [scarts-gdb/] [gdb-6.8/] [sim/] [testsuite/] [sim/] [sh64/] [compact/] [fmov.cgs] - Rev 26

Compare with Previous | Blame | View Log

# sh testcase for all fmov instructions
# mach: all
# as: -isa=shcompact
# ld: -m shelf32

        .include "compact/testutils.inc"

        .macro init
        fldi0 fr0
        fldi1 fr2
        .endm

        # Set the SZ (SiZe) bit in the fpscr.
        .macro _setsz
        sts fpscr, r7
        mov #16, r8
        shll16 r8
        or r8, r7
        lds r7, fpscr
        .endm

        # Clear the SZ bit.
        .macro _clrsz
        sts fpscr, r7
        mov #16, r8
        shll16 r8
        not r8, r8
        and r8, r7
        lds r7, fpscr
        .endm
        start

fmov1:  # Test fr -> fr.
        init
        _clrpr
        _clrsz
        fmov fr0, fr10
        # Ensure fr0 and fr10 are now equal.
        fcmp/eq fr0, fr10
        bt fmov2
        fail

fmov2:  # Test dr -> dr.
        init
        _setpr
        _setsz
        fmov dr0, dr2
        # Ensure dr0 and dr2 are now equal.
        fcmp/eq dr0, dr2
        bt fmov3
        fail

fmov3:  # Test dr -> xd and xd -> dr.
        init
        _setsz
        fmov dr0, xd0
        # Ensure dr0 and xd0 are now equal.
        fmov xd0, dr2
        fcmp/eq dr0, dr2
        bt fmov4
        fail

fmov4:  # Test xd -> xd.
        init
        _setsz
        _setpr
        fmov dr0, xd0
        fmov xd0, xd2
        fmov xd2, dr2
        # Ensure dr0 and dr2 are now equal.
        fcmp/eq dr0, dr2
        bt fmov5
        fail

fmov5:  # Test fr -> @rn and @rn -> fr.
        init
        _clrsz
        _clrpr
        mov #40, r0
        shll8 r0
        fmov fr0, @r0
        fmov @r0, fr1
        fcmp/eq fr0, fr1
        bt fmov6
        fail

fmov6:  # Test dr -> @rn and @rn -> dr.
        init
        _setsz
        _setpr
        mov #40, r0
        shll8 r0
        fmov dr0, @r0
        fmov @r0, dr2
        fcmp/eq dr0, dr2
        bt fmov7
        fail

fmov7:  # Test xd -> @rn and @rn -> xd.
        init
        _setsz
        _setpr
        mov #40, r0
        shll8 r0
        fmov dr0, xd0
        fmov xd0, @r0
        fmov @r0, xd2
        fmov xd2, dr2
        fcmp/eq dr0, dr2
        bt fmov8
        fail

fmov8:  # Test fr -> @-rn.
        init
        _clrsz
        _clrpr
        mov #40, r0
        shll8 r0
        # Preserve.
        mov r0, r1
        fmov fr0, @-r0
        fmov @r0, fr2
        fcmp/eq fr0, fr2
        bt f8b
        fail
f8b:    # check pre-dec.
        add #4, r0
        cmp/eq r0, r1
        bt fmov9
        fail

fmov9:  # Test dr -> @-rn.
        init
        _setsz
        _setpr
        mov #40, r0
        shll8 r0
        # Preserve r0.
        mov r0, r1
        fmov dr0, @-r0
        fmov @r0, dr2
        fcmp/eq dr0, dr2
        bt f9b
        fail
f9b:    # check pre-dec.
        add #8, r0
        cmp/eq r0, r1
        bt fmov10
        fail

fmov10: # Test xd -> @-rn.
        init
        _setsz
        _setpr
        mov #40, r0
        shll8 r0
        # Preserve r0.
        mov r0, r1
        fmov dr0, xd0
        fmov xd0, @-r0
        fmov @r0, xd2
        fmov xd2, dr2
        fcmp/eq dr0, dr2
        bt f10b
        fail
f10b:   # check pre-dec.
        add #8, r0
        cmp/eq r0, r1
        bt fmov11
        fail

fmov11: # Test @rn+ -> fr.
        init
        _clrsz
        _clrpr
        mov #40, r0
        shll8 r0
        # Preserve r0.
        mov r0, r1
        fmov fr0, @r0
        fmov @r0+, fr2
        fcmp/eq fr0, fr2
        bt f11b
        fail
f11b:   # check post-inc.
        add #4, r1
        cmp/eq r0, r1
        bt fmov12
        fail

fmov12: # Test @rn+ -> dr.
        init
        _setsz
        _setpr
        mov #40, r0
        shll8 r0
        # preserve r0.
        mov r0, r1
        fmov dr0, @r0
        fmov @r0+, dr2
        fcmp/eq dr0, dr2
        bt f12b
        fail
f12b:   # check post-inc.
        add #8, r1
        cmp/eq r0, r1
        bt fmov13
        fail

fmov13: # Test @rn -> xd.
        init
        _setsz
        _setpr
        mov #40, r0
        shll8 r0
        # Preserve r0.
        mov r0, r1
        fmov dr0, xd0
        fmov xd0, @r0
        fmov @r0+, xd2
        fmov xd2, dr2
        fcmp/eq dr0, dr2
        bt f13b
        fail
f13b:
        add #8, r1
        cmp/eq r0, r1
        bt fmov14
        fail

fmov14: # Test fr -> @(r0,rn), @(r0, rn) -> fr.
        init
        _clrsz
        _clrpr
        mov #40, r0
        shll8 r0
        mov #0, r1
        fmov fr0, @(r0, r1)
        fmov @(r0, r1), fr1
        fcmp/eq fr0, fr1
        bt fmov15
        fail

fmov15: # Test dr -> @(r0, rn), @(r0, rn) -> dr.
        init
        _setsz
        _setpr
        mov #40, r0
        shll8 r0
        mov #0, r1
        fmov dr0, @(r0, r1)
        fmov @(r0, r1), dr2
        fcmp/eq dr0, dr2
        bt fmov16
        fail

fmov16: # Test xd -> @(r0, rn), @(r0, rn) -> xd.
        init
        _setsz
        _setpr
        mov #40, r0
        shll8 r0
        mov #0, r1
        fmov dr0, xd0
        fmov xd0, @(r0, r1)
        fmov @(r0, r1), xd2
        fmov xd2, dr2
        fcmp/eq dr0, dr2
        bt okay
        fail

okay:
        pass

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

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