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 14--- 15definitions: [] 16tests: 17 - file-name: xori 18 isa: 19 title: Two address binary operation with immediate on accumulator 20 description: > 21 Perform specified binary operation on accumulator and immediate and store result into accumulator. 22 Immediate is sign extended to operand size. 23 exceptions: 24 - x_none 25 commands: 26 - file-name: op_imm_32_zero 27 isa: 28 instructions: 29 - sig: xori imm:i32 30 acc: inout:i32 31 prefix: bit 32 format: [pref_op_imm_32] 33 code-template: | 34 # 35 ldai 0 36 xori %s 37 movi v0, %s 38 jne v0, set_failure 39 ldai 0 40 return 41 set_failure: 42 ldai 1 43 return 44 check-type: none 45 description: Check `xori` with zero and various values. 46 cases: 47 - values: ["0", "0x0"] 48 - values: ["1", "0x1"] 49 - values: ["-1", "0xFFFFFFFF"] 50 - values: ["0x7FFFFFFF", "0x7FFFFFFF"] 51 - values: ["-0x7FFFFFFF", "0x80000001"] 52 - values: ["0x80000000", "0x80000000"] 53 - values: ["-0x80000000", "0x80000000"] 54 - values: ["0xFFFFFFFF", "0xFFFFFFFF"] 55 - values: ["-0xFFFFFFFF", "0x1"] 56 57 58 - file-name: op_imm_32_pone 59 isa: 60 instructions: 61 - sig: xori imm:i32 62 acc: inout:i32 63 prefix: bit 64 format: [pref_op_imm_32] 65 code-template: | 66 # 67 ldai 1 68 xori %s 69 movi v0, %s 70 jne v0, set_failure 71 ldai 0 72 return 73 set_failure: 74 ldai 1 75 return 76 check-type: none 77 description: Check `xori` with +1 and various values. 78 cases: 79 - values: ["0", "0x1"] 80 - values: ["1", "0x0"] 81 - values: ["-1", "0xFFFFFFFE"] 82 - values: ["0x7FFFFFFF", "0x7FFFFFFE"] 83 - values: ["-0x7FFFFFFF", "0x80000000"] 84 - values: ["0x80000000", "0x80000001"] 85 - values: ["-0x80000000", "0x80000001"] 86 - values: ["0xFFFFFFFF", "0xFFFFFFFE"] 87 - values: ["-0xFFFFFFFF", "0x0"] 88 89 90 - file-name: op_imm_32_none 91 isa: 92 instructions: 93 - sig: xori imm:i32 94 acc: inout:i32 95 prefix: bit 96 format: [pref_op_imm_32] 97 code-template: | 98 # 99 ldai -1 100 xori %s 101 movi v0, %s 102 jne v0, set_failure 103 ldai 0 104 return 105 set_failure: 106 ldai 1 107 return 108 check-type: none 109 description: Check `xori` with -1 and various values. 110 cases: 111 - values: ["0", "0xFFFFFFFF"] 112 - values: ["1", "0xFFFFFFFE"] 113 - values: ["-1", "0x0"] 114 - values: ["0x7FFFFFFF", "0x80000000"] 115 - values: ["-0x7FFFFFFF", "0x7FFFFFFE"] 116 - values: ["0x80000000", "0x7FFFFFFF"] 117 - values: ["-0x80000000", "0x7FFFFFFF"] 118 - values: ["0xFFFFFFFF", "0x0"] 119 - values: ["-0xFFFFFFFF", "0xFFFFFFFE"] 120 121 122 - file-name: op_imm_32_pmax 123 isa: 124 instructions: 125 - sig: xori imm:i32 126 acc: inout:i32 127 prefix: bit 128 format: [pref_op_imm_32] 129 code-template: | 130 # 131 ldai 0x7FFFFFFF 132 xori %s 133 movi v0, %s 134 jne v0, set_failure 135 ldai 0 136 return 137 set_failure: 138 ldai 1 139 return 140 check-type: none 141 description: Check `xori` with +max and various values. 142 cases: 143 - values: ["0", "0x7FFFFFFF"] 144 - values: ["1", "0x7FFFFFFE"] 145 - values: ["-1", "0x80000000"] 146 - values: ["0x7FFFFFFF", "0x0"] 147 - values: ["-0x7FFFFFFF", "0xFFFFFFFE"] 148 - values: ["0x80000000", "0xFFFFFFFF"] 149 - values: ["-0x80000000", "0xFFFFFFFF"] 150 - values: ["0xFFFFFFFF", "0x80000000"] 151 - values: ["-0xFFFFFFFF", "0x7FFFFFFE"] 152 153 154 - file-name: op_imm_32_nmax 155 isa: 156 instructions: 157 - sig: xori imm:i32 158 acc: inout:i32 159 prefix: bit 160 format: [pref_op_imm_32] 161 code-template: | 162 # 163 ldai -0x80000000 164 xori %s 165 movi v0, %s 166 jne v0, set_failure 167 ldai 0 168 return 169 set_failure: 170 ldai 1 171 return 172 check-type: none 173 description: Check `xori` with -max and various values. 174 cases: 175 - values: ["0", "0x80000000"] 176 - values: ["1", "0x80000001"] 177 - values: ["-1", "0x7FFFFFFF"] 178 - values: ["0x7FFFFFFF", "0xFFFFFFFF"] 179 - values: ["-0x7FFFFFFF", "0x1"] 180 - values: ["0x80000000", "0x0"] 181 - values: ["-0x80000000", "0x0"] 182 - values: ["0xFFFFFFFF", "0x7FFFFFFF"] 183 - values: ["-0xFFFFFFFF", "0x80000001"] 184 185 186 - file-name: vals 187 isa: 188 instructions: 189 - sig: xori imm:i32 190 acc: inout:i32 191 prefix: bit 192 format: [pref_op_imm_32] 193 code-template: | 194 # 195 ldai %s 196 xori %s 197 movi v0, %s 198 jne v0, set_failure 199 ldai 0 200 return 201 set_failure: 202 ldai 1 203 return 204 check-type: none 205 description: Check `xori` with various values. 206 tags: ['tsan'] 207 cases: 208 - values: ["0x486552BC", "0x6A1DAC75", "0x2278FEC9"] 209 - values: ["0x8AEB78EB", "0x5194C0BA", "0xDB7FB851"] 210 - values: ["0x5C2C67E7", "0x34CC1971", "0x68E07E96"] 211 - values: ["0x200ABCFA", "0x99E374A8", "0xB9E9C852"] 212 - values: ["0x89ED94D5", "0xE02D5731", "0x69C0C3E4"] 213 - values: ["0xCE2BBD72", "0xF6DE6676", "0x38F5DB04"] 214 - values: ["0xB9A3E964", "0xD3A8C9C3", "0x6A0B20A7"] 215 - values: ["0xE361D3E8", "0xDA6BA9E9", "0x390A7A01"] 216 - values: ["0xE4F1D3AF", "0x29DA35D8", "0xCD2BE677"] 217 - values: ["0xFBFF6F51", "0xBE511BDB", "0x45AE748A"] 218 219 220 - file-name: type 221 isa: 222 verification: 223 - acc_type 224 tags: ['verifier'] 225 runner-options: ['verifier-failure', 'verifier-config'] 226 header-template: [] 227 code-template: | 228 # 229 .record panda.Object <external> 230 .function i32 main() { 231 %s 232 xori 0 233 check-type: exit-positive 234 description: Check 'xori' with incorrect acc type. 235 cases: 236 - values: [ldai.64 0] 237 - values: [fldai 0] 238 bugid: ['7315'] 239 - values: [fldai.64 0] 240 - values: [lda.null] 241 - values: [lda.type panda.Object] 242 - values: ['lda.type i32[]'] 243 - values: [lda.str ""] 244 - values: 245 - | 246 # 247 newobj v0, panda.Object 248 lda.obj v0 249 - values: 250 - | 251 # 252 movi v0, 10 253 newarr v0, v0, i32[] 254 lda.obj v0 255 256 257 - file-name: uninitialized_acc 258 isa: 259 instructions: 260 - sig: xori imm:i32 261 acc: inout:i32 262 prefix: bit 263 format: [pref_op_imm_32] 264 description: Check 'xori' with uninitialized accumulator. 265 tags: ['verifier'] 266 runner-options: ['verifier-failure', 'verifier-config'] 267 code-template: | 268 # 269 xori 0 270 check-type: exit-positive 271