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