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.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: mul2.64 v:in:i64 28 acc: inout:i64 29 format: [op_v_8] 30 code-template: | 31 # 32 ldai.64 0 33 movi.64 v0, %s 34 mul2.64 v0 35 movi.64 v0, 0 36 cmp.64 v0 37 description: Check mul2.64 with zero and various values. 38 cases: 39 - values: 40 - "0" 41 - values: 42 - "1" 43 - values: 44 - "-1" 45 - values: 46 - "0x7FFFFFFFFFFFFFFF" 47 - values: 48 - "0x8000000000000000" 49 - values: 50 - "-0x7FFFFFFFFFFFFFFF" 51 - values: 52 - "-0x8000000000000000" 53 - values: 54 - "0xFFFFFFFFFFFFFFFF" 55 - values: 56 - "-0xFFFFFFFFFFFFFFFF" 57 58 - file-name: "op_vs_8_pone" 59 isa: 60 instructions: 61 - sig: mul2.64 v:in:i64 62 acc: inout:i64 63 format: [op_v_8] 64 code-template: | 65 # 66 ldai.64 1 67 movi.64 v0, %s 68 mul2.64 v0 69 movi.64 v0, %s 70 cmp.64 v0 71 description: Check mul2.64 with +1 and various values. 72 cases: 73 - values: 74 - "0" 75 - "0" 76 - values: 77 - "1" 78 - "1" 79 - values: 80 - "-1" 81 - "-1" 82 - values: 83 - "0x7FFFFFFFFFFFFFFF" 84 - "0x7FFFFFFFFFFFFFFF" 85 - values: 86 - "0x8000000000000000" 87 - "0x8000000000000000" 88 - values: 89 - "-0x7FFFFFFFFFFFFFFF" 90 - "-0x7FFFFFFFFFFFFFFF" 91 - values: 92 - "-0x8000000000000000" 93 - "-0x8000000000000000" 94 - values: 95 - "0xFFFFFFFFFFFFFFFF" 96 - "0xFFFFFFFFFFFFFFFF" 97 - values: 98 - "-0xFFFFFFFFFFFFFFFF" 99 - "-0xFFFFFFFFFFFFFFFF" 100 - file-name: "op_vs_8_none" 101 isa: 102 instructions: 103 - sig: mul2.64 v:in:i64 104 acc: inout:i64 105 format: [op_v_8] 106 code-template: | 107 # 108 ldai.64 -1 109 movi.64 v0, %s 110 mul2.64 v0 111 movi.64 v0, %s 112 cmp.64 v0 113 description: Check mul2.64 with -1 and various values. 114 cases: 115 - values: 116 - "0" 117 - "0" 118 - values: 119 - "1" 120 - "-1" 121 - values: 122 - "-1" 123 - "1" 124 - values: 125 - "0x7FFFFFFFFFFFFFFF" 126 - "-0x7FFFFFFFFFFFFFFF" 127 - values: 128 - "0x8000000000000000" 129 - "0x8000000000000000" 130 tags: ["clang_release_sanitizer"] 131 bugid: ['966'] 132 - values: 133 - "-0x7FFFFFFFFFFFFFFF" 134 - "0x7FFFFFFFFFFFFFFF" 135 - values: 136 - "-0x8000000000000000" 137 - "0x8000000000000000" 138 tags: ["clang_release_sanitizer"] 139 bugid: ['966'] 140 - values: 141 - "0xFFFFFFFFFFFFFFFF" 142 - "1" 143 - values: 144 - "-0xFFFFFFFFFFFFFFFF" 145 - "-1" 146 - file-name: "op_vs_8_pmax" 147 isa: 148 instructions: 149 - sig: mul2.64 v:in:i64 150 acc: inout:i64 151 format: [op_v_8] 152 code-template: | 153 # 154 ldai.64 0x7FFFFFFFFFFFFFFF 155 movi.64 v0, %s 156 mul2.64 v0 157 movi.64 v0, %s 158 cmp.64 v0 159 description: Check mul2.64 with +max and various values. 160 cases: 161 - values: 162 - "0" 163 - "0" 164 - values: 165 - "1" 166 - "0x7FFFFFFFFFFFFFFF" 167 - values: 168 - "-1" 169 - "0x8000000000000001" 170 - values: 171 - "0x7FFFFFFFFFFFFFFF" 172 - "1" 173 tags: ["clang_release_sanitizer"] 174 bugid: ['966'] 175 - values: 176 - "-0x7FFFFFFFFFFFFFFF" 177 - "-1" 178 tags: ["clang_release_sanitizer"] 179 bugid: ['966'] 180 - values: 181 - "0x8000000000000000" 182 - "0x8000000000000000" 183 tags: ["clang_release_sanitizer"] 184 bugid: ['966'] 185 - values: 186 - "-0x8000000000000000" 187 - "0x8000000000000000" 188 tags: ["clang_release_sanitizer"] 189 bugid: ['966'] 190 - values: 191 - "0xFFFFFFFFFFFFFFFF" 192 - "0x8000000000000001" 193 - values: 194 - "-0xFFFFFFFFFFFFFFFF" 195 - "0x7FFFFFFFFFFFFFFF" 196 197 - file-name: "op_vs_8_nmax" 198 isa: 199 instructions: 200 - sig: mul2.64 v:in:i64 201 acc: inout:i64 202 format: [op_v_8] 203 code-template: | 204 # 205 ldai.64 -0x8000000000000000 206 movi.64 v0, %s 207 mul2.64 v0 208 movi.64 v0, %s 209 cmp.64 v0 210 description: Check mul2.64 with -max and various values. 211 cases: 212 - values: 213 - "0" 214 - "0" 215 - values: 216 - "1" 217 - "0x8000000000000000" 218 - values: 219 - "-1" 220 - "0x8000000000000000" 221 tags: ["clang_release_sanitizer"] 222 bugid: ['966'] 223 - values: 224 - "0x7FFFFFFFFFFFFFFF" 225 - "0x8000000000000000" 226 tags: ["clang_release_sanitizer"] 227 bugid: ['966'] 228 - values: 229 - "-0x7FFFFFFFFFFFFFFF" 230 - "0x8000000000000000" 231 tags: ["clang_release_sanitizer"] 232 bugid: ['966'] 233 - values: 234 - "0x8000000000000000" 235 - "0x0" 236 tags: ["clang_release_sanitizer"] 237 bugid: ['966'] 238 - values: 239 - "-0x8000000000000000" 240 - "0x0" 241 tags: ["clang_release_sanitizer"] 242 bugid: ['966'] 243 - values: 244 - "0xFFFFFFFFFFFFFFFF" 245 - "0x8000000000000000" 246 tags: ["clang_release_sanitizer"] 247 bugid: ['966'] 248 - values: 249 - "-0xFFFFFFFFFFFFFFFF" 250 - "0x8000000000000000" 251 252 - file-name: "vals" 253 tags: ['clang_release_sanitizer', 'tsan'] 254 bugid: ['966'] 255 isa: 256 instructions: 257 - sig: mul2.64 v:in:i64 258 acc: inout:i64 259 format: [op_v_8] 260 code-template: | 261 # 262 ldai.64 %s 263 movi.64 v0, %s 264 mul2.64 v0 265 movi.64 v0, %s 266 cmp.64 v0 267 description: Check mul2.64 with various values. 268 cases: 269 - values: 270 - "0x5C754A598000B1C9" 271 - "0x2CA2740976B63739" 272 - "0xC37F6EEFB13FC4C1" 273 - values: 274 - "0xDAB472ECDA737CC" 275 - "0x79F9DF504809677A" 276 - "0xB708275E9F4FAB38" 277 - values: 278 - "0xA31412BCF764575A" 279 - "0x5EC2792725427E87" 280 - "0x610F049E601C5C76" 281 - values: 282 - "0x84421CD84B625393" 283 - "0x40044033EFB99E4E" 284 - "0x8868F4CB49C530CA" 285 - values: 286 - "0xA58F0D0DF420A8B1" 287 - "0xA34242EE859F28E1" 288 - "0xCAC0B5E365FEEB91" 289 - values: 290 - "0x4BBB4B2F1563FC08" 291 - "0x600DA22C70BE6B5F" 292 - "0x884F94424861DEF8" 293 - values: 294 - "0x6342EE9A357EE2E0" 295 - "0x15E083DEF5CF6F86" 296 - "0xB482D0E3D7E9E140" 297 - values: 298 - "0xA573BE2E87C4FC6A" 299 - "0x7591429F66EEAF31" 300 - "0xA9FA05428BCCC64A" 301 - values: 302 - "0xD2C4E8374CF2FF68" 303 - "0xAB2AE1D3AC6A8E1" 304 - "0x211893B1339EBA68" 305 - values: 306 - "0x67AA822AEB637157" 307 - "0xC8E67E7B83C001DB" 308 - "0xC6BE3A0447C34C6D" 309 310 - file-name: "regs" 311 isa: 312 instructions: 313 - sig: mul2.64 v:in:i64 314 acc: inout:i64 315 format: [op_v_8] 316 runner-options: ['compile-only'] 317 code-template: | 318 # 319 mul2.64 %s 320 check-type: none 321 description: Check mul2.64 with various register numbers. 322 cases: 323 - values: 324 - "v255" 325 - values: 326 - "v256" 327 runner-options: ['compile-failure'] 328 329 - file-name: "type" 330 tags: ["verifier"] 331 bugid: ['966', '964'] 332 isa: 333 instructions: 334 - sig: mul2.64 v:in:i64 335 acc: inout:i64 336 format: [op_v_8] 337 verification: 338 - acc_type 339 - v1_type 340 runner-options: ['verifier-failure', 'verifier-debug-config'] 341 code-template: | 342 # 343 %s 344 %s 345 mul2.64 v0 346 ldai.64 0 347 check-type: no-check 348 description: Check mul2.64 with incorrect accumulator ang register type. 349 cases: 350 - values: 351 - "lda.null" 352 - "movi.64 v0, 0" 353 - values: 354 - "ldai.64 0 " 355 - "mov.null v0" 356 - values: 357 - "lda.null" 358 - "mov.null v0" 359