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