• 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
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              jmp fall_through
41          set_failure:
42              ldai 1
43          fall_through:
44        description: Check `xori` with zero and various values.
45        cases:
46          - values: ["0", "0x0"]
47          - values: ["1", "0x1"]
48          - values: ["-1", "0xFFFFFFFF"]
49          - values: ["0x7FFFFFFF", "0x7FFFFFFF"]
50          - values: ["-0x7FFFFFFF", "0x80000001"]
51          - values: ["0x80000000", "0x80000000"]
52          - values: ["-0x80000000", "0x80000000"]
53          - values: ["0xFFFFFFFF", "0xFFFFFFFF"]
54          - values: ["-0xFFFFFFFF", "0x1"]
55      - file-name: op_imm_32_pone
56        isa:
57          instructions:
58            - sig: xori imm:i32
59              acc: inout:i32
60              prefix: bit
61              format: [pref_op_imm_32]
62        code-template: |
63          #
64              ldai 1
65              xori %s
66              movi v0, %s
67              jne v0, set_failure
68              ldai 0
69              jmp fall_through
70          set_failure:
71              ldai 1
72          fall_through:
73        description: Check `xori` with +1 and various values.
74        cases:
75          - values: ["0", "0x1"]
76          - values: ["1", "0x0"]
77          - values: ["-1", "0xFFFFFFFE"]
78          - values: ["0x7FFFFFFF", "0x7FFFFFFE"]
79          - values: ["-0x7FFFFFFF", "0x80000000"]
80          - values: ["0x80000000", "0x80000001"]
81          - values: ["-0x80000000", "0x80000001"]
82          - values: ["0xFFFFFFFF", "0xFFFFFFFE"]
83          - values: ["-0xFFFFFFFF", "0x0"]
84      - file-name: op_imm_32_none
85        isa:
86          instructions:
87            - sig: xori imm:i32
88              acc: inout:i32
89              prefix: bit
90              format: [pref_op_imm_32]
91        code-template: |
92          #
93              ldai -1
94              xori %s
95              movi v0, %s
96              jne v0, set_failure
97              ldai 0
98              jmp fall_through
99          set_failure:
100              ldai 1
101          fall_through:
102        description: Check `xori` with -1 and various values.
103        cases:
104          - values: ["0", "0xFFFFFFFF"]
105          - values: ["1", "0xFFFFFFFE"]
106          - values: ["-1", "0x0"]
107          - values: ["0x7FFFFFFF", "0x80000000"]
108          - values: ["-0x7FFFFFFF", "0x7FFFFFFE"]
109          - values: ["0x80000000", "0x7FFFFFFF"]
110          - values: ["-0x80000000", "0x7FFFFFFF"]
111          - values: ["0xFFFFFFFF", "0x0"]
112          - values: ["-0xFFFFFFFF", "0xFFFFFFFE"]
113      - file-name: op_imm_32_pmax
114        isa:
115          instructions:
116            - sig: xori imm:i32
117              acc: inout:i32
118              prefix: bit
119              format: [pref_op_imm_32]
120        code-template: |
121          #
122              ldai 0x7FFFFFFF
123              xori %s
124              movi v0, %s
125              jne v0, set_failure
126              ldai 0
127              jmp fall_through
128          set_failure:
129              ldai 1
130          fall_through:
131        description: Check `xori` with +max and various values.
132        cases:
133          - values: ["0", "0x7FFFFFFF"]
134          - values: ["1", "0x7FFFFFFE"]
135          - values: ["-1", "0x80000000"]
136          - values: ["0x7FFFFFFF", "0x0"]
137          - values: ["-0x7FFFFFFF", "0xFFFFFFFE"]
138          - values: ["0x80000000", "0xFFFFFFFF"]
139          - values: ["-0x80000000", "0xFFFFFFFF"]
140          - values: ["0xFFFFFFFF", "0x80000000"]
141          - values: ["-0xFFFFFFFF", "0x7FFFFFFE"]
142      - file-name: op_imm_32_nmax
143        isa:
144          instructions:
145            - sig: xori imm:i32
146              acc: inout:i32
147              prefix: bit
148              format: [pref_op_imm_32]
149        code-template: |
150          #
151              ldai -0x80000000
152              xori %s
153              movi v0, %s
154              jne v0, set_failure
155              ldai 0
156              jmp fall_through
157          set_failure:
158              ldai 1
159          fall_through:
160        description: Check `xori` with -max and various values.
161        cases:
162          - values: ["0", "0x80000000"]
163          - values: ["1", "0x80000001"]
164          - values: ["-1", "0x7FFFFFFF"]
165          - values: ["0x7FFFFFFF", "0xFFFFFFFF"]
166          - values: ["-0x7FFFFFFF", "0x1"]
167          - values: ["0x80000000", "0x0"]
168          - values: ["-0x80000000", "0x0"]
169          - values: ["0xFFFFFFFF", "0x7FFFFFFF"]
170          - values: ["-0xFFFFFFFF", "0x80000001"]
171      - file-name: vals
172        isa:
173          instructions:
174            - sig: xori imm:i32
175              acc: inout:i32
176              prefix: bit
177              format: [pref_op_imm_32]
178        code-template: |
179          #
180              ldai %s
181              xori %s
182              movi v0, %s
183              jne v0, set_failure
184              ldai 0
185              jmp fall_through
186          set_failure:
187              ldai 1
188          fall_through:
189        description: Check `xori` with various values.
190        tags: ['tsan']
191        cases:
192          - values: ["0x486552BC", "0x6A1DAC75", "0x2278FEC9"]
193          - values: ["0x8AEB78EB", "0x5194C0BA", "0xDB7FB851"]
194          - values: ["0x5C2C67E7", "0x34CC1971", "0x68E07E96"]
195          - values: ["0x200ABCFA", "0x99E374A8", "0xB9E9C852"]
196          - values: ["0x89ED94D5", "0xE02D5731", "0x69C0C3E4"]
197          - values: ["0xCE2BBD72", "0xF6DE6676", "0x38F5DB04"]
198          - values: ["0xB9A3E964", "0xD3A8C9C3", "0x6A0B20A7"]
199          - values: ["0xE361D3E8", "0xDA6BA9E9", "0x390A7A01"]
200          - values: ["0xE4F1D3AF", "0x29DA35D8", "0xCD2BE677"]
201          - values: ["0xFBFF6F51", "0xBE511BDB", "0x45AE748A"]
202      - file-name: type
203        bugid: ["964", "966"]
204        tags: ["verifier"]
205        isa:
206          instructions:
207            - sig: xori imm:i32
208              acc: inout:i32
209              prefix: bit
210              format: [pref_op_imm_32]
211          verification:
212            - acc_type
213        runner-options: ['verifier-failure', 'verifier-debug-config']
214        code-template: |
215          #
216              %s
217              xori 1
218              ldai 0
219        check-type: no-check
220        description: Check `xori` with incorrect accumulator type.
221        cases:
222          - values: [fldai.64 0.0]
223          - values: [fldai.64 -0.0]
224          - values: [fldai.64 1.0]
225          - values: [fldai.64 -1.0]
226          - values: [fldai.64 0x7FF8000000000000]
227          - values: [fldai.64 0xFFFFFFFFFFFFFFFF]
228          - values: [fldai.64 0x7FF0000000000000]
229          - values: [fldai.64 0xFFF0000000000000]
230          - values: [fldai.64 0xFFEFFFFFFFFFFFFF]
231          - values: [fldai.64 0x7FEFFFFFFFFFFFFF]
232          - values: [fldai.64 0x0000000000000001]
233          - values: [fldai.64 0x8000000000000001]
234          - values: [fldai.64 3.14159265358979323846]
235          - values: [lda.str ""]
236          - values: [lda.str "some string"]
237          - values: [lda.null]
238          - values: [ldai.64 0]
239          - values: [ldai.64 1]
240          - values: [ldai.64 -1]
241          - values: [ldai.64 0x0000000100000000]
242          - values: [ldai.64 -0x0000000100000000]
243          - values: [ldai.64 0x0000000080000000]
244          - values: [ldai.64 -0x0000000080000000]
245          - values: [ldai.64 0x1000000000000000]
246          - values: [ldai.64 0x8000000000000000]
247          - values: [ldai.64 0xF000000000000000]
248          - values: [ldai.64 0xFFFFFFFF00000000]
249          - values: [ldai.64 0xFFFFFFFFFFFFFFFF]
250          - values: [ldai.64 -0x1000000000000000]
251          - values: [ldai.64 -0x8000000000000000]
252          - values: [ldai.64 -0xF000000000000000]
253          - values: [ldai.64 -0xFFFFFFFF00000000]
254          - values: [ldai.64 -0xFFFFFFFFFFFFFFFF]
255      - file-name: type_obj
256        bugid: ["964", "966"]
257        tags: ["verifier"]
258        isa:
259          instructions:
260            - sig: xori imm:i32
261              acc: inout:i32
262              prefix: bit
263              format: [pref_op_imm_32]
264          verification:
265            - acc_type
266        runner-options: ['verifier-failure', 'verifier-debug-config']
267        description: Check `xori` with incorrect accumulator type.
268        code-template: |
269          #
270          .record Object {}
271          .function i32 main() {
272              %s
273              xori 1
274              ldai 0
275              return
276        check-type: none
277        header-template: []
278        cases:
279          - values: [lda.type Object]
280          - values:
281            - |
282              newobj v0, Object
283              lda.obj v0
284