• 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: "sub2.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: sub2.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              sub2.64 v0
35              movi.64 v0, %s
36              cmp.64 v0
37        description: Check sub2.64 with zero and various values.
38        cases:
39          - values:
40              - "0"
41              - "0"
42          - values:
43              - "1"
44              - "0xFFFFFFFFFFFFFFFF"
45          - values:
46              - "-1"
47              - "1"
48          - values:
49              - "0x7FFFFFFFFFFFFFFF"
50              - "0x8000000000000001"
51          - values:
52              - "-0x7FFFFFFFFFFFFFFF"
53              - "0x7FFFFFFFFFFFFFFF"
54          - values:
55              - "0x8000000000000000"
56              - "0x8000000000000000"
57            tags: ["clang_release_sanitizer"]
58            bugid: ['966']
59          - values:
60              - "-0x8000000000000000"
61              - "0x8000000000000000"
62            tags: ["clang_release_sanitizer"]
63            bugid: ['966']
64          - values:
65              - "0xFFFFFFFFFFFFFFFF"
66              - "1"
67          - values:
68              - "-0xFFFFFFFFFFFFFFFF"
69              - "0xFFFFFFFFFFFFFFFF"
70
71      - file-name: "op_vs_8_pone"
72        isa:
73          instructions:
74            - sig: sub2.64 v:in:i64
75              acc: inout:i64
76              format: [op_v_8]
77        code-template: |
78          #
79              ldai.64 1
80              movi.64 v0, %s
81              sub2.64 v0
82              movi.64 v0, %s
83              cmp.64 v0
84        description: Check sub2.64 with +1 and various values.
85        cases:
86          - values:
87              - "0"
88              - "1"
89          - values:
90              - "1"
91              - "0"
92          - values:
93              - "-1"
94              - "2"
95          - values:
96              - "0x7FFFFFFFFFFFFFFF"
97              - "0x8000000000000002"
98          - values:
99              - "-0x7FFFFFFFFFFFFFFF"
100              - "0x8000000000000000"
101            tags: ["clang_release_sanitizer"]
102            bugid: ['966']
103          - values:
104              - "0x8000000000000000"
105              - "0x8000000000000001"
106            tags: ["clang_release_sanitizer"]
107            bugid: ['966']
108          - values:
109              - "-0x8000000000000000"
110              - "0x8000000000000001"
111            tags: ["clang_release_sanitizer"]
112            bugid: ['966']
113          - values:
114              - "0xFFFFFFFFFFFFFFFF"
115              - "2"
116          - values:
117              - "-0xFFFFFFFFFFFFFFFF"
118              - "0"
119      - file-name: "op_vs_8_none"
120        isa:
121          instructions:
122            - sig: sub2.64 v:in:i64
123              acc: inout:i64
124              format: [op_v_8]
125        code-template: |
126          #
127              ldai.64 -1
128              movi.64 v0, %s
129              sub2.64 v0
130              movi.64 v0, %s
131              cmp.64 v0
132        description: Check sub2.64 with -1 and various values.
133        cases:
134          - values:
135              - "0"
136              - "-1"
137          - values:
138              - "1"
139              - "-2"
140          - values:
141              - "-1"
142              - "0"
143          - values:
144              - "0x7FFFFFFFFFFFFFFF"
145              - "0x8000000000000000"
146          - values:
147              - "-0x7FFFFFFFFFFFFFFF"
148              - "0x7FFFFFFFFFFFFFFE"
149          - values:
150              - "0x8000000000000000"
151              - "0x7FFFFFFFFFFFFFFF"
152          - values:
153              - "-0x8000000000000000"
154              - "0x7FFFFFFFFFFFFFFF"
155          - values:
156              - "0xFFFFFFFFFFFFFFFF"
157              - "0"
158          - values:
159              - "-0xFFFFFFFFFFFFFFFF"
160              - "0xFFFFFFFFFFFFFFFE"
161      - file-name: "op_vs_8_pmax"
162        isa:
163          instructions:
164            - sig: sub2.64 v:in:i64
165              acc: inout:i64
166              format: [op_v_8]
167        code-template: |
168          #
169              ldai.64 0x7FFFFFFFFFFFFFFF
170              movi.64 v0, %s
171              sub2.64 v0
172              movi.64 v0, %s
173              cmp.64 v0
174        description: Check sub2.64 with +max and various values.
175        cases:
176          - values:
177              - "0"
178              - "0x7FFFFFFFFFFFFFFF"
179          - values:
180              - "1"
181              - "0x7FFFFFFFFFFFFFFE"
182          - values:
183              - "-1"
184              - "0x8000000000000000"
185            tags: ["clang_release_sanitizer"]
186            bugid: ['966']
187          - values:
188              - "0x7FFFFFFFFFFFFFFF"
189              - "0"
190          - values:
191              - "-0x7FFFFFFFFFFFFFFF"
192              - "0xFFFFFFFFFFFFFFFE"
193            tags: ["clang_release_sanitizer"]
194            bugid: ['966']
195          - values:
196              - "0x8000000000000000"
197              - "0xFFFFFFFFFFFFFFFF"
198            tags: ["clang_release_sanitizer"]
199            bugid: ['966']
200          - values:
201              - "-0x8000000000000000"
202              - "0xFFFFFFFFFFFFFFFF"
203            tags: ["clang_release_sanitizer"]
204            bugid: ['966']
205          - values:
206              - "0xFFFFFFFFFFFFFFFF"
207              - "0x8000000000000000"
208            tags: ["clang_release_sanitizer"]
209            bugid: ['966']
210          - values:
211              - "-0xFFFFFFFFFFFFFFFF"
212              - "0x7FFFFFFFFFFFFFFE"
213
214      - file-name: "op_vs_8_nmax"
215        isa:
216          instructions:
217            - sig: sub2.64 v:in:i64
218              acc: inout:i64
219              format: [op_v_8]
220        code-template: |
221          #
222              ldai.64 -0x8000000000000000
223              movi.64 v0, %s
224              sub2.64 v0
225              movi.64 v0, %s
226              cmp.64 v0
227        description: Check sub2.64 with -max and various values.
228        cases:
229          - values:
230              - "0"
231              - "0x8000000000000000"
232          - values:
233              - "1"
234              - "0x7FFFFFFFFFFFFFFF"
235            tags: ["clang_release_sanitizer"]
236            bugid: ['966']
237          - values:
238              - "-1"
239              - "0x8000000000000001"
240          - values:
241              - "0x7FFFFFFFFFFFFFFF"
242              - "1"
243            tags: ["clang_release_sanitizer"]
244            bugid: ['966']
245          - values:
246              - "-0x7FFFFFFFFFFFFFFF"
247              - "0xFFFFFFFFFFFFFFFF"
248          - values:
249              - "0x8000000000000000"
250              - "0"
251          - values:
252              - "-0x8000000000000000"
253              - "0"
254          - values:
255              - "0xFFFFFFFFFFFFFFFF"
256              - "0x8000000000000001"
257          - values:
258              - "-0xFFFFFFFFFFFFFFFF"
259              - "0x7FFFFFFFFFFFFFFF"
260            tags: ["clang_release_sanitizer"]
261            bugid: ['966']
262
263      - file-name: "vals"
264        isa:
265          instructions:
266            - sig: sub2.64 v:in:i64
267              acc: inout:i64
268              format: [op_v_8]
269        code-template: |
270          #
271              ldai.64 %s
272              movi.64 v0, %s
273              sub2.64 v0
274              movi.64 v0, %s
275              cmp.64 v0
276        description: Check sub2.64 with various values.
277        tags: ['tsan']
278        cases:
279          - values:
280              - "0xCCF3DD187138D07E"
281              - "0x35AC263B7B8703C4"
282              - "0x9747B6DCF5B1CCBA"
283          - values:
284              - "0xD5F9EA52A84399E4"
285              - "0x6883F597ADDC08E1"
286              - "0x6D75F4BAFA679103"
287            tags: ["clang_release_sanitizer"]
288            bugid: ['966']
289          - values:
290              - "0x2A79F082FFB71130"
291              - "0x6DEE3B3E2F2DEAAE"
292              - "0xBC8BB544D0892682"
293          - values:
294              - "0x74502029EFFFAB7E"
295              - "0x233BE3208D8CCF83"
296              - "0x51143D096272DBFB"
297          - values:
298              - "0xF7D7013B0725FBC0"
299              - "0x3FD5EB0EB9786326"
300              - "0xB801162C4DAD989A"
301          - values:
302              - "0xB779A757B3FD4653"
303              - "0xD691F722BC859450"
304              - "0xE0E7B034F777B203"
305          - values:
306              - "0xA6F57DD074EAAC42"
307              - "0xB4725C193D93AB85"
308              - "0xF28321B7375700BD"
309          - values:
310              - "0x1C870CC1E446CF6D"
311              - "0xED7F524E5F2991DE"
312              - "0x2F07BA73851D3D8F"
313          - values:
314              - "0x38118AA197B1FAB9"
315              - "0xC7147EFF6911DD63"
316              - "0x70FD0BA22EA01D56"
317          - values:
318              - "0x24DDD5A31111F41C"
319              - "0x8CCCF02B129681BE"
320              - "0x9810E577FE7B725E"
321            tags: ["clang_release_sanitizer"]
322            bugid: ['966']
323
324      - file-name: "regs"
325        isa:
326          instructions:
327            - sig: sub2.64 v:in:i64
328              acc: inout:i64
329              format: [op_v_8]
330        runner-options: ['compile-only']
331        code-template: |
332          #
333              sub2.64 %s
334        check-type: none
335        description: Check sub2.64 with various register numbers.
336        cases:
337          - values:
338            - "v255"
339          - values:
340              - "v256"
341            runner-options: ['compile-failure']
342
343      - file-name: "type"
344        tags: ["verifier"]
345        bugid: ['966', '964']
346        isa:
347          instructions:
348            - sig: sub2.64 v:in:i64
349              acc: inout:i64
350              format: [op_v_8]
351          verification:
352            - acc_type
353            - v1_type
354        runner-options: ['verifier-failure', 'verifier-debug-config']
355        code-template: |
356          #
357              %s
358              %s
359              sub2.64 v0
360              ldai 0
361        check-type: no-check
362        description: Check sub2.64 with incorrect accumulator and register types.
363        cases:
364          - values:
365              - "lda.null"
366              - "movi v0, 0"
367          - values:
368              - "ldai 0 "
369              - "mov.null v0"
370          - values:
371              - "lda.null"
372              - "mov.null v0"
373