• 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: "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        description: Check `not.64` with various values.
39        tags: ['tsan']
40        cases:
41          - values: ["0", "0xFFFFFFFFFFFFFFFF"]
42          - values: ["1", "0xFFFFFFFFFFFFFFFE"]
43          - values: ["0xF", "0xFFFFFFFFFFFFFFF0"]
44          - values: ["0xFF", "0xFFFFFFFFFFFFFF00"]
45          - values: ["0xFFF", "0xFFFFFFFFFFFFF000"]
46          - values: ["0xFFFF", "0xFFFFFFFFFFFF0000"]
47          - values: ["0xFFFFF", "0xFFFFFFFFFFF00000"]
48          - values: ["0xFFFFFF", "0xFFFFFFFFFF000000"]
49          - values: ["0xFFFFFFF", "0xFFFFFFFFF0000000"]
50          - values: ["0xFFFFFFFF", "0xFFFFFFFF00000000"]
51          - values: ["0xFFFFFFFFF", "0xFFFFFFF000000000"]
52          - values: ["0xFFFFFFFFFF", "0xFFFFFF0000000000"]
53          - values: ["0xFFFFFFFFFFF", "0xFFFFF00000000000"]
54          - values: ["0xFFFFFFFFFFFF", "0xFFFF000000000000"]
55          - values: ["0xFFFFFFFFFFFFF", "0xFFF0000000000000"]
56          - values: ["0xFFFFFFFFFFFFFF", "0xFF00000000000000"]
57          - values: ["0xFFFFFFFFFFFFFFF", "0xF000000000000000"]
58          - values: ["0xFFFFFFFFFFFFFFFF", "0x0"]
59          - values: ["0x8000000000000000", "0x7FFFFFFFFFFFFFFF"]
60          - values: ["0x7FFFFFFFFFFFFFFF", "0x8000000000000000"]
61          - values: ["-0x7FFFFFFFFFFFFFFF", "0x7FFFFFFFFFFFFFFE"]
62
63      - file-name: "vals"
64        isa:
65          instructions:
66            - sig: not.64
67              acc: inout:i64
68              prefix: bit
69              format: [pref_op_none]
70        code-template: |
71          #
72              ldai.64 %s
73              not.64
74              movi.64 v0, %s
75              cmp.64 v0
76        description: Check `not.64` with various values.
77        cases:
78          - values: ["0xA7A54FC76D2CCC7C", "0x585AB03892D33383"]
79          - values: ["0xB16F357A99C0D8A7", "0x4E90CA85663F2758"]
80          - values: ["0xFB98B737DC041B28", "0x46748C823FBE4D7"]
81          - values: ["0x14DFCAC9CD5FF6AF", "0xEB20353632A00950"]
82          - values: ["0xCDA373D7E2AB14B5", "0x325C8C281D54EB4A"]
83          - values: ["0x7D6137CE13614EF5", "0x829EC831EC9EB10A"]
84          - values: ["0xDFC0F4740D9496B6", "0x203F0B8BF26B6949"]
85          - values: ["0x526CFE9CA0267252", "0xAD9301635FD98DAD"]
86          - values: ["0x606CBD38816FFFC9", "0x9F9342C77E900036"]
87          - values: ["0x1D48537EC4386C70", "0xE2B7AC813BC7938F"]
88          - values: ["0x2EB5301A47794231", "0xD14ACFE5B886BDCE"]
89          - values: ["0x9DD1BB7C7246287D", "0x622E44838DB9D782"]
90          - values: ["0x61D822912F62D5C", "0xF9E27DD6ED09D2A3"]
91          - values: ["0xC2DD833F3B48080A", "0x3D227CC0C4B7F7F5"]
92          - values: ["0xD9DE84BEBDC002D9", "0x26217B41423FFD26"]
93          - values: ["0xF183B326AD268E23", "0xE7C4CD952D971DC"]
94          - values: ["0x4DFE00C32BC60340", "0xB201FF3CD439FCBF"]
95          - values: ["0xA24A0147E55691D", "0xF5DB5FEB81AA96E2"]
96          - values: ["0x43FAFCB397905439", "0xBC05034C686FABC6"]
97          - values: ["0x2B72F3FC001DC9F", "0xFD48D0C03FFE2360"]
98
99      - file-name: type
100        bugid: ["964", "966", "2090", "3133"]
101        tags: ["verifier"]
102        isa:
103          instructions:
104            - sig: not.64
105              acc: inout:i64
106              prefix: bit
107              format: [pref_op_none]
108          verification:
109            - acc_type
110        runner-options: ['verifier-failure', 'verifier-debug-config']
111        header-template: []
112        code-template: |
113            .record T {}
114            .record panda.String <external>
115            .record panda.Object <external>
116            #
117            .function i32 main() {
118                %s
119                not.64
120        check-type: exit-positive
121        description: Check `not.64` with incorrect accumulator type.
122        cases:
123          - values:
124            - ldai 1
125          - values: [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-debug-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