• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright (c) 2021-2022 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: "or2.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: or2.64 v:in:i64
28              acc: inout:i64
29              prefix: bit
30              format: [pref_op_v_8]
31        code-template: |
32          #
33              ldai.64 0
34              movi.64 v0, %s
35              mov.64 v1, v0
36              or2.64 v0
37              mov.64 v0, v1
38              cmp.64 v0
39        description: Check or2.64 with zero and various values.
40        cases:
41          - values:
42              - "0"
43          - values:
44              - "1"
45          - values:
46              - "-1"
47          - values:
48              - "0x7FFFFFFFFFFFFFFF"
49          - values:
50              - "0x8000000000000000"
51          - values:
52              - "-0x7FFFFFFFFFFFFFFF"
53          - values:
54              - "-0x8000000000000000"
55          - values:
56              - "0xFFFFFFFFFFFFFFFF"
57          - values:
58              - "-0xFFFFFFFFFFFFFFFF"
59
60      - file-name: "op_vs_8_pone"
61        isa:
62          instructions:
63            - sig: or2.64 v:in:i64
64              acc: inout:i64
65              prefix: bit
66              format: [pref_op_v_8]
67        code-template: |
68          #
69              ldai.64 1
70              movi.64 v0, %s
71              or2.64 v0
72              movi.64 v0, %s
73              cmp.64 v0
74        description: Check or2.64 with +1 and various values.
75        cases:
76          - values:
77              - "0"
78              - "1"
79          - values:
80              - "1"
81              - "1"
82          - values:
83              - "-1"
84              - "-1"
85          - values:
86              - "0x7FFFFFFFFFFFFFFF"
87              - "0x7FFFFFFFFFFFFFFF"
88          - values:
89              - "0x8000000000000000"
90              - "0x8000000000000001"
91          - values:
92              - "-0x7FFFFFFFFFFFFFFF"
93              - "-0x7FFFFFFFFFFFFFFF"
94          - values:
95              - "-0x8000000000000000"
96              - "0x8000000000000001"
97          - values:
98              - "0xFFFFFFFFFFFFFFFF"
99              - "0xFFFFFFFFFFFFFFFF"
100          - values:
101              - "-0xFFFFFFFFFFFFFFFF"
102              - "1"
103      - file-name: "op_vs_8_none"
104        isa:
105          instructions:
106            - sig: or2.64 v:in:i64
107              acc: inout:i64
108              prefix: bit
109              format: [pref_op_v_8]
110        code-template: |
111          #
112              ldai.64 -1
113              movi.64 v0, %s
114              or2.64 v0
115              movi.64 v0, -1
116              cmp.64 v0
117        description: Check or2.64 with -1 and various values.
118        cases:
119          - values:
120              - "0"
121          - values:
122              - "1"
123          - values:
124              - "-1"
125          - values:
126              - "0x7FFFFFFFFFFFFFFF"
127          - values:
128              - "0x8000000000000000"
129          - values:
130              - "-0x7FFFFFFFFFFFFFFF"
131          - values:
132              - "-0x8000000000000000"
133          - values:
134              - "0xFFFFFFFFFFFFFFFF"
135          - values:
136              - "-0xFFFFFFFFFFFFFFFF"
137
138      - file-name: "op_vs_8_pmax"
139        isa:
140          instructions:
141            - sig: or2.64 v:in:i64
142              acc: inout:i64
143              prefix: bit
144              format: [pref_op_v_8]
145        code-template: |
146          #
147              ldai.64 0x7FFFFFFFFFFFFFFF
148              movi.64 v0, %s
149              or2.64 v0
150              movi.64 v0, %s
151              cmp.64 v0
152        description: Check or2.64 with +max and various values.
153        cases:
154          - values:
155              - "0"
156              - "0x7FFFFFFFFFFFFFFF"
157          - values:
158              - "1"
159              - "0x7FFFFFFFFFFFFFFF"
160          - values:
161              - "-1"
162              - "0xFFFFFFFFFFFFFFFF"
163          - values:
164              - "0x7FFFFFFFFFFFFFFF"
165              - "0x7FFFFFFFFFFFFFFF"
166          - values:
167              - "0x8000000000000000"
168              - "0xFFFFFFFFFFFFFFFF"
169          - values:
170              - "-0x7FFFFFFFFFFFFFFF"
171              - "0xFFFFFFFFFFFFFFFF"
172          - values:
173              - "-0x8000000000000000"
174              - "0xFFFFFFFFFFFFFFFF"
175          - values:
176              - "0xFFFFFFFFFFFFFFFF"
177              - "0xFFFFFFFFFFFFFFFF"
178          - values:
179              - "-0xFFFFFFFFFFFFFFFF"
180              - "0x7FFFFFFFFFFFFFFF"
181
182      - file-name: "op_vs_8_nmax"
183        isa:
184          instructions:
185            - sig: or2.64 v:in:i64
186              acc: inout:i64
187              prefix: bit
188              format: [pref_op_v_8]
189        code-template: |
190          #
191              ldai.64 -0x8000000000000000
192              movi.64 v0, %s
193              or2.64 v0
194              movi.64 v0, %s
195              cmp.64 v0
196        description: Check or2.64 with -max and various values.
197        cases:
198          - values:
199              - "0"
200              - "0x8000000000000000"
201          - values:
202              - "1"
203              - "0x8000000000000001"
204          - values:
205              - "-1"
206              - "0xFFFFFFFFFFFFFFFF"
207          - values:
208              - "0x7FFFFFFFFFFFFFFF"
209              - "0xFFFFFFFFFFFFFFFF"
210          - values:
211              - "0x8000000000000000"
212              - "0x8000000000000000"
213          - values:
214              - "-0x7FFFFFFFFFFFFFFF"
215              - "0x8000000000000001"
216          - values:
217              - "-0x8000000000000000"
218              - "0x8000000000000000"
219          - values:
220              - "0xFFFFFFFFFFFFFFFF"
221              - "0xFFFFFFFFFFFFFFFF"
222          - values:
223              - "-0xFFFFFFFFFFFFFFFF"
224              - "0x8000000000000001"
225
226      - file-name: "vals"
227        isa:
228          instructions:
229            - sig: or2.64 v:in:i64
230              acc: inout:i64
231              prefix: bit
232              format: [pref_op_v_8]
233        code-template: |
234          #
235              ldai.64 %s
236              movi.64 v0, %s
237              or2.64 v0
238              movi.64 v0, %s
239              cmp.64 v0
240        description: Check or2.64 with various values.
241        tags: ['tsan']
242        cases:
243          - values:
244              - "0x4419C42BDD63FDBD"
245              - "0xC47F0B12F05DE1E1"
246              - "0xC47FCF3BFD7FFDFD"
247          - values:
248              - "0x943C8CF5378042AF"
249              - "0x36D73CB573479A51"
250              - "0xB6FFBCF577C7DAFF"
251          - values:
252              - "0xDE8314611EA45D76"
253              - "0x6E4839A2AF132D3A"
254              - "0xFECB3DE3BFB77D7E"
255          - values:
256              - "0xCCF0A31AC676C6A2"
257              - "0xF2FD1715A4240809"
258              - "0xFEFDB71FE676CEAB"
259          - values:
260              - "0xD01A79457938FFA8"
261              - "0x185B633A949F5FA7"
262              - "0xD85B7B7FFDBFFFAF"
263          - values:
264              - "0xE9A1C2F2A25E3DBF"
265              - "0xFF45DC655B23F39F"
266              - "0xFFE5DEF7FB7FFFBF"
267          - values:
268              - "0x350F5F7569191790"
269              - "0x71F43744568FD084"
270              - "0x75FF7F757F9FD794"
271          - values:
272              - "0x7087F97DD4E84D3"
273              - "0x4EEFF47D2E9C9436"
274              - "0x4FEFFFFFFFDE94F7"
275          - values:
276              - "0x7D1EF9DBCE053DA"
277              - "0x85C549E42649AD0A"
278              - "0x87D5EFFDBEE9FFDA"
279          - values:
280              - "0xFAAE67467FCB3A51"
281              - "0xD74B54B963E25C19"
282              - "0xFFEF77FF7FEB7E59"
283
284      - file-name: "regs"
285        isa:
286          instructions:
287            - sig: or2.64 v:in:i64
288              acc: inout:i64
289              prefix: bit
290              format: [pref_op_v_8]
291        runner-options: ['compile-only']
292        code-template: |
293          #
294              or2.64 %s
295        check-type: none
296        description: Check or2.64 with various register numbers.
297        cases:
298          - values:
299              - "v255"
300          - values:
301              - "v256"
302            runner-options: ['compile-failure']
303
304      - file-name: "type"
305        bugid: ["964", "966"]
306        tags: ["verifier"]
307        isa:
308          verification:
309            - acc_type
310            - v1_type
311        runner-options: ['verifier-failure', 'verifier-config']
312        header-template: []
313        code-template: |
314          .record T {}
315          .function i32 main() {
316              %s
317              *s
318              or2.64 v0
319        check-type: exit-positive
320        description: Check 'or2.64' with incorrect accumulator and/or register types.
321        cases:
322          - values:
323            - ldai 0
324          - values:
325            - ldai.64 0
326            id: acc_ok
327          - values:
328            - fldai 0
329            bugid: ['7315']
330          - values:
331            - fldai.64 0
332            bugid: ['7315']
333          - values:
334            - lda.null
335          - values:
336            - |
337              #
338                  movi v1, 0
339                  newarr v1, v1, i32[]
340                  lda.obj v1
341          - values:
342            - lda.str "0"
343          - values:
344            - lda.type T
345          - values:
346            - |
347              #
348                  newobj v1, T
349                  lda.obj v1
350        template-cases:
351          - values:
352            - movi v0, 0
353          - values:
354            - movi.64 v0, 0
355            exclude: [acc_ok]
356          - values:
357            - fmovi v0, 0
358            bugid: ['7315']
359          - values:
360            - fmovi.64 v0, 0
361            bugid: ['7315']
362          - values:
363            - mov.null v0
364          - values:
365            - |
366              #
367                  movi v0, 0
368                  newarr v0, v0, i32[]
369          - values:
370            - |
371              #
372                  lda.str "0"
373                  sta.obj v0
374          - values:
375            - |
376              #
377                  lda.type T
378                  sta.obj v0
379          - values:
380            - newobj v0, T
381
382
383      - file-name: uninitialized_regs
384        isa:
385          instructions:
386            - sig: or2.64 v:in:i64
387              acc: inout:i64
388              prefix: bit
389              format: [pref_op_v_8]
390        description: Check 'or2.64' with uninitialized registers.
391        tags: ['verifier']
392        runner-options: ['verifier-failure', 'verifier-config']
393        code-template: |
394          #
395              %s
396              *s
397              or2.64 *s
398        check-type: exit-positive
399        template-cases:
400          - values:
401              - ''
402          - values:
403              - ldai.64 0
404            exclude: [init]
405        cases:
406          - values:
407              - ''
408              - v0
409          - values:
410              - movi.64 v1, 0
411              - v1
412            id: init
413          - values:
414              - ''
415              - v8
416          - values:
417              - ''
418              - v15
419          - values:
420              - movi.64 v15, 0
421              - v15
422            id: init
423