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