• 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: "movi"
17    isa:
18      title: Move immediate-to-register
19      description: >
20        Move integer immediate into a register. For short formats immediate is sign extended to operand size.
21      exceptions:
22        - x_none
23      verification:
24        - none
25    commands:
26      - file-name: "imm_4_8_16_32"
27        isa:
28          instructions:
29            - sig: movi v:out:i32, imm:i32
30              acc: none
31              format: [op_v_4_imm_4, op_v_8_imm_8, op_v_8_imm_16]
32            - sig: movi v:out:i32, imm:i32
33              acc: none
34              format: [op_v_8_imm_32]
35        description: Check movi with various values.
36        tags: ['tsan']
37        code-template: |
38          #
39              ldai %s
40              movi v0, %s
41              jne v0, set_failure
42              ldai 0
43              jmp fall_through
44          set_failure:
45              ldai 1
46          fall_through:
47        cases:
48          - values:
49              - 0
50              - 0
51          - values:
52              - 1
53              - 1
54          - values:
55              - -1
56              - -1
57          - values:
58              - 0xF
59              - 0xF
60          - values:
61              - -0xF
62              - -0xF
63          - values:
64              - 0x7F
65              - 0x7F
66          - values:
67              - -0x7F
68              - -0x7F
69          - values:
70              - 0xFF
71              - 0xFF
72          - values:
73              - -0xFF
74              - -0xFF
75          - values:
76              - 0x7FFF
77              - 0x7FFF
78          - values:
79              - -0x7FFF
80              - -0x7FFF
81          - values:
82              - 0xFFFF
83              - 0xFFFF
84          - values:
85              - -0xFFFF
86              - -0xFFFF
87          - values:
88              - 0x7FFFFFFF
89              - 0x7FFFFFFF
90          - values:
91              - -0x7FFFFFFF
92              - -0x7FFFFFFF
93          - values:
94              - 0xFFFFFFFF
95              - 0xFFFFFFFF
96          - values:
97              - -0xFFFFFFFF
98              - -0xFFFFFFFF
99          - values:
100              - 0x12345678
101              - 0x12345678
102          - values:
103              - -0x12345678
104              - -0x12345678
105          - values:
106              - 0xFEDCBA98
107              - 0xFEDCBA98
108          - values:
109              - -0xFEDCBA98
110              - -0xFEDCBA98
111          - values:
112              - 0
113              - 0x100000000
114          - values:
115              - 0
116              - -0x100000000
117          - values:
118              - 1
119              - 0x100000001
120          - values:
121              - -1
122              - -0x100000001
123          - values:
124              - 0
125              - 0.1
126            runner-options: [compile-failure]
127            case-check-type: no-check
128            description: Check movi with incorrect value (f64 value).
129          - values:
130              - 0
131              - 1e1
132            runner-options: [compile-failure]
133            case-check-type: no-check
134            description: Check movi with incorrect value (f64 value).
135          - values:
136              - 0
137              - e1
138            runner-options: [compile-failure]
139            case-check-type: no-check
140            description: Check movi with incorrect value (incorrect literal).
141
142      - file-name: "vals"
143        isa:
144          instructions:
145            - sig: movi v:out:i32, imm:i32
146              acc: none
147              format: [op_v_4_imm_4, op_v_8_imm_8, op_v_8_imm_16]
148            - sig: movi v:out:i32, imm:i32
149              acc: none
150              format: [op_v_8_imm_32]
151        code-template: |
152          #
153              ldai %s
154              movi v0, %s
155              jne v0, set_failure
156              ldai 0
157              jmp fall_through
158          set_failure:
159              ldai 1
160          fall_through:
161        description: Check compiler shrinks value to 32 bit.
162        cases:
163          - values:
164              - 0
165              - 0x100000000
166          - values:
167              - 1
168              - 0xFFFFFFFF00000001
169          - values:
170              - 1
171              - 0x100000001
172          - values:
173              - -1
174              - -0x100000001
175          - values:
176              - 0xFFFFFFFFFFFFFFFF
177              - 0xFFFFFFFF
178          - values:
179              - 0xFFFFFFFFFFFFFFFF
180              - 0x12345678FFFFFFFF
181
182      - file-name: "vd_4_8"
183        isa:
184          instructions:
185            - sig: movi v:out:i32, imm:i32
186              acc: none
187              format: [op_v_4_imm_4, op_v_8_imm_8, op_v_8_imm_16]
188            - sig: movi v:out:i32, imm:i32
189              acc: none
190              format: [op_v_8_imm_32]
191        code-template: |
192          #
193              ldai 1
194              movi %s, 1
195              jne %s, set_failure
196              ldai 0
197              jmp fall_through
198          set_failure:
199              ldai 1
200          fall_through:
201        description: Check movi instruction with different register numbers (8 bit).
202        cases:
203          - values:
204              - v0
205              - v0
206          - values:
207              - v1
208              - v1
209          - values:
210              - v15
211              - v15
212          - values:
213              - v16
214              - v16
215          - values:
216              - v255
217              - v255
218          - values:
219              - v256
220              - v0
221            runner-options: [compile-failure]
222            case-check-type: no-check
223            description: Check movi instruction with out-of-range register number.
224