vmulq_v.in 6.62 KB
prog_name  vmulq_v
;;;;;;;;;;;;;;;;;;;
;;
reg_assign vS         $v0
reg_assign vT         $v1
reg_assign vD         $v2
reg_assign vDexp      $v3
reg_assign vTemp      $v4
reg_assign vAccL      $v5
reg_assign vAccM      $v6
reg_assign vAccH      $v7
reg_assign vAccLexp   $v8
reg_assign vAccMexp   $v9
reg_assign vAccHexp   $v10
reg_assign v4000      $v11
reg_assign v0001      $v12
;
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Positive result. No overflow/underflow.  
start
op      vmulq
element vector

vS    0x0000 0x0001 0x0001 0x00ab 0x7fff 0x0002 0x7ffe 0x00aa
vT    0x0000 0x0020 0x07ff 0x00bc 0x0001 0x7ffe 0x0001 0x0055

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
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
start
op      vmulq
element vector

vS    0x00ff 0x000f 0x0010 0x0abc 0x00ef 0x00a9 0x0101 0x00cc
vT    0x00ff 0x0fff 0x0567 0x000e 0x0092 0x00f3 0x00f0 0x00aa

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
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
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
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
reg_assign vS         $v10
reg_assign vT         $v21
reg_assign vD         $v12
reg_assign vDexp      $v23
reg_assign vTemp      $v14
reg_assign vAccL      $v25
reg_assign vAccM      $v16
reg_assign vAccH      $v27
reg_assign vAccLexp   $v18
reg_assign vAccMexp   $v29
reg_assign vAccHexp   $v30
reg_assign v4000      $v31
reg_assign v0001      $v2
;
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Negative result. No overflow/underflow.  
start
op      vmulq
element vector

vS    0xffff 0x8000 0x0001 0xffab 0x0020 0x7fff 0xfffe 0x0012
vT    0x0000 0x0001 0x8000 0x00bc 0xffff 0xffff 0x7fe0 0xfecd

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
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
start
op      vmulq
element vector

vS    0xffff 0xff01 0xfdff 0x0123 0x001f 0xfffe 0xfff0 0x0056
vT    0x001f 0x00ff 0x0034 0xfff1 0xffff 0x003f 0x00ff 0xff32

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
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
start
op      vmulq
element vector

vS    0x05a5 0xffd0 0x00cd 0xfff9 0xbeef 0x0002 0xbabe 0xdead
vT    0xffef 0x0078 0xff12 0x0fed 0x0001 0xcafe 0x0003 0x0004

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
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
reg_assign vS         $v1
reg_assign vT         $v3
reg_assign vD         $v5
reg_assign vDexp      $v7
reg_assign vTemp      $v9
reg_assign vAccL      $v11
reg_assign vAccM      $v12
reg_assign vAccH      $v14
reg_assign vAccLexp   $v16
reg_assign vAccMexp   $v18
reg_assign vAccHexp   $v20
reg_assign v4000      $v22
reg_assign v0001      $v24
;
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Positive result. Overflow
start
op      vmulq
element vector

vS    0x2345 0x3456 0x4567 0x4000 0x4000 0x7fff 0x1234 0x789a
vT    0x5432 0x6543 0x7654 0x2000 0x4000 0x7fff 0x5678 0x6789

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
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
start
op      vmulq
element vector

vS    0x7654 0x7efd 0x4ea5 0x1f89 0x3efa 0x59a2 0x1726 0x7263
vT    0x4321 0x6fed 0x7a12 0x4f09 0x56af 0x1773 0x4e32 0x16af

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
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
start
op      vmulq
element vector

vS    0x4000 0x0008 0x4000 0x0020 0x4000 0x0080 0x4000 0x0200
vT    0x0004 0x4000 0x0010 0x4000 0x0040 0x4000 0x0100 0x4000

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
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
start
op      vmulq
element vector

vS    0x0400 0x4000 0x1000 0x4000 0x4000 0x7fff 0x1234 0x789a
vT    0x4000 0x0800 0x4000 0x2000 0x4000 0x7fff 0x5678 0x6789

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
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
reg_assign vS         $v9
reg_assign vT         $v8
reg_assign vD         $v7
reg_assign vDexp      $v6
reg_assign vTemp      $v5
reg_assign vAccL      $v4
reg_assign vAccM      $v3
reg_assign vAccH      $v2
reg_assign vAccLexp   $v1
reg_assign vAccMexp   $v21
reg_assign vAccHexp   $v22
reg_assign v4000      $v23
reg_assign v0001      $v29
;
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Negative result. Underflow
start
op      vmulq
element vector

vS    0x8765 0x8182 0xdead 0xabcd 0x8000 0x8001 0x9827 0xf000
vT    0x9876 0xabcd 0xbeef 0x9abc 0x8000 0x8001 0xe392 0x8ade

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
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
start
op      vmulq
element vector

vS    0x8654 0xdefd 0xbe35 0xcf09 0x9e1a 0xb1a2 0x8706 0xf213
vT    0xe321 0x9fed 0xab1f 0x8f19 0x865f 0xaf73 0x9ef2 0x964f

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
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;