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