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" 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 29 acc: inout:i32 30 format: [op_none] 31 code-template: | 32 # 33 ldai %s 34 neg 35 movi v0, %s 36 jne v0, set_failure 37 ldai 0 38 jmp fall_through 39 set_failure: 40 ldai 1 41 fall_through: 42 description: Check `neg` with various values. 43 tags: ['tsan', 'clang_release_sanitizer'] 44 cases: 45 - values: ["0", "0x0"] 46 - values: ["1", "0xFFFFFFFF"] 47 - values: ["-1", "0x1"] 48 - values: ["0xF", "0xFFFFFFF1"] 49 - values: ["-0xF", "0xF"] 50 - values: ["0x7F", "0xFFFFFF81"] 51 - values: ["-0x7F", "0x7F"] 52 - values: ["0x80", "0xFFFFFF80"] 53 - values: ["-0x80", "0x80"] 54 - values: ["0xFF", "0xFFFFFF01"] 55 - values: ["-0xFF", "0xFF"] 56 - values: ["0xFFF", "0xFFFFF001"] 57 - values: ["-0xFFF", "0xFFF"] 58 - values: ["0xFFFF", "0xFFFF0001"] 59 - values: ["-0xFFFF", "0xFFFF"] 60 - values: ["0xFFFFF", "0xFFF00001"] 61 - values: ["-0xFFFFF", "0xFFFFF"] 62 - values: ["0xFFFFFF", "0xFF000001"] 63 - values: ["-0xFFFFFF", "0xFFFFFF"] 64 - values: ["0xFFFFFFF", "0xF0000001"] 65 - values: ["-0xFFFFFFF", "0xFFFFFFF"] 66 - values: ["0x7FFFFFFF", "0x80000001"] 67 - values: ["-0x7FFFFFFF", "0x7FFFFFFF"] 68 - values: ["0x80000000", "0x80000000"] 69 - values: ["-0x80000000", "0x80000000"] 70 - values: ["0xFFFFFFFF", "0x1"] 71 - values: ["-0xFFFFFFFF", "0xFFFFFFFF"] 72 73 - file-name: "vals" 74 isa: 75 instructions: 76 - sig: neg 77 acc: inout:i32 78 format: [op_none] 79 code-template: | 80 # 81 ldai %s 82 neg 83 movi v0, %s 84 jne v0, set_failure 85 ldai 0 86 jmp fall_through 87 set_failure: 88 ldai 1 89 fall_through: 90 description: Check `neg` with various values. 91 cases: 92 - values: ["0x2FEAEDB4", "0xD015124C"] 93 - values: ["0x9C6C30BF", "0x6393CF41"] 94 - values: ["0x1BF216CF", "0xE40DE931"] 95 - values: ["0xDF9CD1F7", "0x20632E09"] 96 - values: ["0xF40F9EF9", "0xBF06107"] 97 - values: ["0x7941CA86", "0x86BE357A"] 98 - values: ["0x50E20B50", "0xAF1DF4B0"] 99 - values: ["0xA6098C4", "0xF59F673C"] 100 - values: ["0x74FBE6DD", "0x8B041923"] 101 - values: ["0x337D0DA3", "0xCC82F25D"] 102 - values: ["0xF7E0915C", "0x81F6EA4"] 103 - values: ["0x4513D47D", "0xBAEC2B83"] 104 - values: ["0xC77ECE9", "0xF3881317"] 105 - values: ["0xFF812549", "0x7EDAB7"] 106 - values: ["0x19715C4F", "0xE68EA3B1"] 107 - values: ["0x8A8CB359", "0x75734CA7"] 108 - values: ["0x5C6E79E0", "0xA3918620"] 109 - values: ["0xC1D11086", "0x3E2EEF7A"] 110 - values: ["0x834E4631", "0x7CB1B9CF"] 111 - values: ["0x2F5F3BC2", "0xD0A0C43E"] 112 113 - file-name: type 114 bugid: ["964", "966"] 115 tags: ["verifier"] 116 isa: 117 instructions: 118 - sig: neg 119 acc: inout:i32 120 format: [op_none] 121 verification: 122 - acc_type 123 runner-options: ['verifier-failure', 'verifier-debug-config'] 124 header-template: [] 125 code-template: | 126 .record T {} 127 .record panda.String <external> 128 .record panda.Object <external> 129 # 130 .function i32 main() { 131 %s 132 neg 133 check-type: exit-positive 134 description: Check `neg` with incorrect accumulator type. 135 cases: 136 - values: 137 - ldai.64 1 138 - values: 139 - fldai.64 1.0 140 - values: 141 - lda.type T 142 - values: 143 - lda.type T[] 144 - values: 145 - lda.type panda.Object 146 - values: 147 - lda.type panda.String 148 - values: 149 - lda.str "x" 150 - values: 151 - | 152 newobj v0, T 153 lda.obj v0 154 - values: 155 - lda.null 156 - values: 157 - | 158 # 159 movi v0, 10 160 newarr v0, v0, i32[] 161 lda.obj v0 162 163 - file-name: uninitialized_regs 164 bugid: ["2787"] 165 tags: ["verifier"] 166 isa: 167 instructions: 168 - sig: neg 169 acc: inout:i32 170 format: [op_none] 171 description: Check neg with uninitialized accumulator. 172 runner-options: ['verifier-failure', 'verifier-debug-config'] 173 header-template: [] 174 code-template: | 175 # 176 .function i32 main() { 177 # acc is undefined 178 neg 179 check-type: exit-positive 180