vmu3.in 6.59 KB
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;							;;
;;  MULTIPLIER DATAPATH AND INSTRUCTION DECODE TEST:	;;
;;							;;
;;	VMACQ, VMULU, VMULQ, VMUDN, VMULF, VMUDM, VMUDL,;;
;;	VMUDHL, VMUDH, VMADN, VMADM, VMADHL, VMADL,	;;
;;	VMADH, VMACU, VMACF				;;
;;							;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
prog_name  vmu

reg_assign vS         $v26
reg_assign vT         $v27
reg_assign vD         $v28
reg_assign vDexp      $v29
reg_assign vTemp      $v30
reg_assign vAccL      $v31
reg_assign vAccM      $v0
reg_assign vAccH      $v3
reg_assign vAccLexp   $v6
reg_assign vAccMexp   $v9
reg_assign vAccHexp   $v12
reg_assign v4000      $v15
reg_assign v0001      $v18
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; VMULF
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; Slice0: (0001,7ffe)
;; Slice1: (0003,7ffc)
;; Slice2: (0007,7ff8)
;; Slice3: (000f,7ff0)
;; Slice4: (001f,7fe0)
;; Slice5: (003f,7fc0)
;; Slice6: (007f,7f80)
;; Slice7: (00ff,7f00)
;;
start
op      vmulf
element 3w

vS    0x0001 0x0003 0x0007 0x000f 0x001f 0x003f 0x007f 0x00ff
vT    0x7ffe 0x7ffc 0x7ff8 0x7ff0 0x7fe0 0x7fc0 0x7f80 0x7f00

vAccL 0x1111 0x2222 0x3333 0x4444 0x5555 0x6666 0x7777 0x8888
vAccM 0x9999 0xaaaa 0xbbbb 0xcccc 0xdddd 0xeeee 0xffff 0x0000
vAccH 0x1234 0x5678 0x9abc 0xdef0 0xfedc 0xba98 0x7654 0x3210

end
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; Slice0: (01ff,7e00)
;; Slice1: (03ff,7c00)
;; Slice2: (07ff,7800)
;; Slice3: (0fff,7000)
;; Slice4: (1fff,6000)
;; Slice5: (3fff,4000)
;; Slice6: (abcd,ef01)
;; Slice7: (1234,5678)
;;
start
op      vmulf
element 2h

vS    0x01ff 0x03ff 0x07ff 0x0fff 0x1fff 0x3fff 0xabcd 0x1234
vT    0x7e00 0x7c00 0x7800 0x7000 0x6000 0x4000 0xef01 0x5678

vAccL 0x1111 0x2222 0x3333 0x4444 0x5555 0x6666 0x7777 0x8888
vAccM 0x9999 0xaaaa 0xbbbb 0xcccc 0xdddd 0xeeee 0xffff 0x0000
vAccH 0x1234 0x5678 0x9abc 0xdef0 0xfedc 0xba98 0x7654 0x3210

end
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; Slice0: (1928,2736)
;; Slice1: (5647,3829)
;; Slice2: (feed,7123)
;; Slice3: (8123,6326)
;; Slice4: (1957,1959)
;; Slice5: (2001,2010)
;; Slice6: (1111,2222)
;; Slice7: (3333,4444)
;;
start
op      vmulf
element 1q

vS    0x1928 0x5647 0xfeed 0x8123 0x1957 0x2001 0x1111 0x3333
vT    0x2736 0x3829 0x7123 0x6326 0x1959 0x2010 0x2222 0x4444

vAccL 0x1111 0x2222 0x3333 0x4444 0x5555 0x6666 0x7777 0x8888
vAccM 0x9999 0xaaaa 0xbbbb 0xcccc 0xdddd 0xeeee 0xffff 0x0000
vAccH 0x1234 0x5678 0x9abc 0xdef0 0xfedc 0xba98 0x7654 0x3210

end
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; Slice0: (1,1)
;; Slice1: (0,1)
;; Slice2: (1,0)
;; Slice3: (1,ffff)
;; Slice4: (ffff,1)
;; Slice5: (8001,7fff)
;; Slice6: (7fff,8001)
;; Slice7: (8001,-7fff)
;;
start
op      vmulf
element vector

vS    0x0001 0x0000 0x0001 0x0001 0xffff 0x8001 0x7fff 0x8001
vT    0x0001 0x0001 0x0000 0xffff 0x0001 0x7fff 0x8001 0x8001

vAccL 0x1111 0x2222 0x3333 0x4444 0x5555 0x6666 0x7777 0x8888
vAccM 0x9999 0xaaaa 0xbbbb 0xcccc 0xdddd 0xeeee 0xffff 0x0000
vAccH 0x1234 0x5678 0x9abc 0xdef0 0xfedc 0xba98 0x7654 0x3210

end
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; VMACF
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; Slice0: (0001,7ffe)
;; Slice1: (0003,7ffc)
;; Slice2: (0007,7ff8)
;; Slice3: (000f,7ff0)
;; Slice4: (001f,7fe0)
;; Slice5: (003f,7fc0)
;; Slice6: (007f,7f80)
;; Slice7: (00ff,7f00)
;;
start
op      vmacf
element 5w

