• 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: "ashr"
17    isa:
18      title: Three address binary operation
19      description: Perform specified binary operation on two registers and store result
20          into accumulator
21      exceptions:
22          - x_none
23    commands:
24      - file-name: "op_vs1_4_vs2_4_zero"
25        isa:
26          instructions:
27            - sig: ashr v1:in:i32, v2:in:i32
28              acc: out:i32
29              prefix: bit
30              format: [pref_op_v1_4_v2_4]
31        code-template: |
32          #
33              movi v0, 0
34              movi v1, %s
35              mov v1, v0
36              ashr v0, v1
37              movi v0, 0
38              jne v0, set_failure
39              ldai 0
40              jmp fall_through
41          set_failure:
42              ldai 1
43          fall_through:
44        description: Check ashr with zero and various values.
45        cases:
46          - values:
47              - "0"
48          - values:
49              - "1"
50          - values:
51              - "-1"
52          - values:
53              - "0x7FFFFFFF"
54          - values:
55              - "0x80000000"
56          - values:
57              - "-0x7FFFFFFF"
58          - values:
59              - "-0x80000000"
60          - values:
61              - "0xFFFFFFFF"
62          - values:
63              - "-0xFFFFFFFF"
64
65      - file-name: "op_vs1_4_vs2_4_pone"
66        isa:
67          instructions:
68            - sig: ashr v1:in:i32, v2:in:i32
69              acc: out:i32
70              prefix: bit
71              format: [pref_op_v1_4_v2_4]
72        code-template: |
73          #
74              movi v0, 1
75              movi v1, %s
76              ashr v0, v1
77              movi v0, %s
78              jne v0, set_failure
79              ldai 0
80              jmp fall_through
81          set_failure:
82              ldai 1
83          fall_through:
84        description: Check ashr with +1 and various values.
85        cases:
86          - values:
87              - "0"
88              - "1"
89          - values:
90              - "1"
91              - "0"
92          - values:
93              - "-1"
94              - "0"
95            bugid: ['1387']
96            tags: ["clang_release_sanitizer_jit"]
97          - values:
98              - "0x7FFFFFFF"
99              - "0"
100            bugid: ['1387']
101            tags: ["clang_release_sanitizer_jit"]
102          - values:
103              - "0x80000000"
104              - "1"
105            bugid: ['1387']
106            tags: ["clang_release_sanitizer_jit"]
107          - values:
108              - "-0x7FFFFFFF"
109              - "0"
110            bugid: ['1387']
111            tags: ["clang_release_sanitizer_jit"]
112          - values:
113              - "-0x80000000"
114              - "1"
115            bugid: ['1387']
116            tags: ["clang_release_sanitizer_jit"]
117          - values:
118              - "0xFFFFFFFF"
119              - "0"
120            bugid: ['1387']
121            tags: ["clang_release_sanitizer_jit"]
122          - values:
123              - "-0xFFFFFFFF"
124              - "0"
125      - file-name: "op_vs1_4_vs2_4_none"
126        isa:
127          instructions:
128            - sig: ashr v1:in:i32, v2:in:i32
129              acc: out:i32
130              prefix: bit
131              format: [pref_op_v1_4_v2_4]
132        code-template: |
133          #
134              movi v0, -1
135              movi v1, %s
136              ashr v0, v1
137              movi v0, 0xFFFFFFFF
138              jne v0, set_failure
139              ldai 0
140              jmp fall_through
141          set_failure:
142              ldai 1
143          fall_through:
144        description: Check ashr with -1 and various values.
145        cases:
146          - values:
147              - "0"
148          - values:
149              - "1"
150          - values:
151              - "-1"
152            bugid: ['1387']
153            tags: ["clang_release_sanitizer_jit"]
154          - values:
155              - "0x7FFFFFFF"
156            bugid: ['1387']
157            tags: ["clang_release_sanitizer_jit"]
158          - values:
159              - "0x80000000"
160            bugid: ['1387']
161            tags: ["clang_release_sanitizer_jit"]
162          - values:
163              - "-0x7FFFFFFF"
164            bugid: ['1387']
165            tags: ["clang_release_sanitizer_jit"]
166          - values:
167              - "-0x80000000"
168            bugid: ['1387']
169            tags: ["clang_release_sanitizer_jit"]
170          - values:
171              - "0xFFFFFFFF"
172            bugid: ['1387']
173            tags: ["clang_release_sanitizer_jit"]
174          - values:
175              - "-0xFFFFFFFF"
176
177      - file-name: "op_vs1_4_vs2_4_pmax"
178        isa:
179          instructions:
180            - sig: ashr v1:in:i32, v2:in:i32
181              acc: out:i32
182              prefix: bit
183              format: [pref_op_v1_4_v2_4]
184        code-template: |
185          #
186              movi v0, 0x7FFFFFFF
187              movi v1, %s
188              ashr v0, v1
189              movi v0, %s
190              jne v0, set_failure
191              ldai 0
192              jmp fall_through
193          set_failure:
194              ldai 1
195          fall_through:
196        description: Check ashr with +max and various values.
197        cases:
198          - values:
199              - "0"
200              - "0x7FFFFFFF"
201          - values:
202              - "1"
203              - "0x3FFFFFFF"
204          - values:
205              - "-1"
206              - "0x0"
207            bugid: ['1387']
208            tags: ["clang_release_sanitizer_jit"]
209          - values:
210              - "0x7FFFFFFF"
211              - "0x0"
212            bugid: ['1387']
213            tags: ["clang_release_sanitizer_jit"]
214          - values:
215              - "0x80000000"
216              - "0x7FFFFFFF"
217            bugid: ['1387']
218            tags: ["clang_release_sanitizer_jit"]
219          - values:
220              - "-0x7FFFFFFF"
221              - "0x3FFFFFFF"
222            bugid: ['1387']
223            tags: ["clang_release_sanitizer_jit"]
224          - values:
225              - "-0x80000000"
226              - "0x7FFFFFFF"
227            bugid: ['1387']
228            tags: ["clang_release_sanitizer_jit"]
229          - values:
230              - "0xFFFFFFFF"
231              - "0x0"
232            bugid: ['1387']
233            tags: ["clang_release_sanitizer_jit"]
234          - values:
235              - "-0xFFFFFFFF"
236              - "0x3FFFFFFF"
237
238      - file-name: "op_vs1_4_vs2_4_nmax"
239        isa:
240          instructions:
241            - sig: ashr v1:in:i32, v2:in:i32
242              acc: out:i32
243              prefix: bit
244              format: [pref_op_v1_4_v2_4]
245        code-template: |
246          #
247              movi v0, -0x80000000
248              movi v1, %s
249              ashr v0, v1
250              movi v0, %s
251              jne v0, set_failure
252              ldai 0
253              jmp fall_through
254          set_failure:
255              ldai 1
256          fall_through:
257        description: Check ashr with -max and various values.
258        cases:
259          - values:
260              - "0"
261              - "0x80000000"
262          - values:
263              - "1"
264              - "0xC0000000"
265          - values:
266              - "-1"
267              - "0xFFFFFFFF"
268            bugid: ['1387']
269            tags: ["clang_release_sanitizer_jit"]
270          - values:
271              - "0x7FFFFFFF"
272              - "0xFFFFFFFF"
273            bugid: ['1387']
274            tags: ["clang_release_sanitizer_jit"]
275          - values:
276              - "0x80000000"
277              - "0x80000000"
278            bugid: ['1387']
279            tags: ["clang_release_sanitizer_jit"]
280          - values:
281              - "-0x7FFFFFFF"
282              - "0xC0000000"
283            bugid: ['1387']
284            tags: ["clang_release_sanitizer_jit"]
285          - values:
286              - "-0x80000000"
287              - "0x80000000"
288            bugid: ['1387']
289            tags: ["clang_release_sanitizer_jit"]
290          - values:
291              - "0xFFFFFFFF"
292              - "0xFFFFFFFF"
293            bugid: ['1387']
294            tags: ["clang_release_sanitizer_jit"]
295          - values:
296              - "-0xFFFFFFFF"
297              - "0xC0000000"
298
299      - file-name: "vals"
300        bugid: ['1387']
301        tags: ['clang_release_sanitizer_jit', 'tsan']
302        isa:
303          instructions:
304            - sig: ashr v1:in:i32, v2:in:i32
305              acc: out:i32
306              prefix: bit
307              format: [pref_op_v1_4_v2_4]
308        code-template: |
309          #
310              movi v0, %s
311              movi v1, %s
312              ashr v0, v1
313              movi v0, %s
314              jne v0, set_failure
315              ldai 0
316              jmp fall_through
317          set_failure:
318              ldai 1
319          fall_through:
320        description: Check ashr with various values.
321        cases:
322          - values:
323              - "0xF7C3C59C"
324              - "0xBA9A9721"
325              - "0xFBE1E2CE"
326          - values:
327              - "0xC85A6FD0"
328              - "0xD6D79891"
329              - "0xFFFFE42D"
330              -
331          - values:
332              - "0x64A99B3C"
333              - "0x97FC66F9"
334              - "0x32"
335          - values:
336              - "0x7A92E59B"
337              - "0xD35D56A5"
338              - "0x3D4972C"
339          - values:
340              - "0x2B3E86A6"
341              - "0x634FFBF2"
342              - "0xACF"
343          - values:
344              - "0x6FA6AD46"
345              - "0x5F6A3A54"
346              - "0x6FA"
347          - values:
348              - "0xD3AC1EFA"
349              - "0x9551EEBF"
350              - "0xFFFFFFFF"
351          - values:
352              - "0x4DC08172"
353              - "0xA29C9583"
354              - "0x9B8102E"
355          - values:
356              - "0x9A768F76"
357              - "0x5AF13C53"
358              - "0xFFFFF34E"
359          - values:
360              - "0x71C01EC4"
361              - "0xC8FF2ECF"
362              - "0xE380"
363
364      - file-name: "vals_mod32_1"
365        bugid: ['1324', '2075']
366        tags: ['verifier']
367        runner-options: ['verifier-failure', 'verifier-debug-config']
368        isa:
369          instructions:
370            - sig: ashr v1:in:i32, v2:in:i32
371              acc: out:i32
372              prefix: bit
373              format: [pref_op_v1_4_v2_4]
374        code-template: |
375          #
376              movi.64 v0, %s
377              movi.64 v1, %s
378              ashr v0, v1
379              movi.64 v0, %s
380              cmp.64 v0
381        description: Check ashr with incorrect registers type.
382        cases:
383          - values:
384              - "0x17FFFFFFF"
385              - "0x1"
386              - "0x000000003FFFFFFF"
387          - values:
388              - "0x77777777FFFFFFFF"
389              - "0x1111111180000000"
390              - "0xFFFFFFFFFFFFFFFF"
391          - values:
392              - "0x180000000"
393              - "0x180000000"
394              - "0xFFFFFFFF80000000"
395
396      - file-name: "regs"
397        isa:
398          instructions:
399            - sig: ashr v1:in:i32, v2:in:i32
400              acc: out:i32
401              prefix: bit
402              format: [pref_op_v1_4_v2_4]
403        runner-options: ['compile-only']
404        code-template: |
405          #
406              ashr %s, %s
407        check-type: none
408        description: Check ashr with various register numbers.
409        cases:
410          - values:
411              - v0
412              - v15
413          - values:
414              - v0
415              - v16
416            runner-options:
417              - compile-failure
418          - values:
419              - v15
420              - v0
421          - values:
422              - v16
423              - v0
424            runner-options:
425              - compile-failure
426
427      - file-name: "type"
428        bugid: ["964", "966", "2075"]
429        tags: ["verifier"]
430        isa:
431          instructions:
432            - sig: ashr v1:in:i32, v2:in:i32
433              acc: out:i32
434              prefix: bit
435              format: [pref_op_v1_4_v2_4]
436          verification:
437            - v1_type
438            - v2_type
439        runner-options: ['verifier-failure', 'verifier-debug-config']
440        code-template: |
441          #
442              %s
443              %s
444              ashr v0, v1
445              ldai 0
446        check-type: no-check
447        description: Check ashr with incorrect registers type.
448        cases:
449          - values:
450              - mov.null v0
451              - movi v1, 0
452          - values:
453              - movi v0, 0
454              - mov.null v1
455          - values:
456              - mov.null v0
457              - mov.null v1
458