123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354 |
- # 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
|