1# Copyright (c) 2021-2022 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: "or2.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: or2.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 or2.64 v0 37 mov.64 v0, v1 38 cmp.64 v0 39 description: Check or2.64 with zero and various values. 40 cases: 41 - values: 42 - "0" 43 - values: 44 - "1" 45 - values: 46 - "-1" 47 - values: 48 - "0x7FFFFFFFFFFFFFFF" 49 - values: 50 - "0x8000000000000000" 51 - values: 52 - "-0x7FFFFFFFFFFFFFFF" 53 - values: 54 - "-0x8000000000000000" 55 - values: 56 - "0xFFFFFFFFFFFFFFFF" 57 - values: 58 - "-0xFFFFFFFFFFFFFFFF" 59 60 - file-name: "op_vs_8_pone" 61 isa: 62 instructions: 63 - sig: or2.64 v:in:i64 64 acc: inout:i64 65 prefix: bit 66 format: [pref_op_v_8] 67 code-template: | 68 # 69 ldai.64 1 70 movi.64 v0, %s 71 or2.64 v0 72 movi.64 v0, %s 73 cmp.64 v0 74 description: Check or2.64 with +1 and various values. 75 cases: 76 - values: 77 - "0" 78 - "1" 79 - values: 80 - "1" 81 - "1" 82 - values: 83 - "-1" 84 - "-1" 85 - values: 86 - "0x7FFFFFFFFFFFFFFF" 87 - "0x7FFFFFFFFFFFFFFF" 88 - values: 89 - "0x8000000000000000" 90 - "0x8000000000000001" 91 - values: 92 - "-0x7FFFFFFFFFFFFFFF" 93 - "-0x7FFFFFFFFFFFFFFF" 94 - values: 95 - "-0x8000000000000000" 96 - "0x8000000000000001" 97 - values: 98 - "0xFFFFFFFFFFFFFFFF" 99 - "0xFFFFFFFFFFFFFFFF" 100 - values: 101 - "-0xFFFFFFFFFFFFFFFF" 102 - "1" 103 - file-name: "op_vs_8_none" 104 isa: 105 instructions: 106 - sig: or2.64 v:in:i64 107 acc: inout:i64 108 prefix: bit 109 format: [pref_op_v_8] 110 code-template: | 111 # 112 ldai.64 -1 113 movi.64 v0, %s 114 or2.64 v0 115 movi.64 v0, -1 116 cmp.64 v0 117 description: Check or2.64 with -1 and various values. 118 cases: 119 - values: 120 - "0" 121 - values: 122 - "1" 123 - values: 124 - "-1" 125 - values: 126 - "0x7FFFFFFFFFFFFFFF" 127 - values: 128 - "0x8000000000000000" 129 - values: 130 - "-0x7FFFFFFFFFFFFFFF" 131 - values: 132 - "-0x8000000000000000" 133 - values: 134 - "0xFFFFFFFFFFFFFFFF" 135 - values: 136 - "-0xFFFFFFFFFFFFFFFF" 137 138 - file-name: "op_vs_8_pmax" 139 isa: 140 instructions: 141 - sig: or2.64 v:in:i64 142 acc: inout:i64 143 prefix: bit 144 format: [pref_op_v_8] 145 code-template: | 146 # 147 ldai.64 0x7FFFFFFFFFFFFFFF 148 movi.64 v0, %s 149 or2.64 v0 150 movi.64 v0, %s 151 cmp.64 v0 152 description: Check or2.64 with +max and various values. 153 cases: 154 - values: 155 - "0" 156 - "0x7FFFFFFFFFFFFFFF" 157 - values: 158 - "1" 159 - "0x7FFFFFFFFFFFFFFF" 160 - values: 161 - "-1" 162 - "0xFFFFFFFFFFFFFFFF" 163 - values: 164 - "0x7FFFFFFFFFFFFFFF" 165 - "0x7FFFFFFFFFFFFFFF" 166 - values: 167 - "0x8000000000000000" 168 - "0xFFFFFFFFFFFFFFFF" 169 - values: 170 - "-0x7FFFFFFFFFFFFFFF" 171 - "0xFFFFFFFFFFFFFFFF" 172 - values: 173 - "-0x8000000000000000" 174 - "0xFFFFFFFFFFFFFFFF" 175 - values: 176 - "0xFFFFFFFFFFFFFFFF" 177 - "0xFFFFFFFFFFFFFFFF" 178 - values: 179 - "-0xFFFFFFFFFFFFFFFF" 180 - "0x7FFFFFFFFFFFFFFF" 181 182 - file-name: "op_vs_8_nmax" 183 isa: 184 instructions: 185 - sig: or2.64 v:in:i64 186 acc: inout:i64 187 prefix: bit 188 format: [pref_op_v_8] 189 code-template: | 190 # 191 ldai.64 -0x8000000000000000 192 movi.64 v0, %s 193 or2.64 v0 194 movi.64 v0, %s 195 cmp.64 v0 196 description: Check or2.64 with -max and various values. 197 cases: 198 - values: 199 - "0" 200 - "0x8000000000000000" 201 - values: 202 - "1" 203 - "0x8000000000000001" 204 - values: 205 - "-1" 206 - "0xFFFFFFFFFFFFFFFF" 207 - values: 208 - "0x7FFFFFFFFFFFFFFF" 209 - "0xFFFFFFFFFFFFFFFF" 210 - values: 211 - "0x8000000000000000" 212 - "0x8000000000000000" 213 - values: 214 - "-0x7FFFFFFFFFFFFFFF" 215 - "0x8000000000000001" 216 - values: 217 - "-0x8000000000000000" 218 - "0x8000000000000000" 219 - values: 220 - "0xFFFFFFFFFFFFFFFF" 221 - "0xFFFFFFFFFFFFFFFF" 222 - values: 223 - "-0xFFFFFFFFFFFFFFFF" 224 - "0x8000000000000001" 225 226 - file-name: "vals" 227 isa: 228 instructions: 229 - sig: or2.64 v:in:i64 230 acc: inout:i64 231 prefix: bit 232 format: [pref_op_v_8] 233 code-template: | 234 # 235 ldai.64 %s 236 movi.64 v0, %s 237 or2.64 v0 238 movi.64 v0, %s 239 cmp.64 v0 240 description: Check or2.64 with various values. 241 tags: ['tsan'] 242 cases: 243 - values: 244 - "0x4419C42BDD63FDBD" 245 - "0xC47F0B12F05DE1E1" 246 - "0xC47FCF3BFD7FFDFD" 247 - values: 248 - "0x943C8CF5378042AF" 249 - "0x36D73CB573479A51" 250 - "0xB6FFBCF577C7DAFF" 251 - values: 252 - "0xDE8314611EA45D76" 253 - "0x6E4839A2AF132D3A" 254 - "0xFECB3DE3BFB77D7E" 255 - values: 256 - "0xCCF0A31AC676C6A2" 257 - "0xF2FD1715A4240809" 258 - "0xFEFDB71FE676CEAB" 259 - values: 260 - "0xD01A79457938FFA8" 261 - "0x185B633A949F5FA7" 262 - "0xD85B7B7FFDBFFFAF" 263 - values: 264 - "0xE9A1C2F2A25E3DBF" 265 - "0xFF45DC655B23F39F" 266 - "0xFFE5DEF7FB7FFFBF" 267 - values: 268 - "0x350F5F7569191790" 269 - "0x71F43744568FD084" 270 - "0x75FF7F757F9FD794" 271 - values: 272 - "0x7087F97DD4E84D3" 273 - "0x4EEFF47D2E9C9436" 274 - "0x4FEFFFFFFFDE94F7" 275 - values: 276 - "0x7D1EF9DBCE053DA" 277 - "0x85C549E42649AD0A" 278 - "0x87D5EFFDBEE9FFDA" 279 - values: 280 - "0xFAAE67467FCB3A51" 281 - "0xD74B54B963E25C19" 282 - "0xFFEF77FF7FEB7E59" 283 284 - file-name: "regs" 285 isa: 286 instructions: 287 - sig: or2.64 v:in:i64 288 acc: inout:i64 289 prefix: bit 290 format: [pref_op_v_8] 291 runner-options: ['compile-only'] 292 code-template: | 293 # 294 or2.64 %s 295 check-type: none 296 description: Check or2.64 with various register numbers. 297 cases: 298 - values: 299 - "v255" 300 - values: 301 - "v256" 302 runner-options: ['compile-failure'] 303 304 - file-name: "type" 305 bugid: ["964", "966"] 306 tags: ["verifier"] 307 isa: 308 verification: 309 - acc_type 310 - v1_type 311 runner-options: ['verifier-failure', 'verifier-config'] 312 header-template: [] 313 code-template: | 314 .record T {} 315 .function i32 main() { 316 %s 317 *s 318 or2.64 v0 319 check-type: exit-positive 320 description: Check 'or2.64' with incorrect accumulator and/or register types. 321 cases: 322 - values: 323 - ldai 0 324 - values: 325 - ldai.64 0 326 id: acc_ok 327 - values: 328 - fldai 0 329 bugid: ['7315'] 330 - values: 331 - fldai.64 0 332 bugid: ['7315'] 333 - values: 334 - lda.null 335 - values: 336 - | 337 # 338 movi v1, 0 339 newarr v1, v1, i32[] 340 lda.obj v1 341 - values: 342 - lda.str "0" 343 - values: 344 - lda.type T 345 - values: 346 - | 347 # 348 newobj v1, T 349 lda.obj v1 350 template-cases: 351 - values: 352 - movi v0, 0 353 - values: 354 - movi.64 v0, 0 355 exclude: [acc_ok] 356 - values: 357 - fmovi v0, 0 358 bugid: ['7315'] 359 - values: 360 - fmovi.64 v0, 0 361 bugid: ['7315'] 362 - values: 363 - mov.null v0 364 - values: 365 - | 366 # 367 movi v0, 0 368 newarr v0, v0, i32[] 369 - values: 370 - | 371 # 372 lda.str "0" 373 sta.obj v0 374 - values: 375 - | 376 # 377 lda.type T 378 sta.obj v0 379 - values: 380 - newobj v0, T 381 382 383 - file-name: uninitialized_regs 384 isa: 385 instructions: 386 - sig: or2.64 v:in:i64 387 acc: inout:i64 388 prefix: bit 389 format: [pref_op_v_8] 390 description: Check 'or2.64' with uninitialized registers. 391 tags: ['verifier'] 392 runner-options: ['verifier-failure', 'verifier-config'] 393 code-template: | 394 # 395 %s 396 *s 397 or2.64 *s 398 check-type: exit-positive 399 template-cases: 400 - values: 401 - '' 402 - values: 403 - ldai.64 0 404 exclude: [init] 405 cases: 406 - values: 407 - '' 408 - v0 409 - values: 410 - movi.64 v1, 0 411 - v1 412 id: init 413 - values: 414 - '' 415 - v8 416 - values: 417 - '' 418 - v15 419 - values: 420 - movi.64 v15, 0 421 - v15 422 id: init 423