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: "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 instructions: 318 - sig: xor2.64 v:in:i64 319 acc: inout:i64 320 prefix: bit 321 format: [pref_op_v_8] 322 verification: 323 - acc_type 324 - v1_type 325 runner-options: ['verifier-failure', 'verifier-debug-config'] 326 code-template: | 327 # 328 %s 329 %s 330 xor2.64 v0 331 ldai.64 0 332 check-type: no-check 333 description: Check xor2.64 with incorrect accumulator and register types. 334 cases: 335 - values: 336 - "lda.null" 337 - "movi.64 v0, 0" 338 - values: 339 - "ldai.64 0 " 340 - "mov.null v0" 341 - values: 342 - "lda.null" 343 - "mov.null v0" 344