# sh testcase for fmul -*- Asm -*- | |
# mach: all | |
# as: -isa=shcompact | |
# ld: -m shelf32 | |
.include "compact/testutils.inc" | |
.macro init | |
fldi0 fr0 | |
fldi1 fr1 | |
fldi1 fr2 | |
fadd fr2, fr2 | |
fldi0 fr7 | |
fldi1 fr8 | |
.endm | |
start | |
# 0.0 * 0.0 = 0.0. | |
init | |
fmul fr0, fr0 | |
fcmp/eq fr7, fr0 | |
bf wrong | |
# 0.0 * 1.0 = 0.0. | |
init | |
fmul fr1, fr0 | |
fcmp/eq fr7, fr0 | |
bf wrong | |
# 1.0 * 0.0 = 0.0. | |
init | |
fmul fr0, fr1 | |
fcmp/eq fr7, fr1 | |
bf wrong | |
# 1.0 * 1.0 = 1.0. | |
init | |
fmul fr1, fr1 | |
fcmp/eq fr8, fr1 | |
bf wrong | |
# 2.0 * 1.0 = 2.0. | |
init | |
fmul fr2, fr1 | |
fcmp/eq fr2, fr1 | |
bf wrong | |
bra double | |
nop | |
wrong: | |
fail | |
.macro dinit | |
fldi0 fr0 | |
fldi1 fr2 | |
fldi1 fr4 | |
fadd fr4, fr4 | |
fldi0 fr8 | |
fldi1 fr10 | |
_s2d fr0, dr0 | |
_s2d fr2, dr2 | |
_s2d fr4, dr4 | |
_s2d fr8, dr8 | |
_s2d fr10, dr10 | |
.endm | |
double: | |
# 0.0 * 0.0 = 0.0. | |
dinit | |
_setpr | |
fmul dr0, dr0 | |
fcmp/eq dr8, dr0 | |
bf wrong | |
_clrpr | |
# 0.0 * 1.0 = 0.0. | |
dinit | |
_setpr | |
fmul dr2, dr0 | |
fcmp/eq dr8, dr0 | |
bf wrong2 | |
_clrpr | |
# 1.0 * 0.0 = 0.0. | |
dinit | |
_setpr | |
fmul dr0, dr2 | |
fcmp/eq dr8, dr2 | |
bf wrong2 | |
_clrpr | |
bra next | |
nop | |
wrong2: | |
fail | |
next: | |
# 1.0 * 1.0 = 1.0. | |
dinit | |
_setpr | |
fmul dr2, dr2 | |
fcmp/eq dr10, dr2 | |
bf wrong3 | |
_clrpr | |
# 2.0 * 1.0 = 2.0. | |
dinit | |
_setpr | |
fmul dr4, dr2 | |
fcmp/eq dr4, dr2 | |
bf wrong3 | |
_clrpr | |
okay: | |
pass | |
wrong3: | |
fail |