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

Subversion Repositories openrisc_me

[/] [openrisc/] [tags/] [gdb/] [gdb-6.8/] [gdb-6.8.openrisc-2.1/] [sim/] [testsuite/] [sim/] [sh64/] [compact/] [fmov.cgs] - Diff between revs 24 and 33

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

Rev 24 Rev 33
# sh testcase for all fmov instructions
# sh testcase for all fmov instructions
# 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 init
        .macro init
        fldi0 fr0
        fldi0 fr0
        fldi1 fr2
        fldi1 fr2
        .endm
        .endm
        # Set the SZ (SiZe) bit in the fpscr.
        # Set the SZ (SiZe) bit in the fpscr.
        .macro _setsz
        .macro _setsz
        sts fpscr, r7
        sts fpscr, r7
        mov #16, r8
        mov #16, r8
        shll16 r8
        shll16 r8
        or r8, r7
        or r8, r7
        lds r7, fpscr
        lds r7, fpscr
        .endm
        .endm
        # Clear the SZ bit.
        # Clear the SZ bit.
        .macro _clrsz
        .macro _clrsz
        sts fpscr, r7
        sts fpscr, r7
        mov #16, r8
        mov #16, r8
        shll16 r8
        shll16 r8
        not r8, r8
        not r8, r8
        and r8, r7
        and r8, r7
        lds r7, fpscr
        lds r7, fpscr
        .endm
        .endm
        start
        start
fmov1:  # Test fr -> fr.
fmov1:  # Test fr -> fr.
        init
        init
        _clrpr
        _clrpr
        _clrsz
        _clrsz
        fmov fr0, fr10
        fmov fr0, fr10
        # Ensure fr0 and fr10 are now equal.
        # Ensure fr0 and fr10 are now equal.
        fcmp/eq fr0, fr10
        fcmp/eq fr0, fr10
        bt fmov2
        bt fmov2
        fail
        fail
fmov2:  # Test dr -> dr.
fmov2:  # Test dr -> dr.
        init
        init
        _setpr
        _setpr
        _setsz
        _setsz
        fmov dr0, dr2
        fmov dr0, dr2
        # Ensure dr0 and dr2 are now equal.
        # Ensure dr0 and dr2 are now equal.
        fcmp/eq dr0, dr2
        fcmp/eq dr0, dr2
        bt fmov3
        bt fmov3
        fail
        fail
fmov3:  # Test dr -> xd and xd -> dr.
fmov3:  # Test dr -> xd and xd -> dr.
        init
        init
        _setsz
        _setsz
        fmov dr0, xd0
        fmov dr0, xd0
        # Ensure dr0 and xd0 are now equal.
        # Ensure dr0 and xd0 are now equal.
        fmov xd0, dr2
        fmov xd0, dr2
        fcmp/eq dr0, dr2
        fcmp/eq dr0, dr2
        bt fmov4
        bt fmov4
        fail
        fail
fmov4:  # Test xd -> xd.
fmov4:  # Test xd -> xd.
        init
        init
        _setsz
        _setsz
        _setpr
        _setpr
        fmov dr0, xd0
        fmov dr0, xd0
        fmov xd0, xd2
        fmov xd0, xd2
        fmov xd2, dr2
        fmov xd2, dr2
        # Ensure dr0 and dr2 are now equal.
        # Ensure dr0 and dr2 are now equal.
        fcmp/eq dr0, dr2
        fcmp/eq dr0, dr2
        bt fmov5
        bt fmov5
        fail
        fail
fmov5:  # Test fr -> @rn and @rn -> fr.
fmov5:  # Test fr -> @rn and @rn -> fr.
        init
        init
        _clrsz
        _clrsz
        _clrpr
        _clrpr
        mov #40, r0
        mov #40, r0
        shll8 r0
        shll8 r0
        fmov fr0, @r0
        fmov fr0, @r0
        fmov @r0, fr1
        fmov @r0, fr1
        fcmp/eq fr0, fr1
        fcmp/eq fr0, fr1
        bt fmov6
        bt fmov6
        fail
        fail
