1# Copyright (c) 2021-2022 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: "add2.64" 17 isa: 18 title: Two address binary operation on accumulator 19 description: > 20 Perform specified binary operation on accumulator and register and store result into accumulator 21 exceptions: 22 - x_none 23 commands: 24 - file-name: "op_vs_8_zero" 25 isa: 26 instructions: 27 - sig: add2.64 v:in:i64 28 acc: inout:i64 29 format: [op_v_8] 30 code-template: | 31 # 32 ldai.64 0 33 movi.64 v0, %s 34 add2.64 v0 35 movi.64 v0, %s 36 cmp.64 v0 37 description: Check add2.64 with zero and various values. 38 cases: 39 - values: 40 - "0" 41 - "0" 42 - values: 43 - "1" 44 - "1" 45 - values: 46 - "-1" 47 - "-1" 48 - values: 49 - "0x7FFFFFFFFFFFFFFF" 50 - "0x7FFFFFFFFFFFFFFF" 51 - values: 52 - "0x8000000000000000" 53 - "0x8000000000000000" 54 - values: 55 - "-0x7FFFFFFFFFFFFFFF" 56 - "-0x7FFFFFFFFFFFFFFF" 57 - values: 58 - "-0x8000000000000000" 59 - "-0x8000000000000000" 60 - values: 61 - "0xFFFFFFFFFFFFFFFF" 62 - "0xFFFFFFFFFFFFFFFF" 63 - values: 64 - "-0xFFFFFFFFFFFFFFFF" 65 - "-0xFFFFFFFFFFFFFFFF" 66 67 - file-name: "op_vs_8_pone" 68 isa: 69 instructions: 70 - sig: add2.64 v:in:i64 71 acc: inout:i64 72 format: [op_v_8] 73 code-template: | 74 # 75 ldai.64 1 76 movi.64 v0, %s 77 add2.64 v0 78 movi.64 v0, %s 79 cmp.64 v0 80 description: Check add2.64 with +1 and various values. 81 cases: 82 - values: 83 - "0" 84 - "1" 85 - values: 86 - "1" 87 - "2" 88 - values: 89 - "-1" 90 - "0" 91 - values: 92 - "0x7FFFFFFFFFFFFFFF" 93 - "0x8000000000000000" 94 bugid: ["966"] 95 - values: 96 - "0x8000000000000000" 97 - "0x8000000000000001" 98 - values: 99 - "-0x7FFFFFFFFFFFFFFF" 100 - "-0x7FFFFFFFFFFFFFFE" 101 - values: 102 - "-0x8000000000000000" 103 - "-0x7FFFFFFFFFFFFFFF" 104 - values: 105 - "0xFFFFFFFFFFFFFFFF" 106 - "0" 107 - values: 108 - "-0xFFFFFFFFFFFFFFFF" 109 - "-0xFFFFFFFFFFFFFFFE" 110 - file-name: "op_vs_8_none" 111 isa: 112 instructions: 113 - sig: add2.64 v:in:i64 114 acc: inout:i64 115 format: [op_v_8] 116 code-template: | 117 # 118 ldai.64 -1 119 movi.64 v0, %s 120 add2.64 v0 121 movi.64 v0, %s 122 cmp.64 v0 123 description: Check add2.64 with -1 and various values. 124 cases: 125 - values: 126 - "0" 127 - "-1" 128 - values: 129 - "1" 130 - "0" 131 - values: 132 - "-1" 133 - "-2" 134 - values: 135 - "0x7FFFFFFFFFFFFFFF" 136 - "0x7FFFFFFFFFFFFFFE" 137 - values: 138 - "0x8000000000000000" 139 - "0x7FFFFFFFFFFFFFFF" 140 bugid: ["966"] 141 - values: 142 - "-0x7FFFFFFFFFFFFFFF" 143 - "-0x8000000000000000" 144 - values: 145 - "-0x8000000000000000" 146 - "-0x8000000000000001" 147 bugid: ["966"] 148 - values: 149 - "0xFFFFFFFFFFFFFFFF" 150 - "-2" 151 - values: 152 - "-0xFFFFFFFFFFFFFFFF" 153 - "0" 154 - file-name: "op_vs_8_pmax" 155 isa: 156 instructions: 157 - sig: add2.64 v:in:i64 158 acc: inout:i64 159 format: [op_v_8] 160 code-template: | 161 # 162 ldai.64 0x7FFFFFFFFFFFFFFF 163 movi.64 v0, %s 164 add2.64 v0 165 movi.64 v0, %s 166 cmp.64 v0 167 description: Check add2.64 with +max and various values. 168 cases: 169 - values: 170 - "0" 171 - "0x7FFFFFFFFFFFFFFF" 172 - values: 173 - "1" 174 - "0x8000000000000000" 175 bugid: ["966"] 176 - values: 177 - "-1" 178 - "0x7FFFFFFFFFFFFFFE" 179 - values: 180 - "0x7FFFFFFFFFFFFFFF" 181 - "0xFFFFFFFFFFFFFFFE" 182 bugid: ["966"] 183 - values: 184 - "0x8000000000000000" 185 - "0xFFFFFFFFFFFFFFFF" 186 - values: 187 - "-0x7FFFFFFFFFFFFFFF" 188 - "0" 189 - values: 190 - "-0x8000000000000000" 191 - "0xFFFFFFFFFFFFFFFF" 192 - values: 193 - "0xFFFFFFFFFFFFFFFF" 194 - "0x7FFFFFFFFFFFFFFE" 195 - values: 196 - "-0xFFFFFFFFFFFFFFFF" 197 - "0x8000000000000000" 198 bugid: ["966"] 199 200 - file-name: "op_vs_8_nmax" 201 isa: 202 instructions: 203 - sig: add2.64 v:in:i64 204 acc: inout:i64 205 format: [op_v_8] 206 code-template: | 207 # 208 ldai.64 -0x8000000000000000 209 movi.64 v0, %s 210 add2.64 v0 211 movi.64 v0, %s 212 cmp.64 v0 213 description: Check add2.64 with -max and various values. 214 cases: 215 - values: 216 - "0" 217 - "0x8000000000000000" 218 - values: 219 - "1" 220 - "0x8000000000000001" 221 - values: 222 - "-1" 223 - "0x7FFFFFFFFFFFFFFF" 224 bugid: ["966"] 225 - values: 226 - "0x7FFFFFFFFFFFFFFF" 227 - "-1" 228 - values: 229 - "0x8000000000000000" 230 - "0" 231 bugid: ["966"] 232 - values: 233 - "-0x7FFFFFFFFFFFFFFF" 234 - "1" 235 bugid: ["966"] 236 - values: 237 - "-0x8000000000000000" 238 - "0" 239 bugid: ["966"] 240 - values: 241 - "0xFFFFFFFFFFFFFFFF" 242 - "0x7FFFFFFFFFFFFFFF" 243 bugid: ["966"] 244 - values: 245 - "-0xFFFFFFFFFFFFFFFF" 246 - "-0x7FFFFFFFFFFFFFFF" 247 248 - file-name: "vals" 249 isa: 250 instructions: 251 - sig: add2.64 v:in:i64 252 acc: inout:i64 253 format: [op_v_8] 254 code-template: | 255 # 256 ldai.64 %s 257 movi.64 v0, %s 258 add2.64 v0 259 movi.64 v0, %s 260 cmp.64 v0 261 description: Check add2.64 with various values. 262 tags: ["tsan"] 263 cases: 264 - values: 265 - "0x767c66b4775e89ab" 266 - "0xc2019955c2ef94bc" 267 - "0x387e000a3a4e1e67" 268 - values: 269 - "0xac6a086f0862a513" 270 - "0x2c0941e95ed5c79e" 271 - "0xd8734a5867386cb1" 272 - values: 273 - "0x92d20f25a81a20b4" 274 - "0x3b3a2ba0ea110801" 275 - "0xce0c3ac6922b28b5" 276 - values: 277 - "0xf454f3ceb91b30b" 278 - "0x460e9d1b06784a4d" 279 - "0x5553ec57f209fd58" 280 - values: 281 - "0xaa32bec0787f5b10" 282 - "0x23f3327c2c2518b2" 283 - "0xce25f13ca4a473c2" 284 - values: 285 - "0x1523129b49959007" 286 - "0x5458a639cc7c3688" 287 - "0x697bb8d51611c68f" 288 - values: 289 - "0x420f5bbdd367e8b4" 290 - "0xad250d24c5927c76" 291 - "0xef3468e298fa652a" 292 - values: 293 - "0x59756fb5b426cffa" 294 - "0xcdaf254f915f19c5" 295 - "0x272495054585e9bf" 296 - values: 297 - "0x64fae3293c3b3472" 298 - "0xcf198631f73277a5" 299 - "0x3414695b336dac17" 300 - values: 301 - "0xee9d771049e29300" 302 - "0x288f7917848c4828" 303 - "0x172cf027ce6edb28" 304 305 - file-name: "regs" 306 isa: 307 instructions: 308 - sig: add2.64 v:in:i64 309 acc: inout:i64 310 format: [op_v_8] 311 runner-options: ["compile-only"] 312 code-template: | 313 # 314 add2.64 %s 315 check-type: none 316 description: Check add2.64 with various register numbers. 317 cases: 318 - values: 319 - "v255" 320 - values: 321 - "v256" 322 runner-options: ["compile-failure"] 323 324 - file-name: "type" 325 bugid: ["964", "966"] 326 tags: ["verifier"] 327 isa: 328 verification: 329 - acc_type 330 - v1_type 331 runner-options: ['verifier-failure', 'verifier-config'] 332 header-template: [] 333 code-template: | 334 .record T {} 335 .function i32 main() { 336 %s 337 *s 338 add2.64 v0 339 check-type: exit-positive 340 description: Check 'add2.64' with incorrect accumulator and/or register types. 341 cases: 342 - values: 343 - ldai 0 344 - values: 345 - ldai.64 0 346 id: acc_ok 347 - values: 348 - fldai 0 349 bugid: ['7315'] 350 - values: 351 - fldai.64 0 352 bugid: ['7315'] 353 - values: 354 - lda.null 355 - values: 356 - | 357 # 358 movi v1, 0 359 newarr v1, v1, i32[] 360 lda.obj v1 361 - values: 362 - lda.str "0" 363 - values: 364 - lda.type T 365 - values: 366 - | 367 # 368 newobj v1, T 369 lda.obj v1 370 template-cases: 371 - values: 372 - movi v0, 0 373 - values: 374 - movi.64 v0, 0 375 exclude: [acc_ok] 376 - values: 377 - fmovi v0, 0 378 bugid: ['7315'] 379 - values: 380 - fmovi.64 v0, 0 381 bugid: ['7315'] 382 - values: 383 - mov.null v0 384 - values: 385 - | 386 # 387 movi v0, 0 388 newarr v0, v0, i32[] 389 - values: 390 - | 391 # 392 lda.str "0" 393 sta.obj v0 394 - values: 395 - | 396 # 397 lda.type T 398 sta.obj v0 399 - values: 400 - newobj v0, T 401 402 - file-name: uninitialized_regs 403 isa: 404 instructions: 405 - sig: add2.64 v:in:i64 406 acc: inout:i64 407 format: [op_v_8] 408 description: Check 'add2.64' with uninitialized registers. 409 tags: ["verifier"] 410 runner-options: ['verifier-failure', 'verifier-config'] 411 code-template: | 412 # 413 %s 414 *s 415 add2.64 *s 416 check-type: exit-positive 417 template-cases: 418 - values: 419 - "" 420 - values: 421 - ldai.64 0 422 exclude: [init] 423 424 cases: 425 - values: 426 - "" 427 - v0 428 - values: 429 - movi.64 v1, 0 430 - v1 431 id: init 432 - values: 433 - "" 434 - v8 435 - values: 436 - "" 437 - v15 438 - values: 439 - movi.64 v15, 0 440 - v15 441 id: init 442