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/] [sh/] [fmov.s] - Diff between revs 24 and 157

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

Rev 24 Rev 157
# sh testcase for all fmov instructions
# sh testcase for all fmov instructions
# mach: sh
# mach: sh
# as(sh):       -defsym sim_cpu=0
# as(sh):       -defsym sim_cpu=0
 
 
        .include "testutils.inc"
        .include "testutils.inc"
 
 
        .macro init
        .macro init
        fldi0   fr0
        fldi0   fr0
        fldi1   fr1
        fldi1   fr1
        fldi1   fr2
        fldi1   fr2
        fldi1   fr3
        fldi1   fr3
        .endm
        .endm
 
 
        start
        start
 
 
fmov1:  # Test fr -> fr.
fmov1:  # Test fr -> fr.
        set_grs_a5a5
        set_grs_a5a5
        set_fprs_a5a5
        set_fprs_a5a5
        init
        init
        single_prec
        single_prec
        sz_32
        sz_32
        fmov    fr0, fr1
        fmov    fr0, fr1
        # Ensure fr0 and fr1 are now equal.
        # Ensure fr0 and fr1 are now equal.
        fcmp/eq fr0, fr1
        fcmp/eq fr0, fr1
        bt      fmov2
        bt      fmov2
        fail
        fail
 
 
fmov2:  # Test dr -> dr.
fmov2:  # Test dr -> dr.
        init
        init
        double_prec
        double_prec
        sz_64
        sz_64
        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
        sz_64
        sz_64
        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
        sz_64
        sz_64
        double_prec
        double_prec
        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      .L0
        bt      .L0
        fail
        fail
 
 
        # FIXME: test fmov.s fr -> @gr,      fmov dr -> @gr
        # FIXME: test fmov.s fr -> @gr,      fmov dr -> @gr
        # FIXME: test fmov.s @gr -> fr,      fmov @gr -> dr
        # FIXME: test fmov.s @gr -> fr,      fmov @gr -> dr
        # FIXME: test fmov.s @gr+ -> fr,     fmov @gr+ -> dr
        # FIXME: test fmov.s @gr+ -> fr,     fmov @gr+ -> dr
        # FIXME: test fmov.s fr -> @-gr,     fmov dr -> @-gr
        # FIXME: test fmov.s fr -> @-gr,     fmov dr -> @-gr
        # FIXME: test fmov.s @(r0,gr) -> fr, fmov @(r0,gr) -> dr
        # FIXME: test fmov.s @(r0,gr) -> fr, fmov @(r0,gr) -> dr
        # FIXME: test fmov.s fr -> @(r0,gr), fmov dr -> @(r0,gr)
        # FIXME: test fmov.s fr -> @(r0,gr), fmov dr -> @(r0,gr)
 
 
.L0:
.L0:
        test_grs_a5a5
        test_grs_a5a5
        sz_32
        sz_32
        single_prec
        single_prec
        assert_fpreg_i  0, fr0
        assert_fpreg_i  0, fr0
        assert_fpreg_i  1, fr1
        assert_fpreg_i  1, fr1
        assert_fpreg_i  0, fr2
        assert_fpreg_i  0, fr2
        assert_fpreg_i  1, fr3
        assert_fpreg_i  1, fr3
        test_fpr_a5a5   fr4
        test_fpr_a5a5   fr4
        test_fpr_a5a5   fr5
        test_fpr_a5a5   fr5
        test_fpr_a5a5   fr6
        test_fpr_a5a5   fr6
        test_fpr_a5a5   fr7
        test_fpr_a5a5   fr7
        test_fpr_a5a5   fr8
        test_fpr_a5a5   fr8
        test_fpr_a5a5   fr9
        test_fpr_a5a5   fr9
        test_fpr_a5a5   fr10
        test_fpr_a5a5   fr10
        test_fpr_a5a5   fr11
        test_fpr_a5a5   fr11
        test_fpr_a5a5   fr12
        test_fpr_a5a5   fr12
        test_fpr_a5a5   fr13
        test_fpr_a5a5   fr13
        test_fpr_a5a5   fr14
        test_fpr_a5a5   fr14
        test_fpr_a5a5   fr15
        test_fpr_a5a5   fr15
 
 
