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.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 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: shr2.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 shr2.64 v0 84 movi.64 v0, %s 85 cmp.64 v0 86 description: Check shr2.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: shr2.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 shr2.64 v0 139 movi.64 v0, %s 140 cmp.64 v0 141 description: Check shr2.64 with -1 and various values. 142 cases: 143 - values: 144 - "0" 145 - "0xFFFFFFFFFFFFFFFF" 146 - values: 147 - "1" 148 - "0x7FFFFFFFFFFFFFFF" 149 - values: 150 - "-1" 151 - "1" 152 bugid: ['1387'] 153 tags: ["clang_release_sanitizer_jit"] 154 - values: 155 - "0x7FFFFFFFFFFFFFFF" 156 - "1" 157 bugid: ['1387'] 158 tags: ["clang_release_sanitizer_jit"] 159 - values: 160 - "0x8000000000000000" 161 - "0xFFFFFFFFFFFFFFFF" 162 bugid: ['1387'] 163 tags: ["clang_release_sanitizer_jit"] 164 - values: 165 - "-0x7FFFFFFFFFFFFFFF" 166 - "0x7FFFFFFFFFFFFFFF" 167 bugid: ['1387'] 168 tags: ["clang_release_sanitizer_jit"] 169 - values: 170 - "-0x8000000000000000" 171 - "0xFFFFFFFFFFFFFFFF" 172 bugid: ['1387'] 173 tags: ["clang_release_sanitizer_jit"] 174 - values: 175 - "0xFFFFFFFFFFFFFFFF" 176 - "1" 177 bugid: ['1387'] 178 tags: ["clang_release_sanitizer_jit"] 179 - values: 180 - "-0xFFFFFFFFFFFFFFFF" 181 - "0x7FFFFFFFFFFFFFFF" 182 183 - file-name: "op_vs_8_pmax" 184 isa: 185 instructions: 186 - sig: shr2.64 v:in:i64 187 acc: inout:i64 188 prefix: bit 189 format: [pref_op_v_8] 190 code-template: | 191 # 192 ldai.64 0x7FFFFFFFFFFFFFFF 193 movi.64 v0, %s 194 shr2.64 v0 195 movi.64 v0, %s 196 cmp.64 v0 197 description: Check shr2.64 with +max and various values. 198 cases: 199 - values: 200 - "0" 201 - "0x7FFFFFFFFFFFFFFF" 202 - values: 203 - "1" 204 - "0x3FFFFFFFFFFFFFFF" 205 - values: 206 - "-1" 207 - "0" 208 bugid: ['1387'] 209 tags: ["clang_release_sanitizer_jit"] 210 - values: 211 - "0x7FFFFFFFFFFFFFFF" 212 - "0" 213 bugid: ['1387'] 214 tags: ["clang_release_sanitizer_jit"] 215 - values: 216 - "0x8000000000000000" 217 - "0x7FFFFFFFFFFFFFFF" 218 bugid: ['1387'] 219 tags: ["clang_release_sanitizer_jit"] 220 - values: 221 - "-0x7FFFFFFFFFFFFFFF" 222 - "0x3FFFFFFFFFFFFFFF" 223 bugid: ['1387'] 224 tags: ["clang_release_sanitizer_jit"] 225 - values: 226 - "-0x8000000000000000" 227 - "0x7FFFFFFFFFFFFFFF" 228 bugid: ['1387'] 229 tags: ["clang_release_sanitizer_jit"] 230 - values: 231 - "0xFFFFFFFFFFFFFFFF" 232 - "0" 233 bugid: ['1387'] 234 tags: ["clang_release_sanitizer_jit"] 235 - values: 236 - "-0xFFFFFFFFFFFFFFFF" 237 - "0x3FFFFFFFFFFFFFFF" 238 239 - file-name: "op_vs_8_nmax" 240 isa: 241 instructions: 242 - sig: shr2.64 v:in:i64 243 acc: inout:i64 244 prefix: bit 245 format: [pref_op_v_8] 246 code-template: | 247 # 248 ldai.64 -0x8000000000000000 249 movi.64 v0, %s 250 shr2.64 v0 251 movi.64 v0, %s 252 cmp.64 v0 253 description: Check shr2.64 with -max and various values. 254 cases: 255 - values: 256 - "0" 257 - "0x8000000000000000" 258 - values: 259 - "1" 260 - "0x4000000000000000" 261 - values: 262 - "-1" 263 - "1" 264 bugid: ['1387'] 265 tags: ["clang_release_sanitizer_jit"] 266 - values: 267 - "0x7FFFFFFFFFFFFFFF" 268 - "1" 269 bugid: ['1387'] 270 tags: ["clang_release_sanitizer_jit"] 271 - values: 272 - "0x8000000000000000" 273 - "0x8000000000000000" 274 bugid: ['1387'] 275 tags: ["clang_release_sanitizer_jit"] 276 - values: 277 - "-0x7FFFFFFFFFFFFFFF" 278 - "0x4000000000000000" 279 bugid: ['1387'] 280 tags: ["clang_release_sanitizer_jit"] 281 - values: 282 - "-0x8000000000000000" 283 - "0x8000000000000000" 284 bugid: ['1387'] 285 tags: ["clang_release_sanitizer_jit"] 286 - values: 287 - "0xFFFFFFFFFFFFFFFF" 288 - "1" 289 bugid: ['1387'] 290 tags: ["clang_release_sanitizer_jit"] 291 - values: 292 - "-0xFFFFFFFFFFFFFFFF" 293 - "0x4000000000000000" 294 295 - file-name: "vals" 296 bugid: ['1387'] 297 tags: ["clang_release_sanitizer_jit", "tsan"] 298 isa: 299 instructions: 300 - sig: shr2.64 v:in:i64 301 acc: inout:i64 302 prefix: bit 303 format: [pref_op_v_8] 304 code-template: | 305 # 306 ldai.64 %s 307 movi.64 v0, %s 308 shr2.64 v0 309 movi.64 v0, %s 310 cmp.64 v0 311 description: Check shr2.64 with various values. 312 cases: 313 - values: 314 - "0xD684721A1AD5B8E2" 315 - "0xE39E55688015D19F" 316 - "0x1AD08E434" 317 - values: 318 - "0xA693E390D8B155FC" 319 - "0x3D23338A79151EB4" 320 - "0xA69" 321 - values: 322 - "0x322A7EA4208F494A" 323 - "0xF27D95C7E4E1C78B" 324 - "0x6454FD48411E9" 325 - values: 326 - "0x94F4CC92340FF4D9" 327 - "0x714FA24E0FE0B965" 328 - "0x4A7A664" 329 - values: 330 - "0x88DB769CEF2FCCC8" 331 - "0xD9168EAEB53A79AE" 332 - "0x2236D" 333 - values: 334 - "0xB84EF9284F6CB8C9" 335 - "0xF190C691BF59CEA9" 336 - "0x5C277C" 337 - values: 338 - "0x5623FBEFCC6F93A4" 339 - "0x4DCB2B69146E0423" 340 - "0xAC47F7D" 341 - values: 342 - "0x1A8002D008BEE412" 343 - "0xB53F89E0791BB8B0" 344 - "0x1A80" 345 - values: 346 - "0x280AAFE41290B234" 347 - "0x96B5D3F3CA021CAD" 348 - "0x14055" 349 - values: 350 - "0x9C944F2F3C334BD3" 351 - "0x45D4EA3A3E054A58" 352 - "0x9C944F2F3C" 353 354 - file-name: "regs" 355 isa: 356 instructions: 357 - sig: shr2.64 v:in:i64 358 acc: inout:i64 359 prefix: bit 360 format: [pref_op_v_8] 361 runner-options: ['compile-only'] 362 code-template: | 363 # 364 shr2.64 %s 365 check-type: none 366 description: Check shr2.64 with various register numbers. 367 cases: 368 - values: 369 - "v255" 370 - values: 371 - "v256" 372 runner-options: ['compile-failure'] 373 374 - file-name: "type" 375 bugid: ["964", "966"] 376 tags: ["verifier"] 377 isa: 378 instructions: 379 - sig: shr2.64 v:in:i64 380 acc: inout:i64 381 prefix: bit 382 format: [pref_op_v_8] 383 verification: 384 - acc_type 385 - v1_type 386 runner-options: ['verifier-failure', 'verifier-debug-config'] 387 code-template: | 388 # 389 %s 390 %s 391 shr2.64 v0 392 ldai.64 0 393 check-type: no-check 394 description: Check shr2.64 with incorrect accumulator and register types. 395 cases: 396 - values: 397 - "lda.null" 398 - "movi.64 v0, 0" 399 - values: 400 - "ldai.64 0 " 401 - "mov.null v0" 402 - values: 403 - "lda.null" 404 - "mov.null v0" 405