OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [gdb-7.1/] [sim/] [testsuite/] [sim/] [frv/] [fr400/] [smsss.cgs] - Rev 816

Go to most recent revision | Compare with Previous | Blame | View Log

# 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

Go to most recent revision | Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.