• 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: "shl2"
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: shl2 v:in:i32
28              acc: inout:i32
29              prefix: bit
30              format: [pref_op_v_8]
31        code-template: |
32          #
33              ldai 0
34              movi v0, %s
35              mov v1, v0
36              shl2 v0
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 shl2 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_vs_8_pone"
78        isa:
79          instructions:
80            - sig: shl2 v:in:i32
81              acc: inout:i32
82              prefix: bit
83              format: [pref_op_v_8]
84        code-template: |
85          #
86              ldai 1
87              movi v0, %s
88              shl2 v0
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 shl2 with +1 and various values.
97        cases:
98          - values:
99              - "0"
100              - "1"
101          - values:
102              - "1"
103              - "2"
104          - values:
105              - "-1"
106              - "0x80000000"
107            bugid: ['1387']
108            tags: ["clang_release_sanitizer_jit"]
109          - values:
110              - "0x7FFFFFFF"
111              - "0x80000000"
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              - "2"
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              - "0x80000000"
132            bugid: ['1387']
133            tags: ["clang_release_sanitizer_jit"]
134          - values:
135              - "-0xFFFFFFFF"
136              - "2"
137      - file-name: "op_vs_8_none"
138        isa:
139          instructions:
140            - sig: shl2 v:in:i32
141              acc: inout:i32
142              prefix: bit
143              format: [pref_op_v_8]
144        code-template: |
145          #
146              ldai -1
147              movi v0, %s
148              shl2 v0
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 shl2 with -1 and various values.
157        cases:
158          - values:
159              - "0"
160              - "0xFFFFFFFF"
161          - values:
162              - "1"
163              - "0xFFFFFFFE"
164          - values:
165              - "-1"
166              - "0x80000000"
167            bugid: ['1387']
168            tags: ["clang_release_sanitizer_jit"]
169          - values:
170              - "0x7FFFFFFF"
171              - "0x80000000"
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              - "0xFFFFFFFE"
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              - "0x80000000"
192            bugid: ['1387']
193            tags: ["clang_release_sanitizer_jit"]
194          - values:
195              - "-0xFFFFFFFF"
196              - "0xFFFFFFFE"
197
198      - file-name: "op_vs_8_pmax"
199        isa:
200          instructions:
201            - sig: shl2 v:in:i32
202              acc: inout:i32
203              prefix: bit
204              format: [pref_op_v_8]
205        code-template: |
206          #
207              ldai 0x7FFFFFFF
208              movi v0, %s
209              shl2 v0
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 shl2 with +max and various values.
218        cases:
219          - values:
220              - "0"
221              - "0x7FFFFFFF"
222          - values:
223              - "1"
224              - "0xFFFFFFFE"
225          - values:
226              - "-1"
227              - "0x80000000"
228            bugid: ['1387']
229            tags: ["clang_release_sanitizer_jit"]
230          - values:
231              - "0x7FFFFFFF"
232              - "0x80000000"
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              - "0xFFFFFFFE"
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              - "0x80000000"
253            bugid: ['1387']
254            tags: ["clang_release_sanitizer_jit"]
255          - values:
256              - "-0xFFFFFFFF"
257              - "0xFFFFFFFE"
258
259      - file-name: "op_vs_8_nmax"
260        isa:
261          instructions:
262            - sig: shl2 v:in:i32
263              acc: inout:i32
264              prefix: bit
265              format: [pref_op_v_8]
266        code-template: |
267          #
268              ldai -0x80000000
269              movi v0, %s
270              shl2 v0
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 shl2 with -max and various values.
279        cases:
280          - values:
281              - "0"
282              - "0x80000000"
283          - values:
284              - "1"
285              - "0"
286          - values:
287              - "-1"
288              - "0"
289            bugid: ['1387']
290            tags: ["clang_release_sanitizer_jit"]
291          - values:
292              - "0x7FFFFFFF"
293              - "0x0"
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              - "0"
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              - "0"
314            bugid: ['1387']
315            tags: ["clang_release_sanitizer_jit"]
316          - values:
317              - "-0xFFFFFFFF"
318              - "0"
319
320      - file-name: "vals"
321        bugid: ['1387']
322        tags: ["clang_release_sanitizer_jit", "tsan"]
323        isa:
324          instructions:
325            - sig: shl2 v:in:i32
326              acc: inout:i32
327              prefix: bit
328              format: [pref_op_v_8]
329        code-template: |
330          #
331              ldai %s
332              movi v0, %s
333              shl2 v0
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 shl2 with various values.
342        cases:
343          - values:
344              - "0x61696FFF"
345              - "0x56B814E8"
346              - "0x696FFF00"
347          - values:
348              - "0x76C5AE08"
349              - "0x8DFD0A2F"
350              - "0xD7040000"
351          - values:
352              - "0x15FFEF1D"
353              - "0x2C85774D"
354              - "0xFDE3A000"
355          - values:
356              - "0x3130A634"
357              - "0xD3CDE405"
358              - "0x2614C680"
359          - values:
360              - "0x8E8A9883"
361              - "0xDE3A4635"
362              - "0x10600000"
363          - values:
364              - "0x3BF5A79C"
365              - "0xE799C159"
366              - "0x38000000"
367          - values:
368              - "0xBF8EF337"
369              - "0x66068B26"
370              - "0xE3BCCDC0"
371          - values:
372              - "0xDC2D1B09"
373              - "0x3D252477"
374              - "0x84800000"
375          - values:
376              - "0x960BD85E"
377              - "0xB357B7D"
378              - "0xC0000000"
379          - values:
380              - "0x40BB756D"
381              - "0xDAAA49C4"
382              - "0xBB756D0"
383
384      - file-name: "vals_mod32_1"
385        bugid: ['1324']
386        tags: ['verifier']
387        runner-options: ['verifier-failure', 'verifier-debug-config']
388        isa:
389          instructions:
390            - sig: shl2 v:in:i32
391              acc: inout:i32
392              prefix: bit
393              format: [pref_op_v_8]
394        code-template: |
395          #
396              ldai.64 %s
397              movi.64 v0, %s
398              shl2 v0
399              movi.64 v0, %s
400              cmp.64 v0
401        description: Check shl2 with incorrect accumulator and register types.
402        cases:
403          - values:
404              - "0x17FFFFFFF"
405              - "0x1F"
406              - "0xFFFFFFFF80000000"
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: shl2 v:in:i32
420              acc: inout:i32
421              prefix: bit
422              format: [pref_op_v_8]
423        runner-options: ['compile-only']
424        code-template: |
425          #
426              shl2 %s
427        check-type: none
428        description: Check shl2 with various register numbers.
429        cases:
430          - values:
431              - "v255"
432          - values:
433              - "v256"
434            runner-options: ['compile-failure']
435
436      - file-name: "type"
437        bugid: ["964", "966"]
438        tags: ["verifier"]
439        isa:
440          instructions:
441            - sig: shl2 v:in:i32
442              acc: inout:i32
443              prefix: bit
444              format: [pref_op_v_8]
445          verification:
446            - acc_type
447            - v1_type
448        runner-options: ['verifier-failure', 'verifier-debug-config']
449        code-template: |
450          #
451              %s
452              %s
453              shl2 v0
454              ldai 0
455        check-type: no-check
456        description: Check shl2 with incorrect accumulator and register types.
457        cases:
458          - values:
459              - "lda.null"
460              - "movi v0, 0"
461          - values:
462              - "ldai 0 "
463              - "mov.null v0"
464          - values:
465              - "lda.null"
466              - "mov.null v0"
467