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: "ashr2.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: ashr2.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 ashr2.64 v0 37 movi.64 v0, 0 38 cmp.64 v0 39 description: Check ashr2.64 with 0 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: ashr2.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 ashr2.64 v0 78 movi.64 v0, %s 79 cmp.64 v0 80 description: Check ashr2.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: ashr2.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 ashr2.64 v0 127 movi.64 v0, 0xFFFFFFFFFFFFFFFF 128 cmp.64 v0 129 description: Check ashr2.64 with -1 and various values. 130 cases: 131 - values: 132 - "0" 133 - values: 134 - "1" 135 - values: 136 - "-1" 137 bugid: ['1387'] 138 - values: 139 - "0x7FFFFFFFFFFFFFFF" 140 bugid: ['1387'] 141 - values: 142 - "0x8000000000000000" 143 bugid: ['1387'] 144 - values: 145 - "-0x7FFFFFFFFFFFFFFF" 146 bugid: ['1387'] 147 - values: 148 - "-0x8000000000000000" 149 bugid: ['1387'] 150 - values: 151 - "0xFFFFFFFFFFFFFFFF" 152 bugid: ['1387'] 153 - values: 154 - "-0xFFFFFFFFFFFFFFFF" 155 156 - file-name: "op_vs_8_pmax" 157 isa: 158 instructions: 159 - sig: ashr2.64 v:in:i64 160 acc: inout:i64 161 prefix: bit 162 format: [pref_op_v_8] 163 code-template: | 164 # 165 ldai.64 0x7FFFFFFFFFFFFFFF 166 movi.64 v0, %s 167 ashr2.64 v0 168 movi.64 v0, %s 169 cmp.64 v0 170 description: Check ashr2.64 with +max and various values. 171 cases: 172 - values: 173 - "0" 174 - "0x7FFFFFFFFFFFFFFF" 175 - values: 176 - "1" 177 - "0x3FFFFFFFFFFFFFFF" 178 - values: 179 - "-1" 180 - "0" 181 bugid: ['1387'] 182 - values: 183 - "0x7FFFFFFFFFFFFFFF" 184 - "0" 185 bugid: ['1387'] 186 - values: 187 - "0x8000000000000000" 188 - "0x7FFFFFFFFFFFFFFF" 189 bugid: ['1387'] 190 - values: 191 - "-0x7FFFFFFFFFFFFFFF" 192 - "0x3FFFFFFFFFFFFFFF" 193 bugid: ['1387'] 194 - values: 195 - "-0x8000000000000000" 196 - "0x7FFFFFFFFFFFFFFF" 197 bugid: ['1387'] 198 - values: 199 - "0xFFFFFFFFFFFFFFFF" 200 - "0" 201 bugid: ['1387'] 202 - values: 203 - "-0xFFFFFFFFFFFFFFFF" 204 - "0x3FFFFFFFFFFFFFFF" 205 206 - file-name: "op_vs_8_nmax" 207 isa: 208 instructions: 209 - sig: ashr2.64 v:in:i64 210 acc: inout:i64 211 prefix: bit 212 format: [pref_op_v_8] 213 code-template: | 214 # 215 ldai.64 -0x8000000000000000 216 movi.64 v0, %s 217 ashr2.64 v0 218 movi.64 v0, %s 219 cmp.64 v0 220 description: Check ashr2.64 with -max and various values. 221 cases: 222 - values: 223 - "0" 224 - "0x8000000000000000" 225 - values: 226 - "1" 227 - "0xC000000000000000" 228 - values: 229 - "-1" 230 - "0xFFFFFFFFFFFFFFFF" 231 bugid: ['1387'] 232 - values: 233 - "0x7FFFFFFFFFFFFFFF" 234 - "0xFFFFFFFFFFFFFFFF" 235 bugid: ['1387'] 236 - values: 237 - "0x8000000000000000" 238 - "0x8000000000000000" 239 bugid: ['1387'] 240 - values: 241 - "-0x7FFFFFFFFFFFFFFF" 242 - "0xC000000000000000" 243 bugid: ['1387'] 244 - values: 245 - "-0x8000000000000000" 246 - "0x8000000000000000" 247 bugid: ['1387'] 248 - values: 249 - "0xFFFFFFFFFFFFFFFF" 250 - "0xFFFFFFFFFFFFFFFF" 251 bugid: ['1387'] 252 - values: 253 - "-0xFFFFFFFFFFFFFFFF" 254 - "0xC000000000000000" 255 256 - file-name: "vals" 257 bugid: ['1387'] 258 tags: [tsan] 259 isa: 260 instructions: 261 - sig: ashr2.64 v:in:i64 262 acc: inout:i64 263 prefix: bit 264 format: [pref_op_v_8] 265 code-template: | 266 # 267 ldai.64 %s 268 movi.64 v0, %s 269 ashr2.64 v0 270 movi.64 v0, %s 271 cmp.64 v0 272 description: Check ashr2.64 with various values. 273 cases: 274 - values: 275 - "0xFE6674C201B14627" 276 - "0x2601D2490A8864EA" 277 - "0xFFFFFFFFFFFF999D" 278 - values: 279 - "0x842E04478F67F2E3" 280 - "0x368CE351BEBEDC0B" 281 - "0xFFF085C088F1ECFE" 282 - values: 283 - "0x1B16734EA3D2AF62" 284 - "0x1FC29369311C09EF" 285 - "0x362C" 286 - values: 287 - "0x183164BF6007479A" 288 - "0x52B816408F69B085" 289 - "0xC18B25FB003A3C" 290 - values: 291 - "0x564211418F5FFAB3" 292 - "0xE67A09B21E79C43C" 293 - "0x5" 294 - values: 295 - "0xE31AE0FB7EF37660" 296 - "0xBFC173B45A158E5D" 297 - "0xFFFFFFFF18D707DB" 298 - values: 299 - "0xB16BE43C76A2D3B8" 300 - "0xE78C20F13E09B801" 301 - "0xD8B5F21E3B5169DC" 302 - values: 303 - "0x7584DE0D203F130C" 304 - "0xE6DA75A526C62DF8" 305 - "0x75" 306 - values: 307 - "0xA646E54FA8F51A68" 308 - "0xF363814FD00C529C" 309 - "0xFFFFFFFA646E54FA" 310 - values: 311 - "0xE96F352D8B13BB9A" 312 - "0x67833675616CF416" 313 - "0xFFFFFFA5BCD4B62C" 314 315 - file-name: "regs" 316 isa: 317 instructions: 318 - sig: ashr2.64 v:in:i64 319 acc: inout:i64 320 prefix: bit 321 format: [pref_op_v_8] 322 runner-options: ['compile-only'] 323 code-template: | 324 # 325 ashr2.64 %s 326 check-type: none 327 description: Check ashr2.64 with various register numbers. 328 cases: 329 - values: 330 - "v255" 331 - values: 332 - "v256" 333 runner-options: ['compile-failure'] 334 335 - file-name: "type" 336 bugid: ["964", "966"] 337 tags: ["verifier"] 338 isa: 339 verification: 340 - acc_type 341 - v1_type 342 runner-options: ['verifier-failure', 'verifier-config'] 343 header-template: [] 344 code-template: | 345 .record T {} 346 .function i32 main() { 347 %s 348 *s 349 ashr2.64 v0 350 check-type: exit-positive 351 description: Check 'ashr2.64' with incorrect accumulator and/or register types. 352 cases: 353 - values: 354 - ldai 0 355 - values: 356 - ldai.64 0 357 id: acc_ok 358 - values: 359 - fldai 0 360 bugid: ['7315'] 361 - values: 362 - fldai.64 0 363 bugid: ['7315'] 364 - values: 365 - lda.null 366 - values: 367 - | 368 # 369 movi v1, 0 370 newarr v1, v1, i32[] 371 lda.obj v1 372 - values: 373 - lda.str "0" 374 - values: 375 - lda.type T 376 - values: 377 - | 378 # 379 newobj v1, T 380 lda.obj v1 381 template-cases: 382 - values: 383 - movi v0, 0 384 - values: 385 - movi.64 v0, 0 386 exclude: [acc_ok] 387 - values: 388 - fmovi v0, 0 389 bugid: ['7315'] 390 - values: 391 - fmovi.64 v0, 0 392 bugid: ['7315'] 393 - values: 394 - mov.null v0 395 - values: 396 - | 397 # 398 movi v0, 0 399 newarr v0, v0, i32[] 400 - values: 401 - | 402 # 403 lda.str "0" 404 sta.obj v0 405 - values: 406 - | 407 # 408 lda.type T 409 sta.obj v0 410 - values: 411 - newobj v0, T 412 413 414 - file-name: uninitialized_regs 415 isa: 416 instructions: 417 - sig: ashr2.64 v:in:i64 418 acc: inout:i64 419 prefix: bit 420 format: [pref_op_v_8] 421 description: Check 'ashr2.64' with uninitialized registers. 422 tags: ['verifier'] 423 runner-options: ['verifier-failure', 'verifier-config'] 424 code-template: | 425 # 426 %s 427 *s 428 ashr2.64 *s 429 check-type: exit-positive 430 template-cases: 431 - values: 432 - '' 433 - values: 434 - ldai.64 0 435 exclude: [init] 436 cases: 437 - values: 438 - '' 439 - v0 440 - values: 441 - movi.64 v1, 0 442 - v1 443 id: init 444 - values: 445 - '' 446 - v8 447 - values: 448 - '' 449 - v15 450 - values: 451 - movi.64 v15, 0 452 - v15 453 id: init 454