fmov6:  # Test dr -> @rn and @rn -> dr.
fmov6:  # Test dr -> @rn and @rn -> dr.
        init
        init
        _setsz
        _setsz
        _setpr
        _setpr
        mov #40, r0
        mov #40, r0
        shll8 r0
        shll8 r0
        fmov dr0, @r0
        fmov dr0, @r0
        fmov @r0, dr2
        fmov @r0, dr2
        fcmp/eq dr0, dr2
        fcmp/eq dr0, dr2
        bt fmov7
        bt fmov7
        fail
        fail
fmov7:  # Test xd -> @rn and @rn -> xd.
fmov7:  # Test xd -> @rn and @rn -> xd.
        init
        init
        _setsz
        _setsz
        _setpr
        _setpr
        mov #40, r0
        mov #40, r0
        shll8 r0
        shll8 r0
        fmov dr0, xd0
        fmov dr0, xd0
        fmov xd0, @r0
        fmov xd0, @r0
        fmov @r0, xd2
        fmov @r0, xd2
        fmov xd2, dr2
        fmov xd2, dr2
        fcmp/eq dr0, dr2
        fcmp/eq dr0, dr2
        bt fmov8
        bt fmov8
        fail
        fail
fmov8:  # Test fr -> @-rn.
fmov8:  # Test fr -> @-rn.
        init
        init
        _clrsz
        _clrsz
        _clrpr
        _clrpr
        mov #40, r0
        mov #40, r0
        shll8 r0
        shll8 r0
        # Preserve.
        # Preserve.
        mov r0, r1
        mov r0, r1
        fmov fr0, @-r0
        fmov fr0, @-r0
        fmov @r0, fr2
        fmov @r0, fr2
        fcmp/eq fr0, fr2
        fcmp/eq fr0, fr2
        bt f8b
        bt f8b
        fail
        fail
f8b:    # check pre-dec.
f8b:    # check pre-dec.
        add #4, r0
        add #4, r0
        cmp/eq r0, r1
        cmp/eq r0, r1
        bt fmov9
        bt fmov9
        fail
        fail
fmov9:  # Test dr -> @-rn.
fmov9:  # Test dr -> @-rn.
        init
        init
        _setsz
        _setsz
        _setpr
        _setpr
        mov #40, r0
        mov #40, r0
        shll8 r0
        shll8 r0
        # Preserve r0.
        # Preserve r0.
        mov r0, r1
        mov r0, r1
        fmov dr0, @-r0
        fmov dr0, @-r0
        fmov @r0, dr2
        fmov @r0, dr2
        fcmp/eq dr0, dr2
        fcmp/eq dr0, dr2
        bt f9b
        bt f9b
        fail
        fail
f9b:    # check pre-dec.
f9b:    # check pre-dec.
        add #8, r0
        add #8, r0
        cmp/eq r0, r1
        cmp/eq r0, r1
        bt fmov10
        bt fmov10
        fail
        fail
fmov10: # Test xd -> @-rn.
fmov10: # Test xd -> @-rn.
        init
        init
        _setsz
        _setsz
        _setpr
        _setpr
        mov #40, r0
        mov #40, r0
        shll8 r0
        shll8 r0
        # Preserve r0.
        # Preserve r0.
        mov r0, r1
        mov r0, r1
        fmov dr0, xd0
        fmov dr0, xd0
        fmov xd0, @-r0
        fmov xd0, @-r0
        fmov @r0, xd2
        fmov @r0, xd2
        fmov xd2, dr2
        fmov xd2, dr2
        fcmp/eq dr0, dr2
        fcmp/eq dr0, dr2
        bt f10b
        bt f10b
        fail
        fail
f10b:   # check pre-dec.
f10b:   # check pre-dec.
        add #8, r0
        add #8, r0
        cmp/eq r0, r1
        cmp/eq r0, r1
        bt fmov11
        bt fmov11
        fail
        fail
fmov11: # Test @rn+ -> fr.
fmov11: # Test @rn+ -> fr.
        init
        init
        _clrsz
        _clrsz
        _clrpr
        _clrpr
        mov #40, r0
        mov #40, r0
        shll8 r0
        shll8 r0
        # Preserve r0.
        # Preserve r0.
        mov r0, r1
        mov r0, r1
        fmov fr0, @r0
        fmov fr0, @r0
        fmov @r0+, fr2
        fmov @r0+, fr2
        fcmp/eq fr0, fr2
        fcmp/eq fr0, fr2
        bt f11b
        bt f11b
        fail
        fail
