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