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