• 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: "ldai"
17    isa:
18      title: Load accumulator from immediate
19      description: >
20          Load immediate into accumulator. For short formats immediate is sign extended to operand size.
21      exceptions:
22          - x_none
23      verification:
24          - none
25    commands:
26      - file-name: "pos"
27        isa:
28          instructions:
29            - sig: ldai imm:i32
30              acc: out:i32
31              format: [op_imm_8, op_imm_16]
32            - sig: ldai imm:i32
33              acc: out:i32
34              format: [op_imm_32]
35        description: Check ldai with various positive values.
36        code-template: |
37          #
38              ldai %s
39              movi v0, %s
40              jne v0, set_failure
41              ldai 0
42              jmp fall_through
43          set_failure:
44              ldai 1
45          fall_through:
46        tags: ['tsan']
47        cases:
48          - values:
49              - "0"
50              - "0"
51          - values:
52              - "1"
53              - "1"
54          - values:
55              - "255"
56              - "255"
57          - values:
58              - "65535"
59              - "0xFFFF"
60          - values:
61              - "0x12345678"
62              - "0x12345678"
63          - values:
64              - "0xFFFFFFFF"
65              - "-1"
66          - values:
67              - "2147483647"
68              - "2147483647"
69          - values:
70              - "2147483648"
71              - "2147483648"
72          - values:
73              - "0x1234567890ABCDEF"
74              - "0x90ABCDEF"
75          - values:
76              - "4294967295"
77              - "4294967295"
78          - values:
79              - "4294967295"
80              - "-1"
81          - values:
82              - "4294967296"
83              - "4294967296"
84          - values:
85              - "4294967296"
86              - "0"
87          - values:
88              - "0.0"
89              - "0"
90            runner-options: [compile-failure]
91            description: Check ldai with incorrect positive values (f64).
92          - values:
93              - "1.1"
94              - "1"
95            runner-options: [compile-failure]
96            description: Check ldai with incorrect positive values (f64).
97      - file-name: "neg"
98        isa:
99          instructions:
100            - sig: ldai imm:i32
101              acc: out:i32
102              format: [op_imm_8, op_imm_16]
103        code-template: |
104          #
105              ldai %s
106              movi v0, %s
107              jne v0, set_failure
108              ldai 0
109              jmp fall_through
110          set_failure:
111              ldai 1
112          fall_through:
113        description: Check ldai with various negative values.
114        cases:
115          - values:
116              - "-0"
117              - "0"
118          - values:
119              - "-1"
120              - "-1"
121          - values:
122              - "-255"
123              - "-255"
124          - values:
125              - "-65535"
126              - "-0xFFFF"
127          - values:
128              - "-0x12345678"
129              - "-0x12345678"
130          - values:
131              - "-0xFFFFFFFF"
132              - "1"
133          - values:
134              - "-2147483647"
135              - "-2147483647"
136          - values:
137              - "-2147483648"
138              - "-2147483648"
139          - values:
140              - "-2147483649"
141              - "0x7FFFFFFF"
142          - values:
143              - "-2147483648"
144              - "0x80000000"
145          - values:
146              - "-0x1234567890ABCDEF"
147              - "-0x1234567890ABCDEF"
148
149          - values:
150              - "-4294967295"
151              - "-4294967295"
152          - values:
153              - "-4294967296"
154              - "0"
155          - values:
156              - "-0.0"
157              - "0"
158            runner-options: [compile-failure]
159            description: Check ldai with incorrect negative values (f64).
160          - values:
161              - "-1.1"
162              - "-1"
163            runner-options: [compile-failure]
164            description: Check ldai with incorrect negative values (f64).
165
166      - file-name: "vals"
167        isa:
168          instructions:
169            - sig: ldai imm:i32
170              acc: out:i32
171              format: [op_imm_8, op_imm_16]
172        description: Check compiler shrinks value to 32 bit.
173        code-template: |
174          #
175              ldai %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        cases:
184          - values:
185              - "2147483648"
186              - "0xFFFFFFFF80000000"
187          - values:
188              - "0x1234567890ABCDEF"
189              - "0xFFFFFFFF90ABCDEF"
190          - values:
191              - "0xFFFFFFFF"
192              - "0xFFFFFFFFFFFFFFFF"
193          - values:
194              - "-1"
195              - "0xFFFFFFFFFFFFFFFF"
196          - values:
197              - "0xFFFFFFFF7FFFFFFF"
198              - "0x7FFFFFFF"
199          - values:
200              - "0xFFFFFFFF00000000"
201              - "0"
202          - values:
203              - "-0xFFFFFFFF"
204              - "1"
205          - values:
206              - "0x80000000"
207              - "0xFFFFFFFF80000000"
208          - values:
209              - "0x1234567880000000"
210              - "0xFFFFFFFF80000000"
211          - values:
212              - "0x90ABCDEF80000000"
213              - "0xFFFFFFFF80000000"
214          - values:
215              - "-0x1234567890ABCDEF"
216              - "-0xFFFFFFFF90ABCDEF"
217          - values:
218              - "-4294967296"
219              - "0"
220          - values:
221              - "4294967296"
222              - "0"
223