• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright (c) 2021 Huawei Device Co., Ltd.
2# Licensed under the Apache License, Version 2.0 (the "License");
3# you may not use this file except in compliance with the License.
4# You may obtain a copy of the License at
5#
6# http://www.apache.org/licenses/LICENSE-2.0
7#
8# Unless required by applicable law or agreed to in writing, software
9# distributed under the License is distributed on an "AS IS" BASIS,
10# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11# See the License for the specific language governing permissions and
12# limitations under the License.
13
14definitions: []
15tests:
16  - file-name: "mul2.64"
17    isa:
18      title: Two address binary operation on accumulator
19      description: >
20        Perform specified binary operation on accumulator and register and store result into accumulator
21      exceptions:
22        - x_none
23    commands:
24      - file-name: "op_vs_8_zero"
25        isa:
26          instructions:
27            - sig: mul2.64 v:in:i64
28              acc: inout:i64
29              format: [op_v_8]
30        code-template: |
31          #
32              ldai.64 0
33              movi.64 v0, %s
34              mul2.64 v0
35              movi.64 v0, 0
36              cmp.64 v0
37        description: Check mul2.64 with zero and various values.
38        cases:
39          - values:
40              - "0"
41          - values:
42              - "1"
43          - values:
44              - "-1"
45          - values:
46              - "0x7FFFFFFFFFFFFFFF"
47          - values:
48              - "0x8000000000000000"
49          - values:
50              - "-0x7FFFFFFFFFFFFFFF"
51          - values:
52              - "-0x8000000000000000"
53          - values:
54              - "0xFFFFFFFFFFFFFFFF"
55          - values:
56              - "-0xFFFFFFFFFFFFFFFF"
57
58      - file-name: "op_vs_8_pone"
59        isa:
60          instructions:
61            - sig: mul2.64 v:in:i64
62              acc: inout:i64
63              format: [op_v_8]
64        code-template: |
65          #
66              ldai.64 1
67              movi.64 v0, %s
68              mul2.64 v0
69              movi.64 v0, %s
70              cmp.64 v0
71        description: Check mul2.64 with +1 and various values.
72        cases:
73          - values:
74              - "0"
75              - "0"
76          - values:
77              - "1"
78              - "1"
79          - values:
80              - "-1"
81              - "-1"
82          - values:
83              - "0x7FFFFFFFFFFFFFFF"
84              - "0x7FFFFFFFFFFFFFFF"
85          - values:
86              - "0x8000000000000000"
87              - "0x8000000000000000"
88          - values:
89              - "-0x7FFFFFFFFFFFFFFF"
90              - "-0x7FFFFFFFFFFFFFFF"
91          - values:
92              - "-0x8000000000000000"
93              - "-0x8000000000000000"
94          - values:
95              - "0xFFFFFFFFFFFFFFFF"
96              - "0xFFFFFFFFFFFFFFFF"
97          - values:
98              - "-0xFFFFFFFFFFFFFFFF"
99              - "-0xFFFFFFFFFFFFFFFF"
100      - file-name: "op_vs_8_none"
101        isa:
102          instructions:
103            - sig: mul2.64 v:in:i64
104              acc: inout:i64
105              format: [op_v_8]
106        code-template: |
107          #
108              ldai.64 -1
109              movi.64 v0, %s
110              mul2.64 v0
111              movi.64 v0, %s
112              cmp.64 v0
113        description: Check mul2.64 with -1 and various values.
114        cases:
115          - values:
116              - "0"
117              - "0"
118          - values:
119              - "1"
120              - "-1"
121          - values:
122              - "-1"
123              - "1"
124          - values:
125              - "0x7FFFFFFFFFFFFFFF"
126              - "-0x7FFFFFFFFFFFFFFF"
127          - values:
128              - "0x8000000000000000"
129              - "0x8000000000000000"
130            tags: ["clang_release_sanitizer"]
131            bugid: ['966']
132          - values:
133              - "-0x7FFFFFFFFFFFFFFF"
134              - "0x7FFFFFFFFFFFFFFF"
135          - values:
136              - "-0x8000000000000000"
137              - "0x8000000000000000"
138            tags: ["clang_release_sanitizer"]
139            bugid: ['966']
140          - values:
141              - "0xFFFFFFFFFFFFFFFF"
142              - "1"
143          - values:
144              - "-0xFFFFFFFFFFFFFFFF"
145              - "-1"
146      - file-name: "op_vs_8_pmax"
147        isa:
148          instructions:
149            - sig: mul2.64 v:in:i64
150              acc: inout:i64
151              format: [op_v_8]
152        code-template: |
153          #
154              ldai.64 0x7FFFFFFFFFFFFFFF
155              movi.64 v0, %s
156              mul2.64 v0
157              movi.64 v0, %s
158              cmp.64 v0
159        description: Check mul2.64 with +max and various values.
160        cases:
161          - values:
162              - "0"
163              - "0"
164          - values:
165              - "1"
166              - "0x7FFFFFFFFFFFFFFF"
167          - values:
168              - "-1"
169              - "0x8000000000000001"
170          - values:
171              - "0x7FFFFFFFFFFFFFFF"
172              - "1"
173            tags: ["clang_release_sanitizer"]
174            bugid: ['966']
175          - values:
176              - "-0x7FFFFFFFFFFFFFFF"
177              - "-1"
178            tags: ["clang_release_sanitizer"]
179            bugid: ['966']
180          - values:
181              - "0x8000000000000000"
182              - "0x8000000000000000"
183            tags: ["clang_release_sanitizer"]
184            bugid: ['966']
185          - values:
186              - "-0x8000000000000000"
187              - "0x8000000000000000"
188            tags: ["clang_release_sanitizer"]
189            bugid: ['966']
190          - values:
191              - "0xFFFFFFFFFFFFFFFF"
192              - "0x8000000000000001"
193          - values:
194              - "-0xFFFFFFFFFFFFFFFF"
195              - "0x7FFFFFFFFFFFFFFF"
196
197      - file-name: "op_vs_8_nmax"
198        isa:
199          instructions:
200            - sig: mul2.64 v:in:i64
201              acc: inout:i64
202              format: [op_v_8]
203        code-template: |
204          #
205              ldai.64 -0x8000000000000000
206              movi.64 v0, %s
207              mul2.64 v0
208              movi.64 v0, %s
209              cmp.64 v0
210        description: Check mul2.64 with -max and various values.
211        cases:
212          - values:
213              - "0"
214              - "0"
215          - values:
216              - "1"
217              - "0x8000000000000000"
218          - values:
219              - "-1"
220              - "0x8000000000000000"
221            tags: ["clang_release_sanitizer"]
222            bugid: ['966']
223          - values:
224              - "0x7FFFFFFFFFFFFFFF"
225              - "0x8000000000000000"
226            tags: ["clang_release_sanitizer"]
227            bugid: ['966']
228          - values:
229              - "-0x7FFFFFFFFFFFFFFF"
230              - "0x8000000000000000"
231            tags: ["clang_release_sanitizer"]
232            bugid: ['966']
233          - values:
234              - "0x8000000000000000"
235              - "0x0"
236            tags: ["clang_release_sanitizer"]
237            bugid: ['966']
238          - values:
239              - "-0x8000000000000000"
240              - "0x0"
241            tags: ["clang_release_sanitizer"]
242            bugid: ['966']
243          - values:
244              - "0xFFFFFFFFFFFFFFFF"
245              - "0x8000000000000000"
246            tags: ["clang_release_sanitizer"]
247            bugid: ['966']
248          - values:
249              - "-0xFFFFFFFFFFFFFFFF"
250              - "0x8000000000000000"
251
252      - file-name: "vals"
253        tags: ['clang_release_sanitizer', 'tsan']
254        bugid: ['966']
255        isa:
256          instructions:
257            - sig: mul2.64 v:in:i64
258              acc: inout:i64
259              format: [op_v_8]
260        code-template: |
261          #
262              ldai.64 %s
263              movi.64 v0, %s
264              mul2.64 v0
265              movi.64 v0, %s
266              cmp.64 v0
267        description: Check mul2.64 with various values.
268        cases:
269          - values:
270              - "0x5C754A598000B1C9"
271              - "0x2CA2740976B63739"
272              - "0xC37F6EEFB13FC4C1"
273          - values:
274              - "0xDAB472ECDA737CC"
275              - "0x79F9DF504809677A"
276              - "0xB708275E9F4FAB38"
277          - values:
278              - "0xA31412BCF764575A"
279              - "0x5EC2792725427E87"
280              - "0x610F049E601C5C76"
281          - values:
282              - "0x84421CD84B625393"
283              - "0x40044033EFB99E4E"
284              - "0x8868F4CB49C530CA"
285          - values:
286              - "0xA58F0D0DF420A8B1"
287              - "0xA34242EE859F28E1"
288              - "0xCAC0B5E365FEEB91"
289          - values:
290              - "0x4BBB4B2F1563FC08"
291              - "0x600DA22C70BE6B5F"
292              - "0x884F94424861DEF8"
293          - values:
294              - "0x6342EE9A357EE2E0"
295              - "0x15E083DEF5CF6F86"
296              - "0xB482D0E3D7E9E140"
297          - values:
298              - "0xA573BE2E87C4FC6A"
299              - "0x7591429F66EEAF31"
300              - "0xA9FA05428BCCC64A"
301          - values:
302              - "0xD2C4E8374CF2FF68"
303              - "0xAB2AE1D3AC6A8E1"
304              - "0x211893B1339EBA68"
305          - values:
306              - "0x67AA822AEB637157"
307              - "0xC8E67E7B83C001DB"
308              - "0xC6BE3A0447C34C6D"
309
310      - file-name: "regs"
311        isa:
312          instructions:
313            - sig: mul2.64 v:in:i64
314              acc: inout:i64
315              format: [op_v_8]
316        runner-options: ['compile-only']
317        code-template: |
318          #
319              mul2.64 %s
320        check-type: none
321        description: Check mul2.64 with various register numbers.
322        cases:
323          - values:
324              - "v255"
325          - values:
326              - "v256"
327            runner-options: ['compile-failure']
328
329      - file-name: "type"
330        tags: ["verifier"]
331        bugid: ['966', '964']
332        isa:
333          instructions:
334            - sig: mul2.64 v:in:i64
335              acc: inout:i64
336              format: [op_v_8]
337          verification:
338            - acc_type
339            - v1_type
340        runner-options: ['verifier-failure', 'verifier-debug-config']
341        code-template: |
342          #
343              %s
344              %s
345              mul2.64 v0
346              ldai.64 0
347        check-type: no-check
348        description: Check mul2.64 with incorrect accumulator ang register type.
349        cases:
350          - values:
351              - "lda.null"
352              - "movi.64 v0, 0"
353          - values:
354              - "ldai.64 0 "
355              - "mov.null v0"
356          - values:
357              - "lda.null"
358              - "mov.null v0"
359