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