• 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: "i64tou1"
17    isa:
18      title: Conversions from integer types to u1
19      description: >
20        Conversion from integer types to u1 obeys the following rules.
21        If converted integer is not equal to zero, the result is 1.
22        Otherwise the result is 0.
23      exceptions:
24        - x_none
25    commands:
26      - file-name: "op_none"
27        isa:
28          instructions:
29            - sig: i64tou1
30              acc: inout:i64->u1
31              prefix: cast
32              format: [pref_op_none]
33        code-template: |
34          #
35              ldai.64 %s
36              i64tou1
37              movi v0, %s
38              jne v0, set_failure
39              ldai 0
40              jmp fall_through
41          set_failure:
42              ldai 1
43          fall_through:
44        description: Check i64tou1 with various values.
45        tags: ['tsan']
46        cases:
47          - values:
48              - "0"
49              - "0"
50          - values:
51              - "-1"
52              - "1"
53          - values:
54              - "0x1111111122222222"
55              - "1"
56          - values:
57              - "0x7fffffffffffffff"
58              - "1"
59          - values:
60              - "0xBBCCDDEE00000001"
61              - "1"
62      - file-name: "type"
63        isa:
64          instructions:
65            - sig: i64tou1
66              acc: inout:i64->u1
67              prefix: cast
68              format: [pref_op_none]
69          verification:
70              - acc_type
71        bugid: ["964", "1653", "2107"]
72        tags: ["verifier"]
73        description: |
74          Check `i64tou1` with incorrect accumulator type.
75          Load different values (objects, strings, types, 64-bit floating point values, 32-bit integer values) and invokes `i64tou1`.
76          Return 0 to indicate that negative test failed, because this line is unreachable and code will not be executed after verification error.
77        runner-options: ['verifier-failure', 'verifier-debug-config']
78        header-template: []
79        code-template: |
80            #
81            .record B {}
82            .record panda.String <external>
83            .record panda.Object <external>
84            .function i32 main() {
85                %s
86                i64tou1
87        check-type: exit-positive
88        cases:
89            - values:
90                - ldai 0
91            - values:
92                - fldai.64 0
93            - values:
94                - lda.type B
95            - values:
96                - lda.type B[]
97            - values:
98                - lda.type panda.String
99            - values:
100                - lda.str "string"
101            - values:
102                - lda.type panda.Object
103            - values:
104                - |
105                  #
106                      movi v0, 10
107                      newarr v0, v0, i32[]
108                      lda.obj v0
109            - values:
110                - lda.null
111
112      - file-name: uninitialized_regs
113        isa:
114          instructions:
115            - sig: i64tou1
116              acc: inout:i64->u1
117              prefix: cast
118              format: [pref_op_none]
119        description: Check i64tou1 with uninitialized accumulator.
120        tags: ['verifier']
121        runner-options: ['verifier-failure', 'verifier-debug-config']
122        header-template: []
123        code-template: |
124            #
125            .function i32 main() {
126                i64tou1
127        check-type: exit-positive
128