fmov5:  # Test fr -> @rn and @rn -> fr.
fmov5:  # Test fr -> @rn and @rn -> fr.
        init
        init
        sz_32
        sz_32
        single_prec
        single_prec
        # FIXME!  Use a reserved memory location!
        # FIXME!  Use a reserved memory location!
        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
        sz_64
        sz_64
        double_prec
        double_prec
        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
        sz_64
        sz_64
        double_prec
        double_prec
        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
        sz_32
        sz_32
        single_prec
        single_prec
        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
        sz_64
        sz_64
        double_prec
        double_prec
        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
        sz_64
        sz_64
        double_prec
        double_prec
        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
        sz_32
        sz_32
        single_prec
        single_prec
        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
        sz_64
        sz_64
        double_prec
        double_prec
        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
        sz_64
        sz_64
        double_prec
        double_prec
        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
        sz_32
        sz_32
        single_prec
        single_prec
        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
        sz_64
        sz_64
        double_prec
        double_prec
        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
        sz_64
        sz_64
        double_prec
        double_prec
        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      .L1
        bt      .L1
        fail
        fail
.L1:
.L1:
        assertreg0      0x2800
        assertreg0      0x2800
        assertreg       0, r1
        assertreg       0, r1
        test_gr_a5a5    r2
        test_gr_a5a5    r2
        test_gr_a5a5    r3
        test_gr_a5a5    r3
        test_gr_a5a5    r4
        test_gr_a5a5    r4
        test_gr_a5a5    r5
        test_gr_a5a5    r5
        test_gr_a5a5    r6
        test_gr_a5a5    r6
        test_gr_a5a5    r7
        test_gr_a5a5    r7
        test_gr_a5a5    r8
        test_gr_a5a5    r8
        test_gr_a5a5    r9
        test_gr_a5a5    r9
        test_gr_a5a5    r10
        test_gr_a5a5    r10
        test_gr_a5a5    r11
        test_gr_a5a5    r11
        test_gr_a5a5    r12
        test_gr_a5a5    r12
        test_gr_a5a5    r13
        test_gr_a5a5    r13
        test_gr_a5a5    r14
        test_gr_a5a5    r14
 
 
        sz_32
        sz_32
        single_prec
        single_prec
        assert_fpreg_i  0, fr0
        assert_fpreg_i  0, fr0
        assert_fpreg_i  1, fr1
        assert_fpreg_i  1, fr1
        assert_fpreg_i  0, fr2
        assert_fpreg_i  0, fr2
        assert_fpreg_i  1, fr3
        assert_fpreg_i  1, fr3
        test_fpr_a5a5   fr4
        test_fpr_a5a5   fr4
        test_fpr_a5a5   fr5
        test_fpr_a5a5   fr5
        test_fpr_a5a5   fr6
        test_fpr_a5a5   fr6
        test_fpr_a5a5   fr7
        test_fpr_a5a5   fr7
        test_fpr_a5a5   fr8
        test_fpr_a5a5   fr8
        test_fpr_a5a5   fr9
        test_fpr_a5a5   fr9
        test_fpr_a5a5   fr10
        test_fpr_a5a5   fr10
        test_fpr_a5a5   fr11
        test_fpr_a5a5   fr11
        test_fpr_a5a5   fr12
        test_fpr_a5a5   fr12
        test_fpr_a5a5   fr13
        test_fpr_a5a5   fr13
        test_fpr_a5a5   fr14
        test_fpr_a5a5   fr14
        test_fpr_a5a5   fr15
        test_fpr_a5a5   fr15
 
 
        pass
        pass
        exit 0
        exit 0
 
 

powered by: WebSVN 2.1.0

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