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: "xor2.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: xor2.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 xor2.64 v0 37 mov.64 v0, v1 38 cmp.64 v0 39 description: Check xor2.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: xor2.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 xor2.64 v0 72 movi.64 v0, %s 73 cmp.64 v0 74 description: Check xor2.64 with +1 and various values. 75 cases: 76 - values: 77 - "0" 78 - "1" 79 - values: 80 - "1" 81 - "0" 82 - values: 83 - "-1" 84 - "-2" 85 - values: 86 - "0x7FFFFFFFFFFFFFFF" 87 - "0x7FFFFFFFFFFFFFFE" 88 - values: 89 - "0x8000000000000000" 90 - "0x8000000000000001" 91 - values: 92 - "-0x7FFFFFFFFFFFFFFF" 93 - "0x8000000000000000" 94 - values: 95 - "-0x8000000000000000" 96 - "0x8000000000000001" 97 - values: 98 - "0xFFFFFFFFFFFFFFFF" 99 - "0xFFFFFFFFFFFFFFFE" 100 - values: 101 - "-0xFFFFFFFFFFFFFFFF" 102 - "0" 103 - file-name: "op_vs_8_none" 104 isa: 105 instructions: 106 - sig: xor2.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 xor2.64 v0 115 movi.64 v0, %s 116 cmp.64 v0 117 description: Check xor2.64 with -1 and various values. 118 cases: 119 - values: 120 - "0" 121 - "0xFFFFFFFFFFFFFFFF" 122 - values: 123 - "1" 124 - "0xFFFFFFFFFFFFFFFE" 125 - values: 126 - "-1" 127 - "0" 128 - values: 129 - "0x7FFFFFFFFFFFFFFF" 130 - "0x8000000000000000" 131 - values: 132 - "0x8000000000000000" 133 - "0x7FFFFFFFFFFFFFFF" 134 - values: 135 - "-0x7FFFFFFFFFFFFFFF" 136 - "0x7FFFFFFFFFFFFFFE" 137 - values: 138 - "-0x8000000000000000" 139 - "0x7FFFFFFFFFFFFFFF" 140 - values: 141 - "0xFFFFFFFFFFFFFFFF" 142 - "0" 143 - values: 144 - "-0xFFFFFFFFFFFFFFFF" 145 - "0xFFFFFFFFFFFFFFFE" 146 147 - file-name: "op_vs_8_pmax" 148 isa: 149 instructions: 150 - sig: xor2.64 v:in:i64 151 acc: inout:i64 152 prefix: bit 153 format: [pref_op_v_8] 154 code-template: | 155 # 156 ldai.64 0x7FFFFFFFFFFFFFFF 157 movi.64 v0, %s 158 xor2.64 v0 159 movi.64 v0, %s 160 cmp.64 v0 161 description: Check xor2.64 with +max and various values. 162 cases: 163 - values: 164 - "0" 165 - "0x7FFFFFFFFFFFFFFF" 166 - values: 167 - "1" 168 - "0x7FFFFFFFFFFFFFFE" 169 - values: 170 - "-1" 171 - "0x8000000000000000" 172 - values: 173 - "0x7FFFFFFFFFFFFFFF" 174 - "0" 175 - values: 176 - "0x8000000000000000" 177 - "0xFFFFFFFFFFFFFFFF" 178 - values: 179 - "-0x7FFFFFFFFFFFFFFF" 180 - "0xFFFFFFFFFFFFFFFE" 181 - values: 182 - "-0x8000000000000000" 183 - "0xFFFFFFFFFFFFFFFF" 184 - values: 185 - "0xFFFFFFFFFFFFFFFF" 186 - "0x8000000000000000" 187 - values: 188 - "-0xFFFFFFFFFFFFFFFF" 189 - "0x7FFFFFFFFFFFFFFE" 190 191 - file-name: "op_vs_8_nmax" 192 isa: 193 instructions: 194 - sig: xor2.64 v:in:i64 195 acc: inout:i64 196 prefix: bit 197 format: [pref_op_v_8] 198 code-template: | 199 # 200 ldai.64 -0x8000000000000000 201 movi.64 v0, %s 202 xor2.64 v0 203 movi.64 v0, %s 204 cmp.64 v0 205 description: Check xor2.64 with -max and various values. 206 cases: 207 - values: 208 - "0" 209 - "0x8000000000000000" 210 - values: 211 - "1" 212 - "0x8000000000000001" 213 - values: 214 - "-1" 215 - "0x7FFFFFFFFFFFFFFF" 216 - values: 217 - "0x7FFFFFFFFFFFFFFF" 218 - "0xFFFFFFFFFFFFFFFF" 219 - values: 220 - "0x8000000000000000" 221 - "0" 222 - values: 223 - "-0x7FFFFFFFFFFFFFFF" 224 - "1" 225 - values: 226 - "-0x8000000000000000" 227 - "0" 228 - values: 229 - "0xFFFFFFFFFFFFFFFF" 230 - "0x7FFFFFFFFFFFFFFF" 231 - values: 232 - "-0xFFFFFFFFFFFFFFFF" 233 - "0x8000000000000001" 234 235 - file-name: "vals" 236 isa: 237 instructions: 238 - sig: xor2.64 v:in:i64 239 acc: inout:i64 240 prefix: bit 241 format: [pref_op_v_8] 242 code-template: | 243 # 244 ldai.64 %s 245 movi.64 v0, %s 246 xor2.64 v0 247 movi.64 v0, %s 248 cmp.64 v0 249 description: Check xor2.64 with various values. 250 tags: ['tsan'] 251 cases: 252 - values: 253 - "0x890DF3616155A02B" 254 - "0x4C0D923B34DBE96A" 255 - "0xC500615A558E4941" 256 - values: 257 - "0xA29939020BB9A059" 258 - "0xF61FB8F1E80F8EE8" 259 - "0x548681F3E3B62EB1" 260 - values: 261 - "0xD4361E836F3300A" 262 - "0xC24FD1D8D92407DC" 263 - "0xCF0CB030EFD737D6" 264 - values: 265 - "0x3F5B728F2D655D07" 266 - "0x6F704452D1531FEF" 267 - "0x502B36DDFC3642E8" 268 - values: 269 - "0xF65CA4461CEAB7AC" 270 - "0x61AD179F8BB9A95A" 271 - "0x97F1B3D997531EF6" 272 - values: 273 - "0xF22D5E456CF272C6" 274 - "0x96C58D3D88105ADB" 275 - "0x64E8D378E4E2281D" 276 - values: 277 - "0x13A09CB58EA0D202" 278 - "0xA42129CCAEB1B12" 279 - "0x19E28E29444BC910" 280 - values: 281 - "0x8D1549075512985B" 282 - "0xE307DDBE79DCA6FC" 283 - "0x6E1294B92CCE3EA7" 284 - values: 285 - "0x314D058D96CDA52F" 286 - "0x81B64F5B737E5415" 287 - "0xB0FB4AD6E5B3F13A" 288 - values: 289 - "0x2395A0EAF5658856" 290 - "0xAC18E1DA22E4F6C" 291 - "0x29542EF7574BC73A" 292 293 - file-name: "regs" 294 isa: 295 instructions: 296 - sig: xor2.64 v:in:i64 297 acc: inout:i64 298 prefix: bit 299 format: [pref_op_v_8] 300 runner-options: ['compile-only'] 301 code-template: | 302 # 303 xor2.64 %s 304 check-type: none 305 description: Check xor2.64 with various register numbers. 306 cases: 307 - values: 308 - "v255" 309 - values: 310 - "v256" 311 runner-options: ['compile-failure'] 312 313 - file-name: "type" 314 bugid: ["964", "966"] 315 tags: ["verifier"] 316 isa: 317 verification: 318 - acc_type 319 - v1_type 320 runner-options: ['verifier-failure', 'verifier-config'] 321 header-template: [] 322 code-template: | 323 .record T {} 324 .function i32 main() { 325 %s 326 *s 327 xor2.64 v0 328 check-type: exit-positive 329 description: Check 'xor2.64' with incorrect accumulator and/or register types. 330 cases: 331 - values: 332 - ldai 0 333 - values: 334 - ldai.64 0 335 id: acc_ok 336 - values: 337 - fldai 0 338 bugid: ['7315'] 339 - values: 340 - fldai.64 0 341 bugid: ['7315'] 342 - values: 343 - lda.null 344 - values: 345 - | 346 # 347 movi v1, 0 348 newarr v1, v1, i32[] 349 lda.obj v1 350 - values: 351 - lda.str "0" 352 - values: 353 - lda.type T 354 - values: 355 - | 356 # 357 newobj v1, T 358 lda.obj v1 359 template-cases: 360 - values: 361 - movi v0, 0 362 - values: 363 - movi.64 v0, 0 364 exclude: [acc_ok] 365 - values: 366 - fmovi v0, 0 367 bugid: ['7315'] 368 - values: 369 - fmovi.64 v0, 0 370 bugid: ['7315'] 371 - values: 372 - mov.null v0 373 - values: 374 - | 375 # 376 movi v0, 0 377 newarr v0, v0, i32[] 378 - values: 379 - | 380 # 381 lda.str "0" 382 sta.obj v0 383 - values: 384 - | 385 # 386 lda.type T 387 sta.obj v0 388 - values: 389 - newobj v0, T 390 391 392 - file-name: uninitialized_regs 393 isa: 394 instructions: 395 - sig: xor2.64 v:in:i64 396 acc: inout:i64 397 prefix: bit 398 format: [pref_op_v_8] 399 description: Check 'xor2.64' with uninitialized registers. 400 tags: ['verifier'] 401 runner-options: ['verifier-failure', 'verifier-config'] 402 code-template: | 403 # 404 %s 405 *s 406 xor2.64 *s 407 check-type: exit-positive 408 template-cases: 409 - values: 410 - '' 411 - values: 412 - ldai.64 0 413 exclude: [init] 414 cases: 415 - values: 416 - '' 417 - v0 418 - values: 419 - movi.64 v1, 0 420 - v1 421 id: init 422 - values: 423 - '' 424 - v8 425 - values: 426 - '' 427 - v15 428 - values: 429 - movi.64 v15, 0 430 - v15 431 id: init 432