binutils-gdb/sim/testsuite/frv/fr400/smsss.cgs
Mike Frysinger 1368b914e9 sim: testsuite: flatten tree
Now that all port tests live under testsuite/sim/*/, and none live
in testsuite/ directly, flatten the structure by moving all of the
dirs under testsuite/sim/ to testsuite/ directly.

We need to stop passing --tool to dejagnu so that it searches all
dirs and not just ones that start with "sim".  Since we have no
other dirs in this tree, and no plans to add any, should be fine.
2021-01-15 19:18:34 -05:00

355 lines
9.7 KiB
Plaintext

# frv testcase for smsss $GRi,$GRj
# mach: fr405 fr450
.include "../testutils.inc"
start
.global smsss
smsss1:
; Positive operands
set_gr_immed 3,gr7 ; multiply small numbers
set_gr_immed 2,gr8
set_spr_immed 0,iacc0h
set_spr_immed 7,iacc0l
smsss gr7,gr8
test_gr_immed 3,gr7
test_gr_immed 2,gr8
test_spr_immed 1,iacc0l ; result 7-3*2
test_spr_immed 0,iacc0h
smsss2:
set_gr_immed 1,gr7 ; multiply by 1
set_gr_immed 2,gr8
set_spr_immed 0,iacc0h
set_spr_immed 3,iacc0l
smsss gr7,gr8
test_gr_immed 1,gr7
test_gr_immed 2,gr8
test_spr_immed 1,iacc0l ; result 3-1*2
test_spr_immed 0,iacc0h
smsss3:
set_gr_immed 2,gr7 ; multiply by 1
set_gr_immed 1,gr8
set_spr_immed 0,iacc0h
set_spr_immed 3,iacc0l
smsss gr7,gr8
test_gr_immed 1,gr8
test_gr_immed 2,gr7
test_spr_immed 1,iacc0l ; result 3-2*1
test_spr_immed 0,iacc0h
smsss4:
set_gr_immed 0,gr7 ; multiply by 0
set_gr_immed 2,gr8
set_spr_immed 0,iacc0h
set_spr_immed 1,iacc0l
smsss gr7,gr8
test_gr_immed 2,gr8
test_gr_immed 0,gr7
test_spr_immed 1,iacc0l ; result 1-0*2
test_spr_immed 0,iacc0h
smsss5:
set_gr_immed 2,gr7 ; multiply by 0
set_gr_immed 0,gr8
set_spr_immed 0,iacc0h
set_spr_immed 1,iacc0l
smsss gr7,gr8
test_gr_immed 0,gr8
test_gr_immed 2,gr7
test_spr_immed 1,iacc0l ; result 1-2*0
test_spr_immed 0,iacc0h
smsss6:
set_gr_limmed 0x3fff,0xffff,gr7 ; 31 bit result
set_gr_immed 2,gr8
set_spr_immed -1,iacc0h
set_spr_immed -1,iacc0l
smsss gr7,gr8
test_gr_immed 2,gr8
test_gr_limmed 0x3fff,0xffff,gr7
test_spr_limmed 0x8000,0x0001,iacc0l ; -1-3fffffff*2
test_spr_immed -1,iacc0h
smsss7:
set_gr_limmed 0x4000,0x0000,gr7 ; 32 bit result
set_gr_immed 2,gr8
set_spr_immed -1,iacc0h
set_spr_limmed 0x8000,0x0001,iacc0l
smsss gr7,gr8
test_gr_immed 2,gr8
test_gr_limmed 0x4000,0x0000,gr7
test_spr_immed 1,iacc0l ; ffffffff80000001-40000000*2
test_spr_immed -1,iacc0h
smsss8:
set_gr_limmed 0x4000,0x0000,gr7 ; 33 bit result
set_gr_immed 4,gr8
set_spr_immed -1,iacc0h
set_spr_immed 1,iacc0l
smsss gr7,gr8
test_gr_immed 4,gr8
test_gr_limmed 0x4000,0x0000,gr7
test_spr_immed 1,iacc0l ; ffffffff00000001-40000000*4
test_spr_immed -2,iacc0h
smsss9:
set_gr_limmed 0x7fff,0xffff,gr7 ; max positive result
set_gr_limmed 0x7fff,0xffff,gr8
set_spr_limmed 0x7fff,0xffff,iacc0h
set_spr_immed -1,iacc0l
smsss gr7,gr8
test_gr_limmed 0x7fff,0xffff,gr8
test_gr_limmed 0x7fff,0xffff,gr7
test_spr_limmed 0xffff,0xfffe,iacc0l ; 7fffffffffffffff-7fffffff*7fffffff
test_spr_limmed 0x4000,0x0000,iacc0h
smsss10:
; Mixed operands
set_gr_immed -3,gr7 ; multiply small numbers
set_gr_immed 2,gr8
set_spr_immed -1,iacc0h
set_spr_immed -5,iacc0l
smsss gr7,gr8
test_gr_immed 2,gr8
test_gr_immed -3,gr7
test_spr_immed 1,iacc0l ; -5-(-3*2)
test_spr_immed 0,iacc0h
smsss11:
set_gr_immed 3,gr7 ; multiply small numbers
set_gr_immed -2,gr8
set_spr_immed -1,iacc0h
set_spr_immed -5,iacc0l
smsss gr7,gr8
test_gr_immed -2,gr8
test_gr_immed 3,gr7
test_spr_immed 1,iacc0l ; -5-(3*-2)
test_spr_immed 0,iacc0h
smsss12:
set_gr_immed 1,gr7 ; multiply by 1
set_gr_immed -2,gr8
set_spr_immed -1,iacc0h
set_spr_immed -1,iacc0l
smsss gr7,gr8
test_gr_immed -2,gr8
test_gr_immed 1,gr7
test_spr_immed 1,iacc0l ; -1-(1*-2)
test_spr_immed 0,iacc0h
smsss13:
set_gr_immed -2,gr7 ; multiply by 1
set_gr_immed 1,gr8
set_spr_immed -1,iacc0h
set_spr_immed -1,iacc0l
smsss gr7,gr8
test_gr_immed 1,gr8
test_gr_immed -2,gr7
test_spr_immed 1,iacc0l ; -1-(-2*1)
test_spr_immed 0,iacc0h
smsss14:
set_gr_immed 0,gr7 ; multiply by 0
set_gr_immed -2,gr8
set_spr_immed 0,iacc0h
set_spr_immed 1,iacc0l
smsss gr7,gr8
test_gr_immed -2,gr8
test_gr_immed 0,gr7
test_spr_immed 1,iacc0l ; 1-(0*-2)
test_spr_immed 0,iacc0h
smsss15:
set_gr_immed -2,gr7 ; multiply by 0
set_gr_immed 0,gr8
set_spr_immed 0,iacc0h
set_spr_immed 1,iacc0l
smsss gr7,gr8
test_gr_immed 0,gr8
test_gr_immed -2,gr7
test_spr_immed 1,iacc0l ; 1-(-2*0)
test_spr_immed 0,iacc0h
smsss16:
set_gr_limmed 0x2000,0x0000,gr7 ; 31 bit result
set_gr_immed -2,gr8
set_spr_immed 0,iacc0h
set_spr_limmed 0x3fff,0xffff,iacc0l
smsss gr7,gr8
test_gr_immed -2,gr8
test_gr_limmed 0x2000,0x0000,gr7
test_spr_limmed 0x7fff,0xffff,iacc0l
test_spr_immed 0,iacc0h ; 3fffffff-20000001*-2
smsss17:
set_gr_limmed 0x4000,0x0000,gr7 ; 32 bit result
set_gr_immed -2,gr8
set_spr_immed 0,iacc0h
set_spr_immed 1,iacc0l
smsss gr7,gr8
test_gr_immed -2,gr8
test_gr_limmed 0x4000,0x0000,gr7
test_spr_limmed 0x8000,0x0001,iacc0l ; 1-40000000*-2
test_spr_immed 0,iacc0h
smsss18:
set_gr_limmed 0x4000,0x0000,gr7 ; 32 bit result
set_gr_immed -2,gr8
set_spr_immed -1,iacc0h
set_spr_immed -1,iacc0l
smsss gr7,gr8
test_gr_immed -2,gr8
test_gr_limmed 0x4000,0x0000,gr7
test_spr_limmed 0x7fff,0xffff,iacc0l
test_spr_immed 0,iacc0h ; -1-40000000*-2
smsss19:
set_gr_limmed 0x4000,0x0000,gr7 ; 33 bit result
set_gr_immed -4,gr8
set_spr_immed 0,iacc0h
set_spr_immed 1,iacc0l
smsss gr7,gr8
test_gr_immed -4,gr8
test_gr_limmed 0x4000,0x0000,gr7
test_spr_immed 1,iacc0l ; 200000001-(40000000*-4)
test_spr_immed 1,iacc0h
smsss20:
set_gr_limmed 0x7fff,0xffff,gr7 ; max negative result
set_gr_limmed 0x7fff,0xffff,gr8
set_spr_limmed 0xbfff,0xffff,iacc0h
set_spr_limmed 0x0000,0x0001,iacc0l
smsss gr7,gr8
test_gr_limmed 0x7fff,0xffff,gr8
test_gr_limmed 0x7fff,0xffff,gr7
test_spr_immed 0,iacc0l ; bfffffff00000001-(7fffffff*7fffffff)
test_spr_limmed 0x8000,0x0000,iacc0h
smsss21:
; Negative operands
set_gr_immed -3,gr7 ; multiply small numbers
set_gr_immed -2,gr8
set_spr_immed 0,iacc0h
set_spr_immed 7,iacc0l
smsss gr7,gr8
test_gr_immed -2,gr8
test_gr_immed -3,gr7
test_spr_immed 1,iacc0l ; 7-(-3*-2)
test_spr_immed 0,iacc0h
smsss22:
set_gr_immed -1,gr7 ; multiply by 1
set_gr_immed -2,gr8
set_spr_immed 0,iacc0h
set_spr_immed 3,iacc0l
smsss gr7,gr8
test_gr_immed -2,gr8
test_gr_immed -1,gr7
test_spr_immed 1,iacc0l ; 3-(-1*-2)
test_spr_immed 0,iacc0h
smsss23:
set_gr_immed -2,gr7 ; multiply by 1
set_gr_immed -1,gr8
set_spr_immed 0,iacc0h
set_spr_immed 3,iacc0l
smsss gr7,gr8
test_gr_immed -1,gr8
test_gr_immed -2,gr7
test_spr_immed 1,iacc0l ; 3-(-2*-1)
test_spr_immed 0,iacc0h
smsss24:
set_gr_immed -32768,gr7 ; 31 bit result
set_gr_immed -32768,gr8
set_spr_immed 0,iacc0h
set_spr_limmed 0xbfff,0xffff,iacc0l
smsss gr7,gr8
test_gr_immed -32768,gr8
test_gr_immed -32768,gr7
test_spr_limmed 0x7fff,0xffff,iacc0l ; 7ffffffb-(-2*-2)
test_spr_immed 0,iacc0h
smsss25:
set_gr_immed 0xffff,gr7 ; 32 bit result
set_gr_immed 0xffff,gr8
set_spr_immed 1,iacc0h
set_spr_limmed 0xfffe,0x0000,iacc0l
smsss gr7,gr8
test_gr_immed 0xffff,gr8
test_gr_immed 0xffff,gr7
test_spr_limmed 0xffff,0xffff,iacc0l ; 1fffe0000-ffff*ffff
test_spr_immed 0,iacc0h
smsss26:
set_gr_limmed 0x0001,0x0000,gr7 ; 33 bit result
set_gr_limmed 0x0001,0x0000,gr8
set_spr_immed 2,iacc0h
set_spr_immed 1,iacc0l
smsss gr7,gr8
test_gr_limmed 0x0001,0x0000,gr8
test_gr_limmed 0x0001,0x0000,gr7
test_spr_immed 1,iacc0l ; 0x200000001-0x10000*0x10000
test_spr_immed 1,iacc0h
smsss27:
set_gr_immed -2,gr7 ; almost max positive result
set_gr_immed -2,gr8
set_spr_limmed 0x7fff,0xffff,iacc0h
set_spr_limmed 0xffff,0xffff,iacc0l
smsss gr7,gr8
test_gr_immed -2,gr8
test_gr_immed -2,gr7
test_spr_limmed 0xffff,0xfffb,iacc0l ; maxpos - (-2*-2)
test_spr_limmed 0x7fff,0xffff,iacc0h
smsss28:
set_gr_immed 0,gr7 ; max positive result
set_gr_immed 0,gr8
set_spr_limmed 0x7fff,0xffff,iacc0h
set_spr_limmed 0xffff,0xffff,iacc0l
smsss gr7,gr8
test_gr_immed 0,gr8
test_gr_immed 0,gr7
test_spr_limmed 0xffff,0xffff,iacc0l ; maxpos-(0*0)
test_spr_limmed 0x7fff,0xffff,iacc0h
smsss29:
set_gr_limmed 0x7fff,0xffff,gr7 ; not quite overflow (pos)
set_gr_limmed 0x8000,0x0000,gr8
set_spr_limmed 0x4000,0x0000,iacc0h
set_spr_limmed 0x7fff,0xffff,iacc0l
smsss gr7,gr8
test_gr_limmed 0x8000,0x0000,gr8
test_gr_limmed 0x7fff,0xffff,gr7
test_spr_limmed 0xffff,0xffff,iacc0l ; 400000007fffffff -
test_spr_limmed 0x7fff,0xffff,iacc0h ; 0x80000000*0x7fffffff
smsss30:
set_gr_limmed 0x7fff,0xffff,gr7 ; just barely overflow (pos)
set_gr_limmed 0x8000,0x0000,gr8
set_spr_limmed 0x4000,0x0000,iacc0h
set_spr_limmed 0x8000,0x0000,iacc0l
smsss gr7,gr8
test_gr_limmed 0x8000,0x0000,gr8
test_gr_limmed 0x7fff,0xffff,gr7
test_spr_limmed 0xffff,0xffff,iacc0l ; 4000000080000000 -
test_spr_limmed 0x7fff,0xffff,iacc0h ; 0x80000000*0x7fffffff
smsss31:
set_gr_limmed 0x7fff,0xffff,gr7 ; maximum overflow (pos)
set_gr_limmed 0x8000,0x0000,gr8
set_spr_limmed 0xffff,0xffff,iacc0l
set_spr_limmed 0x7fff,0xffff,iacc0h
smsss gr7,gr8
test_gr_limmed 0x8000,0x0000,gr8
test_gr_limmed 0x7fff,0xffff,gr7
test_spr_limmed 0xffff,0xffff,iacc0l ; 7fffffffffffffff -
test_spr_limmed 0x7fff,0xffff,iacc0h ; 80000000*80000000
smsss32:
set_gr_limmed 0x7fff,0xffff,gr7 ; not quite overflow (neg)
set_gr_limmed 0x7fff,0xffff,gr8
set_spr_immed 1,iacc0l
set_spr_limmed 0xbfff,0xffff,iacc0h
smsss gr7,gr8
test_gr_limmed 0x7fff,0xffff,gr8
test_gr_limmed 0x7fff,0xffff,gr7
test_spr_limmed 0x0000,0x0000,iacc0l ; bfffffff00000001 -
test_spr_limmed 0x8000,0x0000,iacc0h ; 0x7fffffff*0x7fffffff
smsss33:
set_gr_limmed 0x7fff,0xffff,gr7 ; just barely overflow (neg)
set_gr_limmed 0x7fff,0xffff,gr8
set_spr_immed 0,iacc0l
set_spr_limmed 0xbfff,0xffff,iacc0h
smsss gr7,gr8
test_gr_limmed 0x7fff,0xffff,gr8
test_gr_limmed 0x7fff,0xffff,gr7
test_spr_limmed 0x0000,0x0000,iacc0l ; 7fffffff*7fffffff+
test_spr_limmed 0x8000,0x0000,iacc0h ; bfffffff7fffffff
smsss34:
set_gr_limmed 0x7fff,0xffff,gr7 ; maximum overflow (neg)
set_gr_limmed 0x7fff,0xffff,gr8
set_spr_limmed 0x0000,0x0000,iacc0l
set_spr_limmed 0x8000,0x0000,iacc0h
smsss gr7,gr8
test_gr_limmed 0x7fff,0xffff,gr8
test_gr_limmed 0x7fff,0xffff,gr7
test_spr_limmed 0x0000,0x0000,iacc0l ; 8000000000000000-
test_spr_limmed 0x8000,0x0000,iacc0h ; 7fffffff*7fffffff+
pass