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: "ldai" 17 isa: 18 title: Load accumulator from immediate 19 description: > 20 Load immediate into accumulator. For short formats immediate is sign extended to operand size. 21 exceptions: 22 - x_none 23 verification: 24 - none 25 commands: 26 - file-name: "pos" 27 isa: 28 instructions: 29 - sig: ldai imm:i32 30 acc: out:i32 31 format: [op_imm_8, op_imm_16] 32 - sig: ldai imm:i32 33 acc: out:i32 34 format: [op_imm_32] 35 description: Check ldai with various positive values. 36 code-template: | 37 # 38 ldai %s 39 movi v0, %s 40 jne v0, set_failure 41 ldai 0 42 jmp fall_through 43 set_failure: 44 ldai 1 45 fall_through: 46 tags: ['tsan'] 47 cases: 48 - values: 49 - "0" 50 - "0" 51 - values: 52 - "1" 53 - "1" 54 - values: 55 - "255" 56 - "255" 57 - values: 58 - "65535" 59 - "0xFFFF" 60 - values: 61 - "0x12345678" 62 - "0x12345678" 63 - values: 64 - "0xFFFFFFFF" 65 - "-1" 66 - values: 67 - "2147483647" 68 - "2147483647" 69 - values: 70 - "2147483648" 71 - "2147483648" 72 - values: 73 - "0x1234567890ABCDEF" 74 - "0x90ABCDEF" 75 - values: 76 - "4294967295" 77 - "4294967295" 78 - values: 79 - "4294967295" 80 - "-1" 81 - values: 82 - "4294967296" 83 - "4294967296" 84 - values: 85 - "4294967296" 86 - "0" 87 - values: 88 - "0.0" 89 - "0" 90 runner-options: [compile-failure] 91 description: Check ldai with incorrect positive values (f64). 92 - values: 93 - "1.1" 94 - "1" 95 runner-options: [compile-failure] 96 description: Check ldai with incorrect positive values (f64). 97 - file-name: "neg" 98 isa: 99 instructions: 100 - sig: ldai imm:i32 101 acc: out:i32 102 format: [op_imm_8, op_imm_16] 103 code-template: | 104 # 105 ldai %s 106 movi v0, %s 107 jne v0, set_failure 108 ldai 0 109 jmp fall_through 110 set_failure: 111 ldai 1 112 fall_through: 113 description: Check ldai with various negative values. 114 cases: 115 - values: 116 - "-0" 117 - "0" 118 - values: 119 - "-1" 120 - "-1" 121 - values: 122 - "-255" 123 - "-255" 124 - values: 125 - "-65535" 126 - "-0xFFFF" 127 - values: 128 - "-0x12345678" 129 - "-0x12345678" 130 - values: 131 - "-0xFFFFFFFF" 132 - "1" 133 - values: 134 - "-2147483647" 135 - "-2147483647" 136 - values: 137 - "-2147483648" 138 - "-2147483648" 139 - values: 140 - "-2147483649" 141 - "0x7FFFFFFF" 142 - values: 143 - "-2147483648" 144 - "0x80000000" 145 - values: 146 - "-0x1234567890ABCDEF" 147 - "-0x1234567890ABCDEF" 148 149 - values: 150 - "-4294967295" 151 - "-4294967295" 152 - values: 153 - "-4294967296" 154 - "0" 155 - values: 156 - "-0.0" 157 - "0" 158 runner-options: [compile-failure] 159 description: Check ldai with incorrect negative values (f64). 160 - values: 161 - "-1.1" 162 - "-1" 163 runner-options: [compile-failure] 164 description: Check ldai with incorrect negative values (f64). 165 166 - file-name: "vals" 167 isa: 168 instructions: 169 - sig: ldai imm:i32 170 acc: out:i32 171 format: [op_imm_8, op_imm_16] 172 description: Check compiler shrinks value to 32 bit. 173 code-template: | 174 # 175 ldai %s 176 movi v0, %s 177 jne v0, set_failure 178 ldai 0 179 jmp fall_through 180 set_failure: 181 ldai 1 182 fall_through: 183 cases: 184 - values: 185 - "2147483648" 186 - "0xFFFFFFFF80000000" 187 - values: 188 - "0x1234567890ABCDEF" 189 - "0xFFFFFFFF90ABCDEF" 190 - values: 191 - "0xFFFFFFFF" 192 - "0xFFFFFFFFFFFFFFFF" 193 - values: 194 - "-1" 195 - "0xFFFFFFFFFFFFFFFF" 196 - values: 197 - "0xFFFFFFFF7FFFFFFF" 198 - "0x7FFFFFFF" 199 - values: 200 - "0xFFFFFFFF00000000" 201 - "0" 202 - values: 203 - "-0xFFFFFFFF" 204 - "1" 205 - values: 206 - "0x80000000" 207 - "0xFFFFFFFF80000000" 208 - values: 209 - "0x1234567880000000" 210 - "0xFFFFFFFF80000000" 211 - values: 212 - "0x90ABCDEF80000000" 213 - "0xFFFFFFFF80000000" 214 - values: 215 - "-0x1234567890ABCDEF" 216 - "-0xFFFFFFFF90ABCDEF" 217 - values: 218 - "-4294967296" 219 - "0" 220 - values: 221 - "4294967296" 222 - "0" 223