| # sh testcase for ftrc -*- Asm -*- |
| # mach: all |
| # as: -isa=shcompact |
| # ld: -m shelf32 |
| |
| .include "compact/testutils.inc" |
| |
| start |
| |
| # ftrc(0.0) = 0. |
| fldi0 fr0 |
| ftrc fr0, fpul |
| # check results. |
| mov #0, r0 |
| sts fpul, r1 |
| cmp/eq r0, r1 |
| bf wrong |
| |
| # ftrc(1.5) = 1. |
| fldi1 fr0 |
| fldi1 fr1 |
| fldi1 fr2 |
| # double it. |
| fadd fr2, fr2 |
| # form the fraction. |
| fdiv fr2, fr1 |
| fadd fr1, fr0 |
| # now we've got 1.5 in fr0. |
| ftrc fr0, fpul |
| # check results. |
| mov #1, r0 |
| sts fpul, r1 |
| cmp/eq r0, r1 |
| bf wrong |
| |
| # ftrc(-1.5) = -1. |
| fldi1 fr0 |
| fneg fr0 |
| fldi1 fr1 |
| fldi1 fr2 |
| # double it. |
| fadd fr2, fr2 |
| # form the fraction. |
| fdiv fr2, fr1 |
| fneg fr1 |
| # -1 + -0.5 = -1.5. |
| fadd fr1, fr0 |
| # now we've got 1.5 in fr0. |
| ftrc fr0, fpul |
| # check results. |
| mov #1, r0 |
| neg r0, r0 |
| sts fpul, r1 |
| cmp/eq r0, r1 |
| bf wrong |
| |
| bra double |
| nop |
| |
| wrong: |
| fail |
| |
| double: |
| # ftrc(0.0) = 0. |
| fldi0 fr0 |
| _s2d fr0, dr0 |
| _setpr |
| ftrc dr0, fpul |
| _clrpr |
| # check results. |
| mov #0, r0 |
| sts fpul, r1 |
| cmp/eq r0, r1 |
| foo: |
| bf wrong2 |
| |
| # ftrc(1.5) = 1. |
| fldi1 fr0 |
| fldi1 fr2 |
| fldi1 fr4 |
| # double it. |
| fadd fr4, fr4 |
| # form 0.5. |
| fdiv fr4, fr2 |
| fadd fr2, fr0 |
| # now we've got 1.5 in fr0, so do some single->double |
| # conversions and perform the ftrc. |
| _s2d fr0, dr0 |
| _s2d fr2, dr2 |
| _s2d fr4, dr4 |
| _setpr |
| ftrc dr0, fpul |
| _clrpr |
| |
| # check results. |
| mov #1, r0 |
| sts fpul, r1 |
| cmp/eq r0, r1 |
| bf wrong2 |
| |
| # ftrc(-1.5) = -1. |
| fldi1 fr0 |
| fneg fr0 |
| fldi1 fr2 |
| fldi1 fr4 |
| # double it. |
| fadd fr4, fr4 |
| # form the fraction. |
| fdiv fr4, fr2 |
| fneg fr2 |
| # -1 + -0.5 = -1.5. |
| fadd fr2, fr0 |
| # now we've got 1.5 in fr0, so do some single->double |
| # conversions and perform the ftrc. |
| _s2d fr0, dr0 |
| _s2d fr2, dr2 |
| _s2d fr4, dr4 |
| _setpr |
| ftrc dr0, fpul |
| _clrpr |
| |
| # check results. |
| mov #1, r0 |
| neg r0, r0 |
| sts fpul, r1 |
| cmp/eq r0, r1 |
| bf wrong2 |
| |
| okay: |
| pass |
| wrong2: |
| fail |