• 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: "lda.64"
17    isa:
18      title: Load accumulator from register
19      description: Moves register content into an accumulator.
20      exceptions:
21      - x_none
22    commands:
23      - file-name: "op_vd_8_pos"
24        isa:
25          instructions:
26            - sig: lda.64 v:in:b64
27              acc: out:b64
28              format: [op_v_8]
29        code-template: |
30          #
31              movi.64 v0, %s
32              lda.64 v0
33              cmp.64 v0
34        description: Check lda.64 moves register content into an accumulator (positive values).
35        cases:
36          - values:
37              - 0
38          - values:
39              - 1
40          - values:
41              - "0xF"
42          - values:
43              - "0xFF"
44          - values:
45              - "0xFFF"
46          - values:
47              - "0xFFFF"
48          - values:
49              - "0xFFFFF"
50          - values:
51              - "0xFFFFFF"
52          - values:
53              - "0xFFFFFFF"
54          - values:
55              - "0xFFFFFFFF"
56          - values:
57              - "0xFFFFFFFFF"
58          - values:
59              - "0xFFFFFFFFFF"
60          - values:
61              - "0xFFFFFFFFFFF"
62          - values:
63              - "0xFFFFFFFFFFFF"
64          - values:
65              - "0xFFFFFFFFFFFFF"
66          - values:
67              - "0xFFFFFFFFFFFFFF"
68          - values:
69              - "0xFFFFFFFFFFFFFFF"
70          - values:
71              - "0xFFFFFFFFFFFFFFFF"
72          - values:
73              - "0x7F"
74          - values:
75              - "0x7FF"
76          - values:
77              - "0x7FFF"
78          - values:
79              - "0x7FFFF"
80          - values:
81              - "0x7FFFFF"
82          - values:
83              - "0x7FFFFFF"
84          - values:
85              - "0x7FFFFFFF"
86          - values:
87              - "0x7FFFFFFFF"
88          - values:
89              - "0x7FFFFFFFFF"
90          - values:
91              - "0x7FFFFFFFFFFF"
92          - values:
93              - "0x7FFFFFFFFFFFF"
94          - values:
95              - "0x7FFFFFFFFFFFFF"
96          - values:
97              - "0x7FFFFFFFFFFFFFF"
98          - values:
99              - "0x7FFFFFFFFFFFFFFF"
100
101      - file-name: "op_vd_8_neg"
102        isa:
103          instructions:
104            - sig: lda.64 v:in:b64
105              acc: out:b64
106              format: [op_v_8]
107        code-template: |
108          #
109              movi.64 v0, %s
110              lda.64 v0
111              cmp.64 v0
112        description: Check lda.64 moves register content into an accumulator (negative values).
113        tags: ['tsan']
114        cases:
115          - values:
116              - "-1"
117          - values:
118              - "-0xF"
119          - values:
120              - "-0xFF"
121          - values:
122              - "-0xFFF"
123          - values:
124              - "-0xFFFF"
125          - values:
126              - "-0xFFFFF"
127          - values:
128              - "-0xFFFFFF"
129          - values:
130              - "-0xFFFFFFF"
131          - values:
132              - "-0xFFFFFFFF"
133          - values:
134              - "-0xFFFFFFFFF"
135          - values:
136              - "-0xFFFFFFFFFF"
137          - values:
138              - "-0xFFFFFFFFFFF"
139          - values:
140              - "-0xFFFFFFFFFFFF"
141          - values:
142              - "-0xFFFFFFFFFFFFF"
143          - values:
144              - "-0xFFFFFFFFFFFFFF"
145          - values:
146              - "-0xFFFFFFFFFFFFFFF"
147          - values:
148              - "-0xFFFFFFFFFFFFFFFF"
149          - values:
150              - "-0x7F"
151          - values:
152              - "-0x7FF"
153          - values:
154              - "-0x7FFF"
155          - values:
156              - "-0x7FFFF"
157          - values:
158              - "-0x7FFFFF"
159          - values:
160              - "-0x7FFFFFF"
161          - values:
162              - "-0x7FFFFFFF"
163          - values:
164              - "-0x7FFFFFFFFF"
165          - values:
166              - "-0x7FFFFFFFFFF"
167          - values:
168              - "-0x7FFFFFFFFFFF"
169          - values:
170              - "-0x7FFFFFFFFFFFF"
171          - values:
172              - "-0x7FFFFFFFFFFFFF"
173          - values:
174              - "-0x7FFFFFFFFFFFFFF"
175          - values:
176              - "-0x7FFFFFFFFFFFFFFF"
177
178      - file-name: "reg"
179        isa:
180          instructions:
181            - sig: lda.64 v:in:b64
182              acc: out:b64
183              format: [op_v_8]
184        code-template: |
185          #
186              movi.64 %s, 0xDEADBEEFBADC0FFE
187              lda.64 %s
188              cmp.64 %s
189        description: Check lda.64 with various register numbers.
190        cases:
191          - values: [v0, v0, v0]
192          - values: [v1, v1, v1]
193          - values: [v7, v7, v7]
194          - values: [v8, v8, v8]
195          - values: [v15, v15, v15]
196          - values: [v16, v16, v16]
197          - values: [v127, v127, v127]
198          - values: [v128, v128, v128]
199          - values: [v255, v255, v255]
200          - values: [v255, v256, v255]
201            runner-options: [compile-failure]
202            case-check-type: no-check
203            description: Check lda.64 with incorrect register numbers.
204          - values: [v255, a0, v255]
205            runner-options: [compile-failure]
206            case-check-type: no-check
207            description: Check lda.64 with incorrect register numbers.
208          - values: [v255, 0, v255]
209            runner-options: [compile-failure]
210            case-check-type: no-check
211            description: Check lda.64 with incorrect register numbers.
212
213      - file-name: "type"
214        isa:
215          instructions:
216            - sig: lda.64 v:in:b64
217              acc: out:b64
218              format: [op_v_8]
219          verification:
220            - v1_type
221        description: Check lda.64 with incorrect source register type. Accumulator type is not checked.
222        runner-options: ['verifier-failure', 'verifier-debug-config']
223        tags: ["verifier"]
224        header-template: []
225        code-template: |
226            #
227            .record A {}
228            .record B {}
229            .record panda.String <external>
230            .record panda.Object <external>
231            .function i32 main() {
232                %s
233                *s
234                lda.64 v1
235                ldai 0
236        check-type: no-check
237        template-cases:
238          - values:
239              - |
240                #
241                    lda.type B
242          - values:
243              - |
244                #
245                    lda.type B[]
246          - values:
247              - |
248                #
249                    lda.type panda.String
250          - values:
251              - |
252                #
253                    lda.str "string"
254          - values:
255              - |
256                #
257                    lda.type panda.Object
258          - values:
259              - |
260                #
261                    movi v0, 10
262                    newarr v0, v0, i32[]
263                    lda.obj v0
264          - values:
265              - lda.null
266          - values:
267              - ldai 0
268          - values:
269              - ldai.64 0
270          - values:
271              - fldai.64 0
272        cases:
273          - values:
274              - |
275                #
276                    lda.type A
277                    sta.obj v1
278          - values:
279              - |
280                #
281                    lda.type A[]
282                    sta.obj v1
283          - values:
284              - |
285                #
286                    lda.type panda.String
287                    sta.obj v1
288          - values:
289              - |
290                #
291                    lda.str "string"
292                    sta.obj v1
293
294          - values:
295              - |
296                #
297                    lda.type panda.Object
298                    sta.obj v1
299          - values:
300              - |
301                #
302                    movi v1, 10
303                    newarr v1, v1, f64[]
304          - values:
305              - mov.null v1
306          - values:
307              - movi v1, 0
308
309      - file-name: uninitialized_regs
310        isa:
311          instructions:
312            - sig: lda.64 v:in:b64
313              acc: out:b64
314              format: [op_v_8]
315        description: Check lda.64 with uninitialized registers.
316        tags: ['verifier']
317        runner-options: ['verifier-failure', 'verifier-debug-config']
318        header-template: []
319        code-template: |
320          #
321          .function i32 main() {
322              lda.64 %s
323              ldai 0
324        check-type: no-check
325        cases:
326          - values:
327              - v0
328          - values:
329              - v8
330          - values:
331              - v15
332          - values:
333              - v255
334