# sh testcase for neg $rm, $rn -*- Asm -*- | |
# mach: all | |
# as: -isa=shcompact | |
# ld: -m shelf32 | |
.include "compact/testutils.inc" | |
.macro signbit sign | |
shlr16 r1 | |
shlr8 r1 | |
shlr r1 | |
shlr r1 | |
shlr r1 | |
shlr r1 | |
shlr r1 | |
shlr r1 | |
shlr r1 | |
assert r1, \sign | |
.endm | |
start | |
.global neg | |
neg: | |
mov #0, r0 | |
neg r0, r1 | |
signbit #0 | |
mov #42, r0 | |
neg r0, r1 | |
signbit #1 | |
mov #0, r0 | |
or #25, r0 | |
neg r0, r1 | |
signbit #1 | |
# neg(0) is 0. | |
mov #0, r0 | |
neg r0, r1 | |
signbit #0 | |
# neg(neg(x)) = x. | |
mov #42, r0 | |
neg r0, r1 | |
signbit #1 | |
mov #42, r0 | |
neg r0, r2 | |
neg r2, r1 | |
signbit #0 | |
okay: | |
pass | |
wrong: | |
fail |