f11b:   # check post-inc.
f11b:   # check post-inc.
        add #4, r1
        add #4, r1
        cmp/eq r0, r1
        cmp/eq r0, r1
        bt fmov12
        bt fmov12
        fail
        fail
fmov12: # Test @rn+ -> dr.
fmov12: # Test @rn+ -> dr.
        init
        init
        _setsz
        _setsz
        _setpr
        _setpr
        mov #40, r0
        mov #40, r0
        shll8 r0
        shll8 r0
        # preserve r0.
        # preserve r0.
        mov r0, r1
        mov r0, r1
        fmov dr0, @r0
        fmov dr0, @r0
        fmov @r0+, dr2
        fmov @r0+, dr2
        fcmp/eq dr0, dr2
        fcmp/eq dr0, dr2
        bt f12b
        bt f12b
        fail
        fail
f12b:   # check post-inc.
f12b:   # check post-inc.
        add #8, r1
        add #8, r1
        cmp/eq r0, r1
        cmp/eq r0, r1
        bt fmov13
        bt fmov13
        fail
        fail
fmov13: # Test @rn -> xd.
fmov13: # Test @rn -> xd.
        init
        init
        _setsz
        _setsz
        _setpr
        _setpr
        mov #40, r0
        mov #40, r0
        shll8 r0
        shll8 r0
        # Preserve r0.
        # Preserve r0.
        mov r0, r1
        mov r0, r1
        fmov dr0, xd0
        fmov dr0, xd0
        fmov xd0, @r0
        fmov xd0, @r0
        fmov @r0+, xd2
        fmov @r0+, xd2
        fmov xd2, dr2
        fmov xd2, dr2
        fcmp/eq dr0, dr2
        fcmp/eq dr0, dr2
        bt f13b
        bt f13b
        fail
        fail
f13b:
f13b:
        add #8, r1
        add #8, r1
        cmp/eq r0, r1
        cmp/eq r0, r1
        bt fmov14
        bt fmov14
        fail
        fail
fmov14: # Test fr -> @(r0,rn), @(r0, rn) -> fr.
fmov14: # Test fr -> @(r0,rn), @(r0, rn) -> fr.
        init
        init
        _clrsz
        _clrsz
        _clrpr
        _clrpr
        mov #40, r0
        mov #40, r0
        shll8 r0
        shll8 r0
        mov #0, r1
        mov #0, r1
        fmov fr0, @(r0, r1)
        fmov fr0, @(r0, r1)
        fmov @(r0, r1), fr1
        fmov @(r0, r1), fr1
        fcmp/eq fr0, fr1
        fcmp/eq fr0, fr1
        bt fmov15
        bt fmov15
        fail
        fail
fmov15: # Test dr -> @(r0, rn), @(r0, rn) -> dr.
fmov15: # Test dr -> @(r0, rn), @(r0, rn) -> dr.
        init
        init
        _setsz
        _setsz
        _setpr
        _setpr
        mov #40, r0
        mov #40, r0
        shll8 r0
        shll8 r0
        mov #0, r1
        mov #0, r1
        fmov dr0, @(r0, r1)
        fmov dr0, @(r0, r1)
        fmov @(r0, r1), dr2
        fmov @(r0, r1), dr2
        fcmp/eq dr0, dr2
        fcmp/eq dr0, dr2
        bt fmov16
        bt fmov16
        fail
        fail
fmov16: # Test xd -> @(r0, rn), @(r0, rn) -> xd.
fmov16: # Test xd -> @(r0, rn), @(r0, rn) -> xd.
        init
        init
        _setsz
        _setsz
        _setpr
        _setpr
        mov #40, r0
        mov #40, r0
        shll8 r0
        shll8 r0
        mov #0, r1
        mov #0, r1
        fmov dr0, xd0
        fmov dr0, xd0
        fmov xd0, @(r0, r1)
        fmov xd0, @(r0, r1)
        fmov @(r0, r1), xd2
        fmov @(r0, r1), xd2
        fmov xd2, dr2
        fmov xd2, dr2
        fcmp/eq dr0, dr2
        fcmp/eq dr0, dr2
        bt okay
        bt okay
        fail
        fail
okay:
okay:
        pass
        pass
 
 

powered by: WebSVN 2.1.0

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