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: "neg.64" 17 isa: 18 title: Unary 19 description: > 20 Perform specified operation on accumulator 21 exceptions: 22 - x_none 23 24 commands: 25 - file-name: "op_none" 26 isa: 27 instructions: 28 - sig: neg.64 29 acc: inout:i64 30 format: [op_none] 31 code-template: | 32 # 33 ldai.64 %s 34 neg.64 35 movi.64 v0, %s 36 cmp.64 v0 37 description: Check `neg.64` with various values. 38 tags: ['tsan', 'clang_release_sanitizer'] 39 cases: 40 - values: ["0", "0x0"] 41 - values: ["1", "0xFFFFFFFFFFFFFFFF"] 42 - values: ["0xF", "0xFFFFFFFFFFFFFFF1"] 43 - values: ["0xFF", "0xFFFFFFFFFFFFFF01"] 44 - values: ["0xFFF", "0xFFFFFFFFFFFFF001"] 45 - values: ["0xFFFF", "0xFFFFFFFFFFFF0001"] 46 - values: ["0xFFFFF", "0xFFFFFFFFFFF00001"] 47 - values: ["0xFFFFFF", "0xFFFFFFFFFF000001"] 48 - values: ["0xFFFFFFF", "0xFFFFFFFFF0000001"] 49 - values: ["0xFFFFFFFF", "0xFFFFFFFF00000001"] 50 - values: ["0xFFFFFFFFF", "0xFFFFFFF000000001"] 51 - values: ["0xFFFFFFFFFF", "0xFFFFFF0000000001"] 52 - values: ["0xFFFFFFFFFFF", "0xFFFFF00000000001"] 53 - values: ["0xFFFFFFFFFFFF", "0xFFFF000000000001"] 54 - values: ["0xFFFFFFFFFFFFF", "0xFFF0000000000001"] 55 - values: ["0xFFFFFFFFFFFFFF", "0xFF00000000000001"] 56 - values: ["0xFFFFFFFFFFFFFFF", "0xF000000000000001"] 57 - values: ["0xFFFFFFFFFFFFFFFF", "0x1"] 58 - values: ["0x8000000000000000", "0x8000000000000000"] 59 - values: ["0x7FFFFFFFFFFFFFFF", "0x8000000000000001"] 60 - values: ["-0x7FFFFFFFFFFFFFFF", "0x7FFFFFFFFFFFFFFF"] 61 62 - file-name: "vals" 63 isa: 64 instructions: 65 - sig: neg.64 66 acc: inout:i64 67 format: [op_none] 68 code-template: | 69 # 70 ldai.64 %s 71 neg.64 72 movi.64 v0, %s 73 cmp.64 v0 74 description: Check `neg.64` with various values. 75 cases: 76 - values: ["0xA0A667118E49E5ED", "0x5F5998EE71B61A13"] 77 - values: ["0xD9C348FFDAD250BC", "0x263CB700252DAF44"] 78 - values: ["0xCC9A2D1C0FF85B1E", "0x3365D2E3F007A4E2"] 79 - values: ["0xD02122DF5FB2456D", "0x2FDEDD20A04DBA93"] 80 - values: ["0x5ABD58FAF0BE5ABD", "0xA542A7050F41A543"] 81 - values: ["0x6ABBE5E3CCFB6422", "0x95441A1C33049BDE"] 82 - values: ["0xDAE4BFB7C0BCAF0D", "0x251B40483F4350F3"] 83 - values: ["0x8B8EDF2D3CE1F37D", "0x747120D2C31E0C83"] 84 - values: ["0x55093AE5F02E0E03", "0xAAF6C51A0FD1F1FD"] 85 - values: ["0x33E30F2EB121E7A", "0xFCC1CF0D14EDE186"] 86 - values: ["0xC22BDBC17C25BB5C", "0x3DD4243E83DA44A4"] 87 - values: ["0x79B490F098C75FA6", "0x864B6F0F6738A05A"] 88 - values: ["0x6D11CFA9196A19D5", "0x92EE3056E695E62B"] 89 - values: ["0xBFA95B99EC1D2054", "0x4056A46613E2DFAC"] 90 - values: ["0xFA65DBDFC3ECBB8B", "0x59A24203C134475"] 91 - values: ["0x53F5EDC89AFE89C6", "0xAC0A12376501763A"] 92 - values: ["0x80231663CE443B2", "0xF7FDCE99C31BBC4E"] 93 - values: ["0x4E5AD26973851CEF", "0xB1A52D968C7AE311"] 94 - values: ["0xF619BEB33CC16E24", "0x9E6414CC33E91DC"] 95 - values: ["0x8514D176A0789D2B", "0x7AEB2E895F8762D5"] 96 97 - file-name: type 98 bugid: ["964", "966", "2090"] 99 tags: ["verifier"] 100 isa: 101 instructions: 102 - sig: neg.64 103 acc: inout:i64 104 format: [op_none] 105 verification: 106 - acc_type 107 runner-options: ['verifier-failure', 'verifier-debug-config'] 108 header-template: [] 109 code-template: | 110 .record T {} 111 .record panda.String <external> 112 .record panda.Object <external> 113 # 114 .function i32 main() { 115 %s 116 neg.64 117 check-type: exit-positive 118 description: Check `neg.64` with incorrect accumulator type. 119 cases: 120 - values: 121 - ldai 1 122 - values: 123 - fldai.64 1.0 124 - values: 125 - lda.type T 126 - values: 127 - lda.type T[] 128 - values: 129 - lda.type panda.Object 130 - values: 131 - lda.type panda.String 132 - values: 133 - lda.str "x" 134 - values: 135 - | 136 newobj v0, T 137 lda.obj v0 138 - values: 139 - lda.null 140 - values: 141 - | 142 # 143 movi v0, 10 144 newarr v0, v0, i32[] 145 lda.obj v0 146 147 - file-name: uninitialized_regs 148 bugid: ["2787"] 149 tags: ["verifier"] 150 isa: 151 instructions: 152 - sig: neg.64 153 acc: inout:i64 154 format: [op_none] 155 description: Check neg.64 with uninitialized accumulator. 156 runner-options: ['verifier-failure', 'verifier-debug-config'] 157 header-template: [] 158 code-template: | 159 # 160 .function i32 main() { 161 # acc is undefined 162 neg.64 163 check-type: exit-positive 164