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: "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 tags: ["clang_release_sanitizer_jit"] 49 - values: 50 - "0x7FFFFFFFFFFFFFFF" 51 bugid: ['1387'] 52 tags: ["clang_release_sanitizer_jit"] 53 - values: 54 - "0x8000000000000000" 55 bugid: ['1387'] 56 tags: ["clang_release_sanitizer_jit"] 57 - values: 58 - "-0x7FFFFFFFFFFFFFFF" 59 bugid: ['1387'] 60 tags: ["clang_release_sanitizer_jit"] 61 - values: 62 - "-0x8000000000000000" 63 bugid: ['1387'] 64 tags: ["clang_release_sanitizer_jit"] 65 - values: 66 - "0xFFFFFFFFFFFFFFFF" 67 bugid: ['1387'] 68 tags: ["clang_release_sanitizer_jit"] 69 - values: 70 - "-0xFFFFFFFFFFFFFFFF" 71 72 - file-name: "op_vs_8_pone" 73 isa: 74 instructions: 75 - sig: ashr2.64 v:in:i64 76 acc: inout:i64 77 prefix: bit 78 format: [pref_op_v_8] 79 code-template: | 80 # 81 ldai.64 1 82 movi.64 v0, %s 83 ashr2.64 v0 84 movi.64 v0, %s 85 cmp.64 v0 86 description: Check ashr2.64 with +1 and various values. 87 cases: 88 - values: 89 - "0" 90 - "1" 91 - values: 92 - "1" 93 - "0" 94 - values: 95 - "-1" 96 - "0" 97 bugid: ['1387'] 98 tags: ["clang_release_sanitizer_jit"] 99 - values: 100 - "0x7FFFFFFFFFFFFFFF" 101 - "0" 102 bugid: ['1387'] 103 tags: ["clang_release_sanitizer_jit"] 104 - values: 105 - "0x8000000000000000" 106 - "1" 107 bugid: ['1387'] 108 tags: ["clang_release_sanitizer_jit"] 109 - values: 110 - "-0x7FFFFFFFFFFFFFFF" 111 - "0" 112 bugid: ['1387'] 113 tags: ["clang_release_sanitizer_jit"] 114 - values: 115 - "-0x8000000000000000" 116 - "1" 117 bugid: ['1387'] 118 tags: ["clang_release_sanitizer_jit"] 119 - values: 120 - "0xFFFFFFFFFFFFFFFF" 121 - "0" 122 bugid: ['1387'] 123 tags: ["clang_release_sanitizer_jit"] 124 - values: 125 - "-0xFFFFFFFFFFFFFFFF" 126 - "0" 127 - file-name: "op_vs_8_none" 128 isa: 129 instructions: 130 - sig: ashr2.64 v:in:i64 131 acc: inout:i64 132 prefix: bit 133 format: [pref_op_v_8] 134 code-template: | 135 # 136 ldai.64 -1 137 movi.64 v0, %s 138 ashr2.64 v0 139 movi.64 v0, 0xFFFFFFFFFFFFFFFF 140 cmp.64 v0 141 description: Check ashr2.64 with -1 and various values. 142 cases: 143 - values: 144 - "0" 145 - values: 146 - "1" 147 - values: 148 - "-1" 149 bugid: ['1387'] 150 tags: ["clang_release_sanitizer_jit"] 151 - values: 152 - "0x7FFFFFFFFFFFFFFF" 153 bugid: ['1387'] 154 tags: ["clang_release_sanitizer_jit"] 155 - values: 156 - "0x8000000000000000" 157 bugid: ['1387'] 158 tags: ["clang_release_sanitizer_jit"] 159 - values: 160 - "-0x7FFFFFFFFFFFFFFF" 161 bugid: ['1387'] 162 tags: ["clang_release_sanitizer_jit"] 163 - values: 164 - "-0x8000000000000000" 165 bugid: ['1387'] 166 tags: ["clang_release_sanitizer_jit"] 167 - values: 168 - "0xFFFFFFFFFFFFFFFF" 169 bugid: ['1387'] 170 tags: ["clang_release_sanitizer_jit"] 171 - values: 172 - "-0xFFFFFFFFFFFFFFFF" 173 174 - file-name: "op_vs_8_pmax" 175 isa: 176 instructions: 177 - sig: ashr2.64 v:in:i64 178 acc: inout:i64 179 prefix: bit 180 format: [pref_op_v_8] 181 code-template: | 182 # 183 ldai.64 0x7FFFFFFFFFFFFFFF 184 movi.64 v0, %s 185 ashr2.64 v0 186 movi.64 v0, %s 187 cmp.64 v0 188 description: Check ashr2.64 with +max and various values. 189 cases: 190 - values: 191 - "0" 192 - "0x7FFFFFFFFFFFFFFF" 193 - values: 194 - "1" 195 - "0x3FFFFFFFFFFFFFFF" 196 - values: 197 - "-1" 198 - "0" 199 bugid: ['1387'] 200 tags: ["clang_release_sanitizer_jit"] 201 - values: 202 - "0x7FFFFFFFFFFFFFFF" 203 - "0" 204 bugid: ['1387'] 205 tags: ["clang_release_sanitizer_jit"] 206 - values: 207 - "0x8000000000000000" 208 - "0x7FFFFFFFFFFFFFFF" 209 bugid: ['1387'] 210 tags: ["clang_release_sanitizer_jit"] 211 - values: 212 - "-0x7FFFFFFFFFFFFFFF" 213 - "0x3FFFFFFFFFFFFFFF" 214 bugid: ['1387'] 215 tags: ["clang_release_sanitizer_jit"] 216 - values: 217 - "-0x8000000000000000" 218 - "0x7FFFFFFFFFFFFFFF" 219 bugid: ['1387'] 220 tags: ["clang_release_sanitizer_jit"] 221 - values: 222 - "0xFFFFFFFFFFFFFFFF" 223 - "0" 224 bugid: ['1387'] 225 tags: ["clang_release_sanitizer_jit"] 226 - values: 227 - "-0xFFFFFFFFFFFFFFFF" 228 - "0x3FFFFFFFFFFFFFFF" 229 230 - file-name: "op_vs_8_nmax" 231 isa: 232 instructions: 233 - sig: ashr2.64 v:in:i64 234 acc: inout:i64 235 prefix: bit 236 format: [pref_op_v_8] 237 code-template: | 238 # 239 ldai.64 -0x8000000000000000 240 movi.64 v0, %s 241 ashr2.64 v0 242 movi.64 v0, %s 243 cmp.64 v0 244 description: Check ashr2.64 with -max and various values. 245 cases: 246 - values: 247 - "0" 248 - "0x8000000000000000" 249 - values: 250 - "1" 251 - "0xC000000000000000" 252 - values: 253 - "-1" 254 - "0xFFFFFFFFFFFFFFFF" 255 bugid: ['1387'] 256 tags: ["clang_release_sanitizer_jit"] 257 - values: 258 - "0x7FFFFFFFFFFFFFFF" 259 - "0xFFFFFFFFFFFFFFFF" 260 bugid: ['1387'] 261 tags: ["clang_release_sanitizer_jit"] 262 - values: 263 - "0x8000000000000000" 264 - "0x8000000000000000" 265 bugid: ['1387'] 266 tags: ["clang_release_sanitizer_jit"] 267 - values: 268 - "-0x7FFFFFFFFFFFFFFF" 269 - "0xC000000000000000" 270 bugid: ['1387'] 271 tags: ["clang_release_sanitizer_jit"] 272 - values: 273 - "-0x8000000000000000" 274 - "0x8000000000000000" 275 bugid: ['1387'] 276 tags: ["clang_release_sanitizer_jit"] 277 - values: 278 - "0xFFFFFFFFFFFFFFFF" 279 - "0xFFFFFFFFFFFFFFFF" 280 bugid: ['1387'] 281 tags: ["clang_release_sanitizer_jit"] 282 - values: 283 - "-0xFFFFFFFFFFFFFFFF" 284 - "0xC000000000000000" 285 286 - file-name: "vals" 287 bugid: ['1387'] 288 tags: ["clang_release_sanitizer_jit", tsan] 289 isa: 290 instructions: 291 - sig: ashr2.64 v:in:i64 292 acc: inout:i64 293 prefix: bit 294 format: [pref_op_v_8] 295 code-template: | 296 # 297 ldai.64 %s 298 movi.64 v0, %s 299 ashr2.64 v0 300 movi.64 v0, %s 301 cmp.64 v0 302 description: Check ashr2.64 with various values. 303 cases: 304 - values: 305 - "0xFE6674C201B14627" 306 - "0x2601D2490A8864EA" 307 - "0xFFFFFFFFFFFF999D" 308 - values: 309 - "0x842E04478F67F2E3" 310 - "0x368CE351BEBEDC0B" 311 - "0xFFF085C088F1ECFE" 312 - values: 313 - "0x1B16734EA3D2AF62" 314 - "0x1FC29369311C09EF" 315 - "0x362C" 316 - values: 317 - "0x183164BF6007479A" 318 - "0x52B816408F69B085" 319 - "0xC18B25FB003A3C" 320 - values: 321 - "0x564211418F5FFAB3" 322 - "0xE67A09B21E79C43C" 323 - "0x5" 324 - values: 325 - "0xE31AE0FB7EF37660" 326 - "0xBFC173B45A158E5D" 327 - "0xFFFFFFFF18D707DB" 328 - values: 329 - "0xB16BE43C76A2D3B8" 330 - "0xE78C20F13E09B801" 331 - "0xD8B5F21E3B5169DC" 332 - values: 333 - "0x7584DE0D203F130C" 334 - "0xE6DA75A526C62DF8" 335 - "0x75" 336 - values: 337 - "0xA646E54FA8F51A68" 338 - "0xF363814FD00C529C" 339 - "0xFFFFFFFA646E54FA" 340 - values: 341 - "0xE96F352D8B13BB9A" 342 - "0x67833675616CF416" 343 - "0xFFFFFFA5BCD4B62C" 344 345 - file-name: "regs" 346 isa: 347 instructions: 348 - sig: ashr2.64 v:in:i64 349 acc: inout:i64 350 prefix: bit 351 format: [pref_op_v_8] 352 runner-options: ['compile-only'] 353 code-template: | 354 # 355 ashr2.64 %s 356 check-type: none 357 description: Check ashr2.64 with various register numbers. 358 cases: 359 - values: 360 - "v255" 361 - values: 362 - "v256" 363 runner-options: ['compile-failure'] 364 365 - file-name: "type" 366 bugid: ["964", "966"] 367 tags: ["verifier"] 368 isa: 369 instructions: 370 - sig: ashr2.64 v:in:i64 371 acc: inout:i64 372 prefix: bit 373 format: [pref_op_v_8] 374 verification: 375 - acc_type 376 - v1_type 377 runner-options: ['verifier-failure', 'verifier-debug-config'] 378 code-template: | 379 # 380 %s 381 %s 382 ashr2.64 v0 383 ldai.64 0 384 check-type: no-check 385 description: Check ashr2.64 with incorrect accumulator and register type. 386 cases: 387 - values: 388 - "lda.null" 389 - "movi.64 v0, 0" 390 - values: 391 - "ldai.64 0 " 392 - "mov.null v0" 393 - values: 394 - "lda.null" 395 - "mov.null v0" 396