vS    0x0001 0x0003 0x0007 0x000f 0x001f 0x003f 0x007f 0x00ff
vT    0x7ffe 0x7ffc 0x7ff8 0x7ff0 0x7fe0 0x7fc0 0x7f80 0x7f00

vAccL 0x1111 0x2222 0x3333 0x4444 0x5555 0x6666 0x7777 0x8888
vAccM 0x9999 0xaaaa 0xbbbb 0xcccc 0xdddd 0xeeee 0xffff 0x0000
vAccH 0x1234 0x5678 0x9abc 0xdef0 0xfedc 0xba98 0x7654 0x3210

end
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; Slice0: (01ff,7e00)
;; Slice1: (03ff,7c00)
;; Slice2: (07ff,7800)
;; Slice3: (0fff,7000)
;; Slice4: (1fff,6000)
;; Slice5: (3fff,4000)
;; Slice6: (abcd,ef01)
;; Slice7: (1234,5678)
;;
start
op      vmacf
element 3h

vS    0x01ff 0x03ff 0x07ff 0x0fff 0x1fff 0x3fff 0xabcd 0x1234
vT    0x7e00 0x7c00 0x7800 0x7000 0x6000 0x4000 0xef01 0x5678

vAccL 0x1111 0x2222 0x3333 0x4444 0x5555 0x6666 0x7777 0x8888
vAccM 0x9999 0xaaaa 0xbbbb 0xcccc 0xdddd 0xeeee 0xffff 0x0000
vAccH 0x1234 0x5678 0x9abc 0xdef0 0xfedc 0xba98 0x7654 0x3210

end
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; Slice0: (1928,2736)
;; Slice1: (5647,3829)
;; Slice2: (feed,7123)
;; Slice3: (8123,6326)
;; Slice4: (1957,1959)
;; Slice5: (2001,2010)
;; Slice6: (1111,2222)
;; Slice7: (3333,4444)
;;
start
op      vmacf
element 0q

vS    0x1928 0x5647 0xfeed 0x8123 0x1957 0x2001 0x1111 0x3333
vT    0x2736 0x3829 0x7123 0x6326 0x1959 0x2010 0x2222 0x4444

vAccL 0x1111 0x2222 0x3333 0x4444 0x5555 0x6666 0x7777 0x8888
vAccM 0x9999 0xaaaa 0xbbbb 0xcccc 0xdddd 0xeeee 0xffff 0x0000
vAccH 0x1234 0x5678 0x9abc 0xdef0 0xfedc 0xba98 0x7654 0x3210

end
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; Slice0: (1,1)
;; Slice1: (0,1)
;; Slice2: (1,0)
;; Slice3: (1,ffff)
;; Slice4: (ffff,1)
;; Slice5: (8001,7fff)
;; Slice6: (7fff,8001)
;; Slice7: (8001,-7fff)
;;
start
op      vmacf
element vector

vS    0x0001 0x0000 0x0001 0x0001 0xffff 0x8001 0x7fff 0x8001
vT    0x0001 0x0001 0x0000 0xffff 0x0001 0x7fff 0x8001 0x8001

vAccL 0x1111 0x2222 0x3333 0x4444 0x5555 0x6666 0x7777 0x8888
vAccM 0x9999 0xaaaa 0xbbbb 0xcccc 0xdddd 0xeeee 0xffff 0x0000
vAccH 0x1234 0x5678 0x9abc 0xdef0 0xfedc 0xba98 0x7654 0x3210

end
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; VMULQ
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
start
op      vmulq
element vector

vS    0xffff 0x8001 0xfaaa 0xff82 0xfe87 0xfff2 0xf123 0xffdc
vT    0x8001 0xfffe 0xffef 0xff91 0xffe8 0xff00 0xfff4 0xffaa

vAccL 0x1111 0x2222 0x3333 0x4444 0x5555 0x6666 0x7777 0x8888
vAccM 0x9999 0xaaaa 0xbbbb 0xcccc 0xdddd 0xeeee 0xffff 0x0000
vAccH 0x1234 0x5678 0x9abc 0xdef0 0xfedc 0xba98 0x7654 0x3210

end
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; VMULQ
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Accumulator is Posive, low21 bits ==0, No Overlow
start
op      vmacq

vAccL 0x0000 0x0001 0x0002 0x0004 0x0008 0x0010 0x0020 0x0400
vAccM 0x0000 0x8000 0x4000 0x2000 0x1000 0x0800 0x0400 0x0200
vAccH 0x0001 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000

end
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
start
op      vmacq

vAccL 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000
vAccM 0xbf80 0xdf90 0x7fc0 0xffd0 0x0000 0x0010 0x0050 0x0080
vAccH 0xffff 0xffff 0xffff 0xfffe 0xffff 0xffff 0xffff 0xffff

end