• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
14---
15definitions: []
16tests:
17  - file-name: xori
18    isa:
19      title: Two address binary operation with immediate on accumulator
20      description: >
21        Perform specified binary operation on accumulator and immediate and store result into accumulator.
22        Immediate is sign extended to operand size.
23      exceptions:
24        - x_none
25    commands:
26      - file-name: op_imm_32_zero
27        isa:
28          instructions:
29            - sig: xori imm:i32
30              acc: inout:i32
31              prefix: bit
32              format: [pref_op_imm_32]
33        code-template: |
34          #
35              ldai 0
36              xori %s
37              movi v0, %s
38              jne v0, set_failure
39              ldai 0
40              return
41          set_failure:
42              ldai 1
43              return
44        check-type: none
45        description: Check `xori` with zero and various values.
46        cases:
47          - values: ["0", "0x0"]
48          - values: ["1", "0x1"]
49          - values: ["-1", "0xFFFFFFFF"]
50          - values: ["0x7FFFFFFF", "0x7FFFFFFF"]
51          - values: ["-0x7FFFFFFF", "0x80000001"]
52          - values: ["0x80000000", "0x80000000"]
53          - values: ["-0x80000000", "0x80000000"]
54          - values: ["0xFFFFFFFF", "0xFFFFFFFF"]
55          - values: ["-0xFFFFFFFF", "0x1"]
56
57
58      - file-name: op_imm_32_pone
59        isa:
60          instructions:
61            - sig: xori imm:i32
62              acc: inout:i32
63              prefix: bit
64              format: [pref_op_imm_32]
65        code-template: |
66          #
67              ldai 1
68              xori %s
69              movi v0, %s
70              jne v0, set_failure
71              ldai 0
72              return
73          set_failure:
74              ldai 1
75              return
76        check-type: none
77        description: Check `xori` with +1 and various values.
78        cases:
79          - values: ["0", "0x1"]
80          - values: ["1", "0x0"]
81          - values: ["-1", "0xFFFFFFFE"]
82          - values: ["0x7FFFFFFF", "0x7FFFFFFE"]
83          - values: ["-0x7FFFFFFF", "0x80000000"]
84          - values: ["0x80000000", "0x80000001"]
85          - values: ["-0x80000000", "0x80000001"]
86          - values: ["0xFFFFFFFF", "0xFFFFFFFE"]
87          - values: ["-0xFFFFFFFF", "0x0"]
88
89
90      - file-name: op_imm_32_none
91        isa:
92          instructions:
93            - sig: xori imm:i32
94              acc: inout:i32
95              prefix: bit
96              format: [pref_op_imm_32]
97        code-template: |
98          #
99              ldai -1
100              xori %s
101              movi v0, %s
102              jne v0, set_failure
103              ldai 0
104              return
105          set_failure:
106              ldai 1
107              return
108        check-type: none
109        description: Check `xori` with -1 and various values.
110        cases:
111          - values: ["0", "0xFFFFFFFF"]
112          - values: ["1", "0xFFFFFFFE"]
113          - values: ["-1", "0x0"]
114          - values: ["0x7FFFFFFF", "0x80000000"]
115          - values: ["-0x7FFFFFFF", "0x7FFFFFFE"]
116          - values: ["0x80000000", "0x7FFFFFFF"]
117          - values: ["-0x80000000", "0x7FFFFFFF"]
118          - values: ["0xFFFFFFFF", "0x0"]
119          - values: ["-0xFFFFFFFF", "0xFFFFFFFE"]
120
121
122      - file-name: op_imm_32_pmax
123        isa:
124          instructions:
125            - sig: xori imm:i32
126              acc: inout:i32
127              prefix: bit
128              format: [pref_op_imm_32]
129        code-template: |
130          #
131              ldai 0x7FFFFFFF
132              xori %s
133              movi v0, %s
134              jne v0, set_failure
135              ldai 0
136              return
137          set_failure:
138              ldai 1
139              return
140        check-type: none
141        description: Check `xori` with +max and various values.
142        cases:
143          - values: ["0", "0x7FFFFFFF"]
144          - values: ["1", "0x7FFFFFFE"]
145          - values: ["-1", "0x80000000"]
146          - values: ["0x7FFFFFFF", "0x0"]
147          - values: ["-0x7FFFFFFF", "0xFFFFFFFE"]
148          - values: ["0x80000000", "0xFFFFFFFF"]
149          - values: ["-0x80000000", "0xFFFFFFFF"]
150          - values: ["0xFFFFFFFF", "0x80000000"]
151          - values: ["-0xFFFFFFFF", "0x7FFFFFFE"]
152
153
154      - file-name: op_imm_32_nmax
155        isa:
156          instructions:
157            - sig: xori imm:i32
158              acc: inout:i32
159              prefix: bit
160              format: [pref_op_imm_32]
161        code-template: |
162          #
163              ldai -0x80000000
164              xori %s
165              movi v0, %s
166              jne v0, set_failure
167              ldai 0
168              return
169          set_failure:
170              ldai 1
171              return
172        check-type: none
173        description: Check `xori` with -max and various values.
174        cases:
175          - values: ["0", "0x80000000"]
176          - values: ["1", "0x80000001"]
177          - values: ["-1", "0x7FFFFFFF"]
178          - values: ["0x7FFFFFFF", "0xFFFFFFFF"]
179          - values: ["-0x7FFFFFFF", "0x1"]
180          - values: ["0x80000000", "0x0"]
181          - values: ["-0x80000000", "0x0"]
182          - values: ["0xFFFFFFFF", "0x7FFFFFFF"]
183          - values: ["-0xFFFFFFFF", "0x80000001"]
184
185
186      - file-name: vals
187        isa:
188          instructions:
189            - sig: xori imm:i32
190              acc: inout:i32
191              prefix: bit
192              format: [pref_op_imm_32]
193        code-template: |
194          #
195              ldai %s
196              xori %s
197              movi v0, %s
198              jne v0, set_failure
199              ldai 0
200              return
201          set_failure:
202              ldai 1
203              return
204        check-type: none
205        description: Check `xori` with various values.
206        tags: ['tsan']
207        cases:
208          - values: ["0x486552BC", "0x6A1DAC75", "0x2278FEC9"]
209          - values: ["0x8AEB78EB", "0x5194C0BA", "0xDB7FB851"]
210          - values: ["0x5C2C67E7", "0x34CC1971", "0x68E07E96"]
211          - values: ["0x200ABCFA", "0x99E374A8", "0xB9E9C852"]
212          - values: ["0x89ED94D5", "0xE02D5731", "0x69C0C3E4"]
213          - values: ["0xCE2BBD72", "0xF6DE6676", "0x38F5DB04"]
214          - values: ["0xB9A3E964", "0xD3A8C9C3", "0x6A0B20A7"]
215          - values: ["0xE361D3E8", "0xDA6BA9E9", "0x390A7A01"]
216          - values: ["0xE4F1D3AF", "0x29DA35D8", "0xCD2BE677"]
217          - values: ["0xFBFF6F51", "0xBE511BDB", "0x45AE748A"]
218
219
220      - file-name: type
221        isa:
222          verification:
223            - acc_type
224        tags: ['verifier']
225        runner-options: ['verifier-failure', 'verifier-config']
226        header-template: []
227        code-template: |
228          #
229          .record panda.Object <external>
230          .function i32 main() {
231              %s
232              xori 0
233        check-type: exit-positive
234        description: Check 'xori' with incorrect acc type.
235        cases:
236          - values: [ldai.64 0]
237          - values: [fldai 0]
238            bugid: ['7315']
239          - values: [fldai.64 0]
240          - values: [lda.null]
241          - values: [lda.type panda.Object]
242          - values: ['lda.type i32[]']
243          - values: [lda.str ""]
244          - values:
245            - |
246              #
247                  newobj v0, panda.Object
248                  lda.obj v0
249          - values:
250            - |
251              #
252                  movi v0, 10
253                  newarr v0, v0, i32[]
254                  lda.obj v0
255
256
257      - file-name: uninitialized_acc
258        isa:
259          instructions:
260            - sig: xori imm:i32
261              acc: inout:i32
262              prefix: bit
263              format: [pref_op_imm_32]
264        description: Check 'xori' with uninitialized accumulator.
265        tags: ['verifier']
266        runner-options: ['verifier-failure', 'verifier-config']
267        code-template: |
268            #
269                xori 0
270        check-type: exit-positive
271