1# Copyright (c) 2021-2022 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: 'not.64'
17    isa:
18      title: Unary
19      description: >
20        Perform specified operation on accumulator
21      exceptions:
22        - x_none
23
24    commands:
25      - file-name: 'op_none'
26        isa:
27          instructions:
28            - sig: not.64
29              acc: inout:i64
30              prefix: bit
31              format: [pref_op_none]
32        code-template: |
33          #
34              ldai.64 %s
35              not.64
36              movi.64 v0, %s
37              cmp.64 v0
38        check-type: no-check
39        description: Check `not.64` with various values.
40        tags: ['tsan']
41        cases:
42          - values: ['0', '0xFFFFFFFFFFFFFFFF']
43          - values: ['1', '0xFFFFFFFFFFFFFFFE']
44          - values: ['0xF', '0xFFFFFFFFFFFFFFF0']
45          - values: ['0xFF', '0xFFFFFFFFFFFFFF00']
46          - values: ['0xFFF', '0xFFFFFFFFFFFFF000']
47          - values: ['0xFFFF', '0xFFFFFFFFFFFF0000']
48          - values: ['0xFFFFF', '0xFFFFFFFFFFF00000']
49          - values: ['0xFFFFFF', '0xFFFFFFFFFF000000']
50          - values: ['0xFFFFFFF', '0xFFFFFFFFF0000000']
51          - values: ['0xFFFFFFFF', '0xFFFFFFFF00000000']
52          - values: ['0xFFFFFFFFF', '0xFFFFFFF000000000']
53          - values: ['0xFFFFFFFFFF', '0xFFFFFF0000000000']
54          - values: ['0xFFFFFFFFFFF', '0xFFFFF00000000000']
55          - values: ['0xFFFFFFFFFFFF', '0xFFFF000000000000']
56          - values: ['0xFFFFFFFFFFFFF', '0xFFF0000000000000']
57          - values: ['0xFFFFFFFFFFFFFF', '0xFF00000000000000']
58          - values: ['0xFFFFFFFFFFFFFFF', '0xF000000000000000']
59          - values: ['0xFFFFFFFFFFFFFFFF', '0x0']
60          - values: ['0x8000000000000000', '0x7FFFFFFFFFFFFFFF']
61          - values: ['0x7FFFFFFFFFFFFFFF', '0x8000000000000000']
62          - values: ['-0x7FFFFFFFFFFFFFFF', '0x7FFFFFFFFFFFFFFE']
63
64      - file-name: 'vals'
65        isa:
66          instructions:
67            - sig: not.64
68              acc: inout:i64
69              prefix: bit
70              format: [pref_op_none]
71        code-template: |
72          #
73              ldai.64 %s
74              not.64
75              movi.64 v0, %s
76              cmp.64 v0
77        check-type: no-check
78        description: Check `not.64` with various values.
79        cases:
80          - values: ['0xA7A54FC76D2CCC7C', '0x585AB03892D33383']
81          - values: ['0xB16F357A99C0D8A7', '0x4E90CA85663F2758']
82          - values: ['0xFB98B737DC041B28', '0x46748C823FBE4D7']
83          - values: ['0x14DFCAC9CD5FF6AF', '0xEB20353632A00950']
84          - values: ['0xCDA373D7E2AB14B5', '0x325C8C281D54EB4A']
85          - values: ['0x7D6137CE13614EF5', '0x829EC831EC9EB10A']
86          - values: ['0xDFC0F4740D9496B6', '0x203F0B8BF26B6949']
87          - values: ['0x526CFE9CA0267252', '0xAD9301635FD98DAD']
88          - values: ['0x606CBD38816FFFC9', '0x9F9342C77E900036']
89          - values: ['0x1D48537EC4386C70', '0xE2B7AC813BC7938F']
90          - values: ['0x2EB5301A47794231', '0xD14ACFE5B886BDCE']
91          - values: ['0x9DD1BB7C7246287D', '0x622E44838DB9D782']
92          - values: ['0x61D822912F62D5C', '0xF9E27DD6ED09D2A3']
93          - values: ['0xC2DD833F3B48080A', '0x3D227CC0C4B7F7F5']
94          - values: ['0xD9DE84BEBDC002D9', '0x26217B41423FFD26']
95          - values: ['0xF183B326AD268E23', '0xE7C4CD952D971DC']
96          - values: ['0x4DFE00C32BC60340', '0xB201FF3CD439FCBF']
97          - values: ['0xA24A0147E55691D', '0xF5DB5FEB81AA96E2']
98          - values: ['0x43FAFCB397905439', '0xBC05034C686FABC6']
99          - values: ['0x2B72F3FC001DC9F', '0xFD48D0C03FFE2360']
100
101      - file-name: type
102        bugid: ['964', '966', '2090', '3133']
103        tags: ['verifier']
104        isa:
105          verification:
106            - acc_type
107        runner-options: ['verifier-failure', 'verifier-config']
108        header-template: []
109        code-template: |
110          .record T {}
111          .record panda.String <external>
112          .record panda.Object <external>
113          #
114          .function i32 main() {
115              %s
116              not.64
117        check-type: exit-positive
118        description: Check `not.64` with incorrect accumulator type.
119        cases:
120          - values:
121              - ldai 1
122          - values:
123              - fldai 1
124          - values:
125              - fldai.64 1.0
126          - values:
127              - lda.type T
128          - values:
129              - lda.type T[]
130          - values:
131              - lda.type panda.Object
132          - values:
133              - lda.type panda.String
134          - values:
135              - lda.str "x"
136          - values:
137              - |
138                newobj v0, T
139                lda.obj v0
140          - values:
141              - lda.null
142          - values:
143              - |
144                #
145                    movi v0, 10
146                    newarr v0, v0, i32[]
147                    lda.obj v0
148
149      - file-name: uninitialized_regs
150        bugid: ['2787']
151        tags: ['verifier']
152        isa:
153          instructions:
154            - sig: not.64
155              acc: inout:i64
156              prefix: bit
157              format: [pref_op_none]
158        description: Check not.64 with uninitialized accumulator.
159        runner-options: ['verifier-failure', 'verifier-config']
160        header-template: []
161        code-template: |
162          #
163          .function i32 main() {
164              # acc is undefined
165              not.64
166        check-type: exit-positive
167