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