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