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: "shl2" 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: shl2 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 shl2 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 shl2 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: shl2 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 shl2 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 shl2 with +1 and various values. 97 cases: 98 - values: 99 - "0" 100 - "1" 101 - values: 102 - "1" 103 - "2" 104 - values: 105 - "-1" 106 - "0x80000000" 107 bugid: ['1387'] 108 tags: ["clang_release_sanitizer_jit"] 109 - values: 110 - "0x7FFFFFFF" 111 - "0x80000000" 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 - "2" 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 - "0x80000000" 132 bugid: ['1387'] 133 tags: ["clang_release_sanitizer_jit"] 134 - values: 135 - "-0xFFFFFFFF" 136 - "2" 137 - file-name: "op_vs_8_none" 138 isa: 139 instructions: 140 - sig: shl2 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 shl2 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 shl2 with -1 and various values. 157 cases: 158 - values: 159 - "0" 160 - "0xFFFFFFFF" 161 - values: 162 - "1" 163 - "0xFFFFFFFE" 164 - values: 165 - "-1" 166 - "0x80000000" 167 bugid: ['1387'] 168 tags: ["clang_release_sanitizer_jit"] 169 - values: 170 - "0x7FFFFFFF" 171 - "0x80000000" 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 - "0xFFFFFFFE" 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 - "0x80000000" 192 bugid: ['1387'] 193 tags: ["clang_release_sanitizer_jit"] 194 - values: 195 - "-0xFFFFFFFF" 196 - "0xFFFFFFFE" 197 198 - file-name: "op_vs_8_pmax" 199 isa: 200 instructions: 201 - sig: shl2 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 shl2 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 shl2 with +max and various values. 218 cases: 219 - values: 220 - "0" 221 - "0x7FFFFFFF" 222 - values: 223 - "1" 224 - "0xFFFFFFFE" 225 - values: 226 - "-1" 227 - "0x80000000" 228 bugid: ['1387'] 229 tags: ["clang_release_sanitizer_jit"] 230 - values: 231 - "0x7FFFFFFF" 232 - "0x80000000" 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 - "0xFFFFFFFE" 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 - "0x80000000" 253 bugid: ['1387'] 254 tags: ["clang_release_sanitizer_jit"] 255 - values: 256 - "-0xFFFFFFFF" 257 - "0xFFFFFFFE" 258 259 - file-name: "op_vs_8_nmax" 260 isa: 261 instructions: 262 - sig: shl2 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 shl2 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 shl2 with -max and various values. 279 cases: 280 - values: 281 - "0" 282 - "0x80000000" 283 - values: 284 - "1" 285 - "0" 286 - values: 287 - "-1" 288 - "0" 289 bugid: ['1387'] 290 tags: ["clang_release_sanitizer_jit"] 291 - values: 292 - "0x7FFFFFFF" 293 - "0x0" 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 - "0" 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 - "0" 314 bugid: ['1387'] 315 tags: ["clang_release_sanitizer_jit"] 316 - values: 317 - "-0xFFFFFFFF" 318 - "0" 319 320 - file-name: "vals" 321 bugid: ['1387'] 322 tags: ["clang_release_sanitizer_jit", "tsan"] 323 isa: 324 instructions: 325 - sig: shl2 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 shl2 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 shl2 with various values. 342 cases: 343 - values: 344 - "0x61696FFF" 345 - "0x56B814E8" 346 - "0x696FFF00" 347 - values: 348 - "0x76C5AE08" 349 - "0x8DFD0A2F" 350 - "0xD7040000" 351 - values: 352 - "0x15FFEF1D" 353 - "0x2C85774D" 354 - "0xFDE3A000" 355 - values: 356 - "0x3130A634" 357 - "0xD3CDE405" 358 - "0x2614C680" 359 - values: 360 - "0x8E8A9883" 361 - "0xDE3A4635" 362 - "0x10600000" 363 - values: 364 - "0x3BF5A79C" 365 - "0xE799C159" 366 - "0x38000000" 367 - values: 368 - "0xBF8EF337" 369 - "0x66068B26" 370 - "0xE3BCCDC0" 371 - values: 372 - "0xDC2D1B09" 373 - "0x3D252477" 374 - "0x84800000" 375 - values: 376 - "0x960BD85E" 377 - "0xB357B7D" 378 - "0xC0000000" 379 - values: 380 - "0x40BB756D" 381 - "0xDAAA49C4" 382 - "0xBB756D0" 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: shl2 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 shl2 v0 399 movi.64 v0, %s 400 cmp.64 v0 401 description: Check shl2 with incorrect accumulator and register types. 402 cases: 403 - values: 404 - "0x17FFFFFFF" 405 - "0x1F" 406 - "0xFFFFFFFF80000000" 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: shl2 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 shl2 %s 427 check-type: none 428 description: Check shl2 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: shl2 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 shl2 v0 454 ldai 0 455 check-type: no-check 456 description: Check shl2 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