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