vmu3.in
6.59 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
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; ;;
;; 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