OpenCores
URL https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk

Subversion Repositories openrisc_2011-10-31

[/] [openrisc/] [tags/] [gdb/] [gdb-6.8/] [gdb-6.8.openrisc-2.1/] [sim/] [testsuite/] [sim/] [sh/] [ftrc.s] - Diff between revs 24 and 33

Go to most recent revision | Only display areas with differences | Details | Blame | View Log

Rev 24 Rev 33
# sh testcase for ftrc
# sh testcase for ftrc
# mach: sh
# mach: sh
# as(sh):       -defsym sim_cpu=0
# as(sh):       -defsym sim_cpu=0
 
 
        .include "testutils.inc"
        .include "testutils.inc"
 
 
        start
        start
ftrc_single:
ftrc_single:
        set_grs_a5a5
        set_grs_a5a5
        set_fprs_a5a5
        set_fprs_a5a5
        # ftrc(0.0) = 0.
        # ftrc(0.0) = 0.
        fldi0   fr0
        fldi0   fr0
        ftrc    fr0, fpul
        ftrc    fr0, fpul
        # check results.
        # check results.
        mov     #0, r0
        mov     #0, r0
        sts     fpul, r1
        sts     fpul, r1
        cmp/eq  r0, r1
        cmp/eq  r0, r1
        bt      .L0
        bt      .L0
        fail
        fail
.L0:
.L0:
        # ftrc(1.5) = 1.
        # ftrc(1.5) = 1.
        fldi1   fr0
        fldi1   fr0
        fldi1   fr1
        fldi1   fr1
        fldi1   fr2
        fldi1   fr2
        # double it.
        # double it.
        fadd    fr2, fr2
        fadd    fr2, fr2
        # form the fraction.
        # form the fraction.
        fdiv    fr2, fr1
        fdiv    fr2, fr1
        fadd    fr1, fr0
        fadd    fr1, fr0
        # now we've got 1.5 in fr0.
        # now we've got 1.5 in fr0.
        ftrc    fr0, fpul
        ftrc    fr0, fpul
        # check results.
        # check results.
        mov     #1, r0
        mov     #1, r0
        sts     fpul, r1
        sts     fpul, r1
        cmp/eq  r0, r1
        cmp/eq  r0, r1
        bt      .L1
        bt      .L1
        fail
        fail
.L1:
.L1:
        # ftrc(-1.5) = -1.
        # ftrc(-1.5) = -1.
        fldi1   fr0
        fldi1   fr0
        fneg    fr0
        fneg    fr0
        fldi1   fr1
        fldi1   fr1
        fldi1   fr2
        fldi1   fr2
        # double it.
        # double it.
        fadd    fr2, fr2
        fadd    fr2, fr2
        # form the fraction.
        # form the fraction.
        fdiv    fr2, fr1
        fdiv    fr2, fr1
        fneg    fr1
        fneg    fr1
        # -1 + -0.5 = -1.5.
        # -1 + -0.5 = -1.5.
        fadd    fr1, fr0
        fadd    fr1, fr0
        # now we've got 1.5 in fr0.
        # now we've got 1.5 in fr0.
        ftrc    fr0, fpul
        ftrc    fr0, fpul
        # check results.
        # check results.
        mov     #1, r0
        mov     #1, r0
        neg     r0, r0
        neg     r0, r0
        sts     fpul, r1
        sts     fpul, r1
        cmp/eq  r0, r1
        cmp/eq  r0, r1
        bt      ftrc_double
        bt      ftrc_double
        fail
        fail
 
 
ftrc_double:
ftrc_double:
        double_prec
        double_prec
        # ftrc(0.0) = 0.
        # ftrc(0.0) = 0.
        fldi0   fr0
        fldi0   fr0
        _s2d    fr0, dr0
        _s2d    fr0, dr0
        ftrc    dr0, fpul
        ftrc    dr0, fpul
        # check results.
        # check results.
        mov     #0, r0
        mov     #0, r0
        sts     fpul, r1
        sts     fpul, r1
        cmp/eq  r0, r1
        cmp/eq  r0, r1
        bt      .L10
        bt      .L10
        fail
        fail
.L10:
.L10:
        # ftrc(1.5) = 1.
        # ftrc(1.5) = 1.
        fldi1   fr0
        fldi1   fr0
        fldi1   fr2
        fldi1   fr2
        fldi1   fr4
        fldi1   fr4
        # double it.
        # double it.
        single_prec
        single_prec
        fadd    fr4, fr4
        fadd    fr4, fr4
        # form 0.5.
        # form 0.5.
        fdiv    fr4, fr2
        fdiv    fr4, fr2
        fadd    fr2, fr0
        fadd    fr2, fr0
        double_prec
        double_prec
        # now we've got 1.5 in fr0, so do some single->double
        # now we've got 1.5 in fr0, so do some single->double
        # conversions and perform the ftrc.
        # conversions and perform the ftrc.
        _s2d    fr0, dr0
        _s2d    fr0, dr0
        _s2d    fr2, dr2
        _s2d    fr2, dr2
        _s2d    fr4, dr4
        _s2d    fr4, dr4
        ftrc    dr0, fpul
        ftrc    dr0, fpul
 
 
        # check results.
        # check results.
        mov     #1, r0
        mov     #1, r0
        sts     fpul, r1
        sts     fpul, r1
        cmp/eq  r0, r1
        cmp/eq  r0, r1
        bt      .L11
        bt      .L11
        fail
        fail
.L11:
.L11:
        # ftrc(-1.5) = -1.
        # ftrc(-1.5) = -1.
        fldi1   fr0
        fldi1   fr0
        fneg    fr0
        fneg    fr0
        fldi1   fr2
        fldi1   fr2
        fldi1   fr4
        fldi1   fr4
        single_prec
        single_prec
        # double it.
        # double it.
        fadd    fr4, fr4
        fadd    fr4, fr4
        # form the fraction.
        # form the fraction.
        fdiv    fr4, fr2
        fdiv    fr4, fr2
        fneg    fr2
        fneg    fr2
        # -1 + -0.5 = -1.5.
        # -1 + -0.5 = -1.5.
        fadd    fr2, fr0
        fadd    fr2, fr0
        double_prec
        double_prec
        # now we've got 1.5 in fr0, so do some single->double
        # now we've got 1.5 in fr0, so do some single->double
        # conversions and perform the ftrc.
        # conversions and perform the ftrc.
        _s2d    fr0, dr0
        _s2d    fr0, dr0
        _s2d    fr2, dr2
        _s2d    fr2, dr2
        _s2d    fr4, dr4
        _s2d    fr4, dr4
        ftrc    dr0, fpul
        ftrc    dr0, fpul
 
 
        # check results.
        # check results.
        mov     #1, r0
        mov     #1, r0
        neg     r0, r0
        neg     r0, r0
        sts     fpul, r1
        sts     fpul, r1
        cmp/eq  r0, r1
        cmp/eq  r0, r1
        bt      .L12
        bt      .L12
        fail
        fail
.L12:
.L12:
        assertreg0      -1
        assertreg0      -1
        assertreg       -1, r1
        assertreg       -1, 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
 
 
        assert_dpreg_i  2, dr4
        assert_dpreg_i  2, dr4
        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.