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: ori 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: ori imm:i32 30 acc: inout:i32 31 format: [op_imm_32] 32 code-template: | 33 # 34 ldai 0 35 ori %s 36 movi v0, %s 37 jne v0, set_failure 38 ldai 0 39 return 40 set_failure: 41 ldai 1 42 return 43 check-type: none 44 description: Check `ori` with zero and various values. 45 cases: 46 - values: ["0", "0x0"] 47 - values: ["1", "0x1"] 48 - values: ["-1", "0xFFFFFFFF"] 49 - values: ["0x7FFFFFFF", "0x7FFFFFFF"] 50 - values: ["-0x7FFFFFFF", "0x80000001"] 51 - values: ["0x80000000", "0x80000000"] 52 - values: ["-0x80000000", "0x80000000"] 53 - values: ["0xFFFFFFFF", "0xFFFFFFFF"] 54 - values: ["-0xFFFFFFFF", "0x1"] 55 56 57 - file-name: op_imm_32_pone 58 isa: 59 instructions: 60 - sig: ori imm:i32 61 acc: inout:i32 62 format: [op_imm_32] 63 code-template: | 64 # 65 ldai 1 66 ori %s 67 movi v0, %s 68 jne v0, set_failure 69 ldai 0 70 return 71 set_failure: 72 ldai 1 73 return 74 check-type: none 75 description: Check `ori` with +1 and various values. 76 cases: 77 - values: ["0", "0x1"] 78 - values: ["1", "0x1"] 79 - values: ["-1", "0xFFFFFFFF"] 80 - values: ["0x7FFFFFFF", "0x7FFFFFFF"] 81 - values: ["-0x7FFFFFFF", "0x80000001"] 82 - values: ["0x80000000", "0x80000001"] 83 - values: ["-0x80000000", "0x80000001"] 84 - values: ["0xFFFFFFFF", "0xFFFFFFFF"] 85 - values: ["-0xFFFFFFFF", "0x1"] 86 87 88 - file-name: op_imm_32_none 89 isa: 90 instructions: 91 - sig: ori imm:i32 92 acc: inout:i32 93 format: [op_imm_32] 94 code-template: | 95 # 96 ldai -1 97 ori %s 98 movi v0, -1 99 jne v0, set_failure 100 ldai 0 101 return 102 set_failure: 103 ldai 1 104 return 105 check-type: none 106 description: Check `ori` with -1 and various values. 107 cases: 108 - values: ["0"] 109 - values: ["1"] 110 - values: ["-1"] 111 - values: ["0x7FFFFFFF"] 112 - values: ["-0x7FFFFFFF"] 113 - values: ["0x80000000"] 114 - values: ["-0x80000000"] 115 - values: ["0xFFFFFFFF"] 116 - values: ["-0xFFFFFFFF"] 117 118 119 - file-name: op_imm_32_pmax 120 isa: 121 instructions: 122 - sig: ori imm:i32 123 acc: inout:i32 124 format: [op_imm_32] 125 code-template: | 126 # 127 ldai 0x7FFFFFFF 128 ori %s 129 movi v0, %s 130 jne v0, set_failure 131 ldai 0 132 return 133 set_failure: 134 ldai 1 135 return 136 check-type: none 137 description: Check `ori` with +max and various values. 138 cases: 139 - values: ["0", "0x7FFFFFFF"] 140 - values: ["1", "0x7FFFFFFF"] 141 - values: ["-1", "0xFFFFFFFF"] 142 - values: ["0x7FFFFFFF", "0x7FFFFFFF"] 143 - values: ["-0x7FFFFFFF", "0xFFFFFFFF"] 144 - values: ["0x80000000", "0xFFFFFFFF"] 145 - values: ["-0x80000000", "0xFFFFFFFF"] 146 - values: ["0xFFFFFFFF", "0xFFFFFFFF"] 147 - values: ["-0xFFFFFFFF", "0x7FFFFFFF"] 148 149 150 - file-name: op_imm_32_nmax 151 isa: 152 instructions: 153 - sig: ori imm:i32 154 acc: inout:i32 155 format: [op_imm_32] 156 code-template: | 157 # 158 ldai -0x80000000 159 ori %s 160 movi v0, %s 161 jne v0, set_failure 162 ldai 0 163 return 164 set_failure: 165 ldai 1 166 return 167 check-type: none 168 description: Check `ori` with -max and various values. 169 cases: 170 - values: ["0", "0x80000000"] 171 - values: ["1", "0x80000001"] 172 - values: ["-1", "0xFFFFFFFF"] 173 - values: ["0x7FFFFFFF", "0xFFFFFFFF"] 174 - values: ["-0x7FFFFFFF", "0x80000001"] 175 - values: ["0x80000000", "0x80000000"] 176 - values: ["-0x80000000", "0x80000000"] 177 - values: ["0xFFFFFFFF", "0xFFFFFFFF"] 178 - values: ["-0xFFFFFFFF", "0x80000001"] 179 180 181 - file-name: vals 182 isa: 183 instructions: 184 - sig: ori imm:i32 185 acc: inout:i32 186 format: [op_imm_32] 187 code-template: | 188 # 189 ldai %s 190 ori %s 191 movi v0, %s 192 jne v0, set_failure 193 ldai 0 194 return 195 set_failure: 196 ldai 1 197 return 198 check-type: none 199 description: Check `ori` with various values. 200 tags: ['tsan'] 201 cases: 202 - values: ["0xE7426488", "0xA3A2CB1F", "0xE7E2EF9F"] 203 - values: ["0xF235ACDF", "0xDD44A81B", "0xFF75ACDF"] 204 - values: ["0xFF796099", "0x7006C56B", "0xFF7FE5FB"] 205 - values: ["0x738C405A", "0x82B24107", "0xF3BE415F"] 206 - values: ["0xE512952D", "0xAB113E7D", "0xEF13BF7D"] 207 - values: ["0x4A671C86", "0x6E7FA591", "0x6E7FBD97"] 208 - values: ["0xB6FF321D", "0x887DDE6B", "0xBEFFFE7F"] 209 - values: ["0x7087DE68", "0xCA657C6B", "0xFAE7FE6B"] 210 - values: ["0xDAE0024B", "0x710D16E", "0xDFF0D36F"] 211 - values: ["0xA7D559B3", "0x9216E6E5", "0xB7D7FFF7"] 212 213 214 - file-name: type 215 isa: 216 verification: 217 - acc_type 218 tags: ['verifier'] 219 runner-options: ['verifier-failure', 'verifier-config'] 220 header-template: [] 221 code-template: | 222 # 223 .record panda.Object <external> 224 .function i32 main() { 225 %s 226 ori 0 227 check-type: exit-positive 228 description: Check 'ori' with incorrect acc type. 229 cases: 230 - values: [ldai.64 0] 231 - values: [fldai 0] 232 bugid: ['7315'] 233 - values: [fldai.64 0] 234 - values: [lda.null] 235 - values: [lda.type panda.Object] 236 - values: ['lda.type i32[]'] 237 - values: [lda.str ""] 238 - values: 239 - | 240 # 241 newobj v0, panda.Object 242 lda.obj v0 243 - values: 244 - | 245 # 246 movi v0, 10 247 newarr v0, v0, i32[] 248 lda.obj v0 249 250 251 - file-name: uninitialized_acc 252 isa: 253 instructions: 254 - sig: ori imm:i32 255 acc: inout:i32 256 format: [op_imm_32] 257 description: Check 'ori' with uninitialized accumulator. 258 tags: ['verifier'] 259 runner-options: ['verifier-failure', 'verifier-config'] 260 code-template: | 261 # 262 ori 0 263 check-type: exit-positive 264