vmulq_v.in
6.62 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
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
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;