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