• 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: "add2.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: add2.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              add2.64 v0
35              movi.64 v0, %s
36              cmp.64 v0
37        description: Check add2.64 with zero and various values.
38        cases:
39          - values:
40              - "0"
41              - "0"
42          - values:
43              - "1"
44              - "1"
45          - values:
46              - "-1"
47              - "-1"
48          - values:
49              - "0x7FFFFFFFFFFFFFFF"
50              - "0x7FFFFFFFFFFFFFFF"
51          - values:
52              - "0x8000000000000000"
53              - "0x8000000000000000"
54          - values:
55              - "-0x7FFFFFFFFFFFFFFF"
56              - "-0x7FFFFFFFFFFFFFFF"
57          - values:
58              - "-0x8000000000000000"
59              - "-0x8000000000000000"
60          - values:
61              - "0xFFFFFFFFFFFFFFFF"
62              - "0xFFFFFFFFFFFFFFFF"
63          - values:
64              - "-0xFFFFFFFFFFFFFFFF"
65              - "-0xFFFFFFFFFFFFFFFF"
66
67      - file-name: "op_vs_8_pone"
68        isa:
69          instructions:
70            - sig: add2.64 v:in:i64
71              acc: inout:i64
72              format: [op_v_8]
73        code-template: |
74          #
75              ldai.64 1
76              movi.64 v0, %s
77              add2.64 v0
78              movi.64 v0, %s
79              cmp.64 v0
80        description: Check add2.64 with +1 and various values.
81        cases:
82          - values:
83              - "0"
84              - "1"
85          - values:
86              - "1"
87              - "2"
88          - values:
89              - "-1"
90              - "0"
91          - values:
92              - "0x7FFFFFFFFFFFFFFF"
93              - "0x8000000000000000"
94            tags: ["clang_release_sanitizer"]
95            bugid: ["966"]
96          - values:
97              - "0x8000000000000000"
98              - "0x8000000000000001"
99          - values:
100              - "-0x7FFFFFFFFFFFFFFF"
101              - "-0x7FFFFFFFFFFFFFFE"
102          - values:
103              - "-0x8000000000000000"
104              - "-0x7FFFFFFFFFFFFFFF"
105          - values:
106              - "0xFFFFFFFFFFFFFFFF"
107              - "0"
108          - values:
109              - "-0xFFFFFFFFFFFFFFFF"
110              - "-0xFFFFFFFFFFFFFFFE"
111      - file-name: "op_vs_8_none"
112        isa:
113          instructions:
114            - sig: add2.64 v:in:i64
115              acc: inout:i64
116              format: [op_v_8]
117        code-template: |
118          #
119              ldai.64 -1
120              movi.64 v0, %s
121              add2.64 v0
122              movi.64 v0, %s
123              cmp.64 v0
124        description: Check add2.64 with -1 and various values.
125        cases:
126          - values:
127              - "0"
128              - "-1"
129          - values:
130              - "1"
131              - "0"
132          - values:
133              - "-1"
134              - "-2"
135          - values:
136              - "0x7FFFFFFFFFFFFFFF"
137              - "0x7FFFFFFFFFFFFFFE"
138          - values:
139              - "0x8000000000000000"
140              - "0x7FFFFFFFFFFFFFFF"
141            tags: ["clang_release_sanitizer"]
142            bugid: ["966"]
143          - values:
144              - "-0x7FFFFFFFFFFFFFFF"
145              - "-0x8000000000000000"
146          - values:
147              - "-0x8000000000000000"
148              - "-0x8000000000000001"
149            tags: ["clang_release_sanitizer"]
150            bugid: ["966"]
151          - values:
152              - "0xFFFFFFFFFFFFFFFF"
153              - "-2"
154          - values:
155              - "-0xFFFFFFFFFFFFFFFF"
156              - "0"
157      - file-name: "op_vs_8_pmax"
158        isa:
159          instructions:
160            - sig: add2.64 v:in:i64
161              acc: inout:i64
162              format: [op_v_8]
163        code-template: |
164          #
165              ldai.64 0x7FFFFFFFFFFFFFFF
166              movi.64 v0, %s
167              add2.64 v0
168              movi.64 v0, %s
169              cmp.64 v0
170        description: Check add2.64 with +max and various values.
171        cases:
172          - values:
173              - "0"
174              - "0x7FFFFFFFFFFFFFFF"
175          - values:
176              - "1"
177              - "0x8000000000000000"
178            tags: ["clang_release_sanitizer"]
179            bugid: ["966"]
180          - values:
181              - "-1"
182              - "0x7FFFFFFFFFFFFFFE"
183          - values:
184              - "0x7FFFFFFFFFFFFFFF"
185              - "0xFFFFFFFFFFFFFFFE"
186            tags: ["clang_release_sanitizer"]
187            bugid: ["966"]
188          - values:
189              - "0x8000000000000000"
190              - "0xFFFFFFFFFFFFFFFF"
191          - values:
192              - "-0x7FFFFFFFFFFFFFFF"
193              - "0"
194          - values:
195              - "-0x8000000000000000"
196              - "0xFFFFFFFFFFFFFFFF"
197          - values:
198              - "0xFFFFFFFFFFFFFFFF"
199              - "0x7FFFFFFFFFFFFFFE"
200          - values:
201              - "-0xFFFFFFFFFFFFFFFF"
202              - "0x8000000000000000"
203            tags: ["clang_release_sanitizer"]
204            bugid: ["966"]
205
206      - file-name: "op_vs_8_nmax"
207        isa:
208          instructions:
209            - sig: add2.64 v:in:i64
210              acc: inout:i64
211              format: [op_v_8]
212        code-template: |
213          #
214              ldai.64 -0x8000000000000000
215              movi.64 v0, %s
216              add2.64 v0
217              movi.64 v0, %s
218              cmp.64 v0
219        description: Check add2.64 with -max and various values.
220        cases:
221          - values:
222              - "0"
223              - "0x8000000000000000"
224          - values:
225              - "1"
226              - "0x8000000000000001"
227          - values:
228              - "-1"
229              - "0x7FFFFFFFFFFFFFFF"
230            tags: ["clang_release_sanitizer"]
231            bugid: ["966"]
232          - values:
233              - "0x7FFFFFFFFFFFFFFF"
234              - "-1"
235          - values:
236              - "0x8000000000000000"
237              - "0"
238            tags: ["clang_release_sanitizer"]
239            bugid: ["966"]
240          - values:
241              - "-0x7FFFFFFFFFFFFFFF"
242              - "1"
243            tags: ["clang_release_sanitizer"]
244            bugid: ["966"]
245          - values:
246              - "-0x8000000000000000"
247              - "0"
248            tags: ["clang_release_sanitizer"]
249            bugid: ["966"]
250          - values:
251              - "0xFFFFFFFFFFFFFFFF"
252              - "0x7FFFFFFFFFFFFFFF"
253            tags: ["clang_release_sanitizer"]
254            bugid: ["966"]
255          - values:
256              - "-0xFFFFFFFFFFFFFFFF"
257              - "-0x7FFFFFFFFFFFFFFF"
258
259      - file-name: "vals"
260        isa:
261          instructions:
262            - sig: add2.64 v:in:i64
263              acc: inout:i64
264              format: [op_v_8]
265        code-template: |
266          #
267              ldai.64 %s
268              movi.64 v0, %s
269              add2.64 v0
270              movi.64 v0, %s
271              cmp.64 v0
272        description: Check add2.64 with various values.
273        tags: ["tsan"]
274        cases:
275          - values:
276              - "0x767c66b4775e89ab"
277              - "0xc2019955c2ef94bc"
278              - "0x387e000a3a4e1e67"
279          - values:
280              - "0xac6a086f0862a513"
281              - "0x2c0941e95ed5c79e"
282              - "0xd8734a5867386cb1"
283          - values:
284              - "0x92d20f25a81a20b4"
285              - "0x3b3a2ba0ea110801"
286              - "0xce0c3ac6922b28b5"
287          - values:
288              - "0xf454f3ceb91b30b"
289              - "0x460e9d1b06784a4d"
290              - "0x5553ec57f209fd58"
291          - values:
292              - "0xaa32bec0787f5b10"
293              - "0x23f3327c2c2518b2"
294              - "0xce25f13ca4a473c2"
295          - values:
296              - "0x1523129b49959007"
297              - "0x5458a639cc7c3688"
298              - "0x697bb8d51611c68f"
299          - values:
300              - "0x420f5bbdd367e8b4"
301              - "0xad250d24c5927c76"
302              - "0xef3468e298fa652a"
303          - values:
304              - "0x59756fb5b426cffa"
305              - "0xcdaf254f915f19c5"
306              - "0x272495054585e9bf"
307          - values:
308              - "0x64fae3293c3b3472"
309              - "0xcf198631f73277a5"
310              - "0x3414695b336dac17"
311          - values:
312              - "0xee9d771049e29300"
313              - "0x288f7917848c4828"
314              - "0x172cf027ce6edb28"
315
316      - file-name: "regs"
317        isa:
318          instructions:
319            - sig: add2.64 v:in:i64
320              acc: inout:i64
321              format: [op_v_8]
322        runner-options: ["compile-only"]
323        code-template: |
324          #
325              add2.64 %s
326        check-type: none
327        description: Check add2.64 with various register numbers.
328        cases:
329          - values:
330              - "v255"
331          - values:
332              - "v256"
333            runner-options: ["compile-failure"]
334
335      - file-name: "type"
336        bugid: ["964", "966"]
337        isa:
338          instructions:
339            - sig: add2.64 v:in:i64
340              acc: inout:i64
341              format: [op_v_8]
342          verification:
343            - acc_type
344            - v1_type
345        tags: ["verifier"]
346        runner-options: ['verifier-failure', 'verifier-debug-config']
347        header-template: []
348        code-template: |
349          #
350          .record A {}
351          .record B {}
352          .record panda.String <external>
353          .record panda.Object <external>
354          .function i32 main() {
355              %s
356              *s
357              add2.64 v1
358              ldai 0
359        check-type: no-check
360        description: Check add2.64 with incorrect register type.
361        template-cases:
362          - values:
363              - ldai 0
364            bugid: ['2090']
365          - values:
366              - fldai.64 0
367          - values:
368              - |
369                #
370                    lda.type B
371          - values:
372              - |
373                #
374                    lda.type B[]
375          - values:
376              - |
377                #
378                    lda.type panda.String
379          - values:
380              - |
381                #
382                    lda.type panda.Object
383          - values:
384              - |
385                #
386                    movi v0, 10
387                    newarr v0, v0, i32[]
388                    lda.obj v0
389          - values:
390              - lda.null
391          - values:
392              - ldai.64 0
393            bugid: ['2090']
394            exclude: [val]
395        cases:
396          - values:
397              - movi v1, 0
398          - values:
399              - fmovi.64 v1, 0
400          - values:
401              - |
402                #
403                    lda.type A
404                    sta.obj v1
405          - values:
406              - |
407                #
408                    lda.type A[]
409                    sta.obj v1
410
411          - values:
412              - |
413                #
414                    lda.type panda.String
415                    sta.obj v1
416          - values:
417              - |
418                #
419                    lda.type panda.Object
420                    sta.obj v1
421          - values:
422              - |
423                #
424                    movi v1, 10
425                    newarr v1, v1, f64[]
426          - values:
427              - mov.null v1
428          - values:
429              - movi.64 v1, 0
430            id: val
431
432      - file-name: uninitialized_regs
433        isa:
434          instructions:
435            - sig: add2.64 v:in:i64
436              acc: inout:i64
437              format: [op_v_8]
438        description: Check add2.64 with uninitialized registers.
439        tags: ["verifier"]
440        runner-options: ['verifier-failure', 'verifier-debug-config']
441        header-template: []
442        code-template: |
443          #
444          .function i32 main() {
445              %s
446              *s
447              add2.64 *s
448              ldai 0
449        check-type: no-check
450        template-cases:
451          - values:
452              - ""
453          - values:
454              - ldai.64 0
455            exclude: [init]
456
457        cases:
458          - values:
459              - ""
460              - v0
461          - values:
462              - movi.64 v1, 0
463              - v1
464            id: init
465          - values:
466              - ""
467              - v8
468          - values:
469              - ""
470              - v15
471          - values:
472              - movi.64 v15, 0
473              - v15
474            id